@@ -117,7 +117,7 @@ address spaces and the size of each address space are configurable constants.
117
117
- Valid pointers are field elements that lie in ` [0, 2^pointer_max_bits) ` , for
118
118
configuration constant ` pointer_max_bits ` . When accessing an address out of ` [0, 2^pointer_max_bits) ` , the VM should
119
119
panic.
120
-
120
+ - For the register address space (address space ` 1 ` ), valid pointers lie in ` [0, 128) ` , corresponding to 32 registers with 4 byte limbs each.
121
121
These configuration constants must satisfy ` addr_space_height, pointer_max_bits <= F::bits() - 2 ` . We use the following notation
122
122
to denote cells in memory:
123
123
@@ -171,7 +171,7 @@ structures during runtime execution:
171
171
- ` hint_space ` : a vector of vectors of field elements used to store hints during runtime execution
172
172
via [ phantom sub-instructions] ( #phantom-sub-instructions ) such as ` NativeHintLoad ` . The outer ` hint_space ` vector is append-only, but
173
173
each internal ` hint_space[hint_id] ` vector may be mutated, including deletions, by the host.
174
- - ` kv_store ` : a read-only key-value store for hints. Executors(e.g. ` Rv32HintLoadByKey ` ) can read data from ` kv_store `
174
+ - ` kv_store ` : a read-only key-value store for hints. Executors(e.g. ` Rv32HintLoadByKey ` ) can read data from ` kv_store `
175
175
at runtime. ` kv_store ` is designed for general purposes so both key and value are byte arrays. Encoding of key/value
176
176
are decided by each executor. Users need to use the corresponding encoding when adding data to ` kv_store ` .
177
177
@@ -327,7 +327,7 @@ unsigned integer, and convert to field element. In the instructions below, `[c:4
327
327
#### Load/Store
328
328
329
329
For all load/store instructions, we assume the operand ` c ` is in ` [0, 2^16) ` , and we fix address spaces ` d = 1 ` .
330
- The address space ` e ` can be ` 0 ` , ` 1 ` , or ` 2 ` for load instructions, and ` 2 ` , ` 3 ` , or ` 4 ` for store instructions.
330
+ The address space ` e ` is ` 2 ` for load instructions, and can be ` 2 ` , ` 3 ` , or ` 4 ` for store instructions.
331
331
The operand ` g ` must be a boolean. We let ` sign_extend(decompose(c)[0:2], g) ` denote the ` i32 ` defined by first taking
332
332
the unsigned integer encoding of ` c ` as 16 bits, then sign extending it to 32 bits using the sign bit ` g ` , and considering
333
333
the 32 bits as the 2's complement of an ` i32 ` .
0 commit comments