# CS 3520 Homework 11   - Due December 4

### Exercise 11.1, Continuations

The following are possible states of the interepreter with continuations. In each case, what will the final value of the program be?
1. exp: 3
env: {}
cnt: [primother -, 2, {}, [done]]

2. exp: x
env: {x=7, {x=3, {}}}
cnt: [primother +, x, {x=3, {}}, [done]]

3. val: 10
cnt: [app <x, proc(y)*(y, 2), {}>, [apparg 11, {}, [done]]]

4. val: <x, proc(y)-(x, y), {x=3, {}}>
cnt: [apparg 7, {x=3, {}}, [apparg x, {x=3, {}}, [done]]]

5. val: <w, if w then (f proc(x)0) else w, {f=<g, *((g 3), 2), {}>, {}}>
cnt: [app <g, *((g 3), 2), {}>, [done]]
Express your answer as a function answer-for-11.1 that takes no arguments and returns a list of 5 numbers.

### Exercise 11.2, Garbage collection

Suppose a garbage-collected interepreter uses the following four kinds of records:
• Tag 1: a record containing one integer and one pointer
• Tag 2: a record containing two pointers
• Tag 3: a record containing three integers
• Tag 4: a record containing one pointer
(An "integer" is an immediate integer, not a tagged integer representing a value in the interpreted language.)

The interpreter has two registers, which always contain pointers, and a memory pool of size 30. The allocator/collector is a two-space copying collector, so each space is of size 15. Records are allocated consecutively in to-space, starting from the first memory location, 0.

The following is a snapshot of memory just before a collection where all memory has been allocated:
• Register 1: 0
• Register 2: 3
• To space: 1 17 12 4 0 3 3 3 3 2 5 3 1 14 0

What are the values in the two registers and the new to-space after collection? Assume that unallocated memory in to-space contains 0.

Express your answer as a function answer-for-11.2 that takes no arguments and returns a list of 17 numbers (register 1, then register 2, then to-space slots).

 Last update: Monday, November 26th, 2001mflatt@cs.utah.edu