Express your answer as a function answer-for-12.1 that takes no arguments and returns a list of 4 numbers.
Exercise 12.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 three integers
Tag 3: a record containing two pointers
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 2 3 3 3 3 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-12.2 that takes no arguments and returns a list of 17 numbers (register 1, then register 2, then to-space slots).
Exercise 12.3, Formal semantics, expressions and values
Here's a grammar of expressions:
M
=
zero
|
(add1 M)
|
(sub1 M)
Here's a grammar for values, a subset of expressions:
V
=
zero
|
(add1 V)
Which of the following expressions are values?
zero
(add1 zero)
(sub1 (add1 zero))
(add1 (sub1 zero))
(add1 (add1 (add1 zero)))
Express your answer as a function answer-for-12.3 that takes no arguments and returns a list of 5 booleans (#t for values, #f for non-values).
Exercise 12.4, Formal semantics, reduction
Here is a grammar of contexts, to go with the expressions and values of the previous exercise:
E
=
[]
|
(add1 E)
|
(sub1 E)
Here are the reduction rules:
(sub1 (add1 V))
->
V
E[M]
->
E[M']
where M -> M'
Which of the following expressions can be reduced to values?
zero
(add1 (sub1 zero))
(sub1 (add1 zero))
(sub1 (add1 zero)) - same as #3
(sub1 (sub1 (add1 (add1 zero))))
(sub1 (add1 (sub1 (add1 zero))))
(sub1 (add1 (sub1 (sub1 (add1 zero)))))
Express your answer as a function answer-for-12.4 that takes no arguments and returns a list of 7 booleans (#t for reducible to a value, #f for eventually stuck).
Last update: Tuesday, December 5th, 2000mflatt@cs.utah.edu