@aztec/simulator 0.0.1-commit.fcb71a6 → 0.0.1-commit.ff7989d6c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +6 -4
  2. package/dest/common/errors.d.ts +7 -1
  3. package/dest/common/errors.d.ts.map +1 -1
  4. package/dest/private/acvm/acvm.d.ts +4 -2
  5. package/dest/private/acvm/acvm.d.ts.map +1 -1
  6. package/dest/private/acvm/acvm.js +4 -3
  7. package/dest/private/acvm_native.d.ts +5 -3
  8. package/dest/private/acvm_native.d.ts.map +1 -1
  9. package/dest/private/acvm_native.js +8 -6
  10. package/dest/private/acvm_wasm.d.ts +4 -3
  11. package/dest/private/acvm_wasm.d.ts.map +1 -1
  12. package/dest/private/acvm_wasm.js +4 -4
  13. package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
  14. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  15. package/dest/private/circuit_recording/circuit_recorder.js +5 -3
  16. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
  17. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  18. package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
  19. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  20. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  21. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  22. package/dest/private/factory.d.ts +3 -3
  23. package/dest/private/factory.d.ts.map +1 -1
  24. package/dest/private/factory.js +7 -4
  25. package/dest/public/avm/avm_context.d.ts +3 -3
  26. package/dest/public/avm/avm_context.d.ts.map +1 -1
  27. package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
  28. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  29. package/dest/public/avm/avm_contract_call_result.js +3 -3
  30. package/dest/public/avm/avm_execution_environment.d.ts +6 -5
  31. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  32. package/dest/public/avm/avm_gas.js +3 -3
  33. package/dest/public/avm/avm_machine_state.d.ts +6 -5
  34. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  35. package/dest/public/avm/avm_machine_state.js +3 -2
  36. package/dest/public/avm/avm_memory_types.d.ts +1 -1
  37. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  38. package/dest/public/avm/avm_memory_types.js +3 -0
  39. package/dest/public/avm/avm_simulator.d.ts +3 -2
  40. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  41. package/dest/public/avm/avm_simulator.js +5 -4
  42. package/dest/public/avm/calldata.d.ts +51 -0
  43. package/dest/public/avm/calldata.d.ts.map +1 -0
  44. package/dest/public/avm/calldata.js +63 -0
  45. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  46. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  47. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  48. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  49. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  50. package/dest/public/avm/fixtures/avm_simulation_tester.js +3 -2
  51. package/dest/public/avm/fixtures/initializers.d.ts +1 -1
  52. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  53. package/dest/public/avm/fixtures/initializers.js +2 -1
  54. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  55. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  56. package/dest/public/avm/opcodes/accrued_substate.js +42 -43
  57. package/dest/public/avm/opcodes/arithmetic.d.ts +8 -8
  58. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  59. package/dest/public/avm/opcodes/arithmetic.js +1 -1
  60. package/dest/public/avm/opcodes/bitwise.d.ts +7 -7
  61. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  62. package/dest/public/avm/opcodes/bitwise.js +5 -5
  63. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  64. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  65. package/dest/public/avm/opcodes/comparators.js +1 -1
  66. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  67. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  68. package/dest/public/avm/opcodes/contract.js +8 -8
  69. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  70. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  71. package/dest/public/avm/opcodes/control_flow.js +4 -4
  72. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  73. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  74. package/dest/public/avm/opcodes/conversion.js +4 -4
  75. package/dest/public/avm/opcodes/ec_add.d.ts +4 -4
  76. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  77. package/dest/public/avm/opcodes/ec_add.js +15 -6
  78. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  79. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  80. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  81. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  82. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  83. package/dest/public/avm/opcodes/external_calls.js +23 -22
  84. package/dest/public/avm/opcodes/hashing.d.ts +8 -8
  85. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  86. package/dest/public/avm/opcodes/hashing.js +12 -12
  87. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  88. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  89. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  90. package/dest/public/avm/opcodes/memory.d.ts +14 -14
  91. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  92. package/dest/public/avm/opcodes/memory.js +25 -25
  93. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  94. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  95. package/dest/public/avm/opcodes/misc.js +4 -4
  96. package/dest/public/avm/opcodes/storage.d.ts +16 -15
  97. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  98. package/dest/public/avm/opcodes/storage.js +34 -24
  99. package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
  100. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  101. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  102. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  103. package/dest/public/debug_fn_name.d.ts +4 -4
  104. package/dest/public/debug_fn_name.d.ts.map +1 -1
  105. package/dest/public/debug_fn_name.js +7 -5
  106. package/dest/public/executor_metrics.d.ts +1 -1
  107. package/dest/public/executor_metrics.d.ts.map +1 -1
  108. package/dest/public/executor_metrics.js +12 -33
  109. package/dest/public/fixtures/amm_test.js +2 -2
  110. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  111. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  112. package/dest/public/fixtures/bulk_test.js +1 -17
  113. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -11
  114. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  115. package/dest/public/fixtures/custom_bytecode_tests.js +18 -18
  116. package/dest/public/fixtures/minimal_public_tx.js +2 -2
  117. package/dest/public/fixtures/opcode_spammer.d.ts +3 -4
  118. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
  119. package/dest/public/fixtures/opcode_spammer.js +99 -127
  120. package/dest/public/fixtures/utils.js +4 -4
  121. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +21 -7
  122. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  123. package/dest/public/fuzzing/avm_fuzzer_simulator.js +42 -10
  124. package/dest/public/fuzzing/avm_simulator_bin.js +29 -11
  125. package/dest/public/hinting_db_sources.d.ts +2 -2
  126. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  127. package/dest/public/hinting_db_sources.js +3 -1
  128. package/dest/public/public_db_sources.d.ts +4 -3
  129. package/dest/public/public_db_sources.d.ts.map +1 -1
  130. package/dest/public/public_db_sources.js +4 -4
  131. package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -2
  132. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  133. package/dest/public/public_processor/guarded_merkle_tree.js +3 -1
  134. package/dest/public/public_processor/public_processor.d.ts +7 -4
  135. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  136. package/dest/public/public_processor/public_processor.js +421 -31
  137. package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
  138. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  139. package/dest/public/public_processor/public_processor_metrics.js +28 -45
  140. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
  141. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  142. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +2 -2
  143. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +5 -5
  144. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  145. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +10 -9
  146. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +4 -4
  147. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
  148. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +5 -5
  149. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +4 -4
  150. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  151. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +6 -6
  152. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +3 -2
  153. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -1
  154. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +2 -2
  155. package/dest/public/public_tx_simulator/factories.d.ts +3 -2
  156. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  157. package/dest/public/public_tx_simulator/factories.js +3 -3
  158. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +1 -1
  159. package/dest/public/public_tx_simulator/public_tx_context.d.ts +4 -3
  160. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  161. package/dest/public/public_tx_simulator/public_tx_context.js +8 -8
  162. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -4
  163. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  164. package/dest/public/public_tx_simulator/public_tx_simulator.js +12 -7
  165. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  166. package/dest/public/side_effect_trace.d.ts +5 -4
  167. package/dest/public/side_effect_trace.d.ts.map +1 -1
  168. package/dest/public/side_effect_trace.js +3 -3
  169. package/dest/public/state_manager/state_manager.d.ts +10 -4
  170. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  171. package/dest/public/state_manager/state_manager.js +14 -7
  172. package/dest/public/test_executor_metrics.d.ts +3 -2
  173. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  174. package/dest/public/test_executor_metrics.js +2 -2
  175. package/package.json +17 -17
  176. package/src/private/acvm/acvm.ts +4 -3
  177. package/src/private/acvm_native.ts +11 -5
  178. package/src/private/acvm_wasm.ts +7 -3
  179. package/src/private/circuit_recording/circuit_recorder.ts +5 -3
  180. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  181. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  182. package/src/private/factory.ts +7 -4
  183. package/src/public/avm/avm_context.ts +2 -2
  184. package/src/public/avm/avm_contract_call_result.ts +8 -6
  185. package/src/public/avm/avm_execution_environment.ts +9 -4
  186. package/src/public/avm/avm_gas.ts +2 -2
  187. package/src/public/avm/avm_machine_state.ts +6 -5
  188. package/src/public/avm/avm_memory_types.ts +4 -0
  189. package/src/public/avm/avm_simulator.ts +8 -5
  190. package/src/public/avm/calldata.ts +100 -0
  191. package/src/public/avm/fixtures/account_proof.json +553 -0
  192. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  193. package/src/public/avm/fixtures/avm_simulation_tester.ts +8 -2
  194. package/src/public/avm/fixtures/initializers.ts +2 -1
  195. package/src/public/avm/opcodes/accrued_substate.ts +31 -34
  196. package/src/public/avm/opcodes/arithmetic.ts +1 -1
  197. package/src/public/avm/opcodes/bitwise.ts +3 -3
  198. package/src/public/avm/opcodes/comparators.ts +1 -1
  199. package/src/public/avm/opcodes/contract.ts +4 -7
  200. package/src/public/avm/opcodes/control_flow.ts +2 -2
  201. package/src/public/avm/opcodes/conversion.ts +3 -3
  202. package/src/public/avm/opcodes/ec_add.ts +13 -4
  203. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  204. package/src/public/avm/opcodes/external_calls.ts +17 -15
  205. package/src/public/avm/opcodes/hashing.ts +6 -6
  206. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  207. package/src/public/avm/opcodes/memory.ts +19 -19
  208. package/src/public/avm/opcodes/misc.ts +2 -2
  209. package/src/public/avm/opcodes/storage.ts +30 -22
  210. package/src/public/avm/serialization/bytecode_serialization.ts +2 -2
  211. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  212. package/src/public/debug_fn_name.ts +10 -8
  213. package/src/public/executor_metrics.ts +9 -33
  214. package/src/public/fixtures/amm_test.ts +2 -2
  215. package/src/public/fixtures/bulk_test.ts +2 -2
  216. package/src/public/fixtures/custom_bytecode_tests.ts +27 -18
  217. package/src/public/fixtures/minimal_public_tx.ts +2 -2
  218. package/src/public/fixtures/opcode_spammer.ts +196 -117
  219. package/src/public/fixtures/utils.ts +4 -4
  220. package/src/public/fuzzing/avm_fuzzer_simulator.ts +61 -13
  221. package/src/public/fuzzing/avm_simulator_bin.ts +43 -8
  222. package/src/public/hinting_db_sources.ts +1 -1
  223. package/src/public/public_db_sources.ts +15 -5
  224. package/src/public/public_processor/guarded_merkle_tree.ts +1 -1
  225. package/src/public/public_processor/public_processor.ts +40 -20
  226. package/src/public/public_processor/public_processor_metrics.ts +16 -44
  227. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +6 -3
  228. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +18 -7
  229. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +6 -4
  230. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +7 -5
  231. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +3 -1
  232. package/src/public/public_tx_simulator/factories.ts +4 -2
  233. package/src/public/public_tx_simulator/public_tx_context.ts +13 -6
  234. package/src/public/public_tx_simulator/public_tx_simulator.ts +18 -7
  235. package/src/public/side_effect_trace.ts +5 -2
  236. package/src/public/state_manager/state_manager.ts +29 -20
  237. package/src/public/test_executor_metrics.ts +3 -3
@@ -143,7 +143,7 @@
143
143
  * - `EMITNOTEHASH`: max 64 per TX
144
144
  * - `EMITNULLIFIER`: max 63 per TX (one reserved for TX nullifier)
145
145
  * - `SENDL2TOL1MSG`: max 8 per TX
146
- * - `EMITUNENCRYPTEDLOG`: limited by total log payload size
146
+ * - `EMITPUBLICLOG`: limited by total log payload size
147
147
  *
148
148
  * By having the inner contract REVERT after emitting side effects, those effects are discarded, allowing the outer contract to call it again. This enables thousands of opcode executions per TX instead of just the limit.
149
149
  *
@@ -164,7 +164,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
164
164
  import type { Bufferable } from '@aztec/foundation/serialize';
165
165
  import { type CallStackMetadata, PublicDataWrite, type PublicTxResult } from '@aztec/stdlib/avm';
166
166
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
167
- import { computePublicDataTreeLeafSlot, siloNullifier } from '@aztec/stdlib/hash';
167
+ import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
168
168
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
169
169
  import { MerkleTreeId } from '@aztec/stdlib/trees';
170
170
 
@@ -182,7 +182,7 @@ import {
182
182
  EcAdd,
183
183
  EmitNoteHash,
184
184
  EmitNullifier,
185
- EmitUnencryptedLog,
185
+ EmitPublicLog,
186
186
  Eq,
187
187
  FieldDiv,
188
188
  GetContractInstance,
@@ -295,9 +295,8 @@ export interface SpamConfigsForOpcode {
295
295
  export const WARM_NOTE_HASH = new Fr(0xdeadbeefn);
296
296
  export const WARM_L1_TO_L2_MSG = new Fr(0xcafebabedeadbeefn);
297
297
 
298
- /** Warm nullifier constants - uses a fixed address since NULLIFIEREXISTS takes address as parameter */
299
- export const WARM_NULLIFIER = new Fr(0xdeadbeef0001n);
300
- export const WARM_NULLIFIER_ADDRESS = AztecAddress.fromNumber(0xbeef);
298
+ /** Warm nullifier constant - a pre-siloed nullifier value inserted directly into the tree */
299
+ export const WARM_SILOED_NULLIFIER = new Fr(0xdeadbeef0001n);
301
300
 
302
301
  /** Warm storage constants - storage is inserted for the deployed contract's address */
303
302
  export const WARM_STORAGE_SLOT = new Fr(0xdeadbeef0002n);
@@ -331,9 +330,8 @@ export async function insertWarmTreeEntries(
331
330
  // Insert into L1 to L2 message tree
332
331
  await merkleTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, [WARM_L1_TO_L2_MSG]);
333
332
 
334
- // Insert siloed nullifier into nullifier tree
335
- const siloedNullifier = await siloNullifier(WARM_NULLIFIER_ADDRESS, WARM_NULLIFIER);
336
- await merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [siloedNullifier.toBuffer()]);
333
+ // Insert siloed nullifier into nullifier tree (already siloed - used directly by NULLIFIEREXISTS)
334
+ await merkleTrees.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [WARM_SILOED_NULLIFIER.toBuffer()]);
337
335
 
338
336
  // Insert storage value into public data tree
339
337
  const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, WARM_STORAGE_SLOT);
@@ -449,7 +447,7 @@ export const EXTERNAL_CALL_CONFIG: SpamConfig = {
449
447
  { offset: CONST_MAX_U32_OFFSET, value: new Uint32(MAX_U32) }, // l2Gas/daGas - MAX_U32 gets capped to remaining gas
450
448
  () => [
451
449
  new CalldataCopy(
452
- /*indirect=*/ 0,
450
+ /*addressing_mode=*/ 0,
453
451
  /*copySizeOffset=*/ CALL_COPY_SIZE_OFFSET,
454
452
  /*cdStartOffset=*/ CALL_CALLDATA_INDEX_OFFSET,
455
453
  /*dstOffset=*/ CALL_ADDR_OFFSET,
@@ -458,7 +456,7 @@ export const EXTERNAL_CALL_CONFIG: SpamConfig = {
458
456
  ],
459
457
  targetInstructions: () => [
460
458
  new Call(
461
- /*indirect=*/ 0,
459
+ /*addressing_mode=*/ 0,
462
460
  /*l2GasOffset=*/ CALL_L2_GAS_OFFSET,
463
461
  /*daGasOffset=*/ CALL_DA_GAS_OFFSET,
464
462
  /*addrOffset=*/ CALL_ADDR_OFFSET,
@@ -477,7 +475,7 @@ const STATIC_CALL_CONFIG: SpamConfig = {
477
475
  { offset: CONST_MAX_U32_OFFSET, value: new Uint32(MAX_U32) }, // l2Gas/daGas - MAX_U32 gets capped to remaining gas
478
476
  () => [
479
477
  new CalldataCopy(
480
- /*indirect=*/ 0,
478
+ /*addressing_mode=*/ 0,
481
479
  /*copySizeOffset=*/ CALL_COPY_SIZE_OFFSET,
482
480
  /*cdStartOffset=*/ CALL_CALLDATA_INDEX_OFFSET,
483
481
  /*dstOffset=*/ CALL_ADDR_OFFSET,
@@ -486,7 +484,7 @@ const STATIC_CALL_CONFIG: SpamConfig = {
486
484
  ],
487
485
  targetInstructions: () => [
488
486
  new StaticCall(
489
- /*indirect=*/ 0,
487
+ /*addressing_mode=*/ 0,
490
488
  /*l2GasOffset=*/ CALL_L2_GAS_OFFSET,
491
489
  /*daGasOffset=*/ CALL_DA_GAS_OFFSET,
492
490
  /*addrOffset=*/ CALL_ADDR_OFFSET,
@@ -517,7 +515,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
517
515
  { offset: 1, value: randomWithTag(tag) }, // random addend
518
516
  ],
519
517
  targetInstructions: () => [
520
- new Add(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8),
518
+ new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
519
+ Opcode.ADD_8,
520
+ Add.wireFormat8,
521
+ ),
521
522
  ],
522
523
  })),
523
524
 
@@ -528,7 +529,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
528
529
  { offset: 1, value: randomWithTag(tag) }, // random subtrahend
529
530
  ],
530
531
  targetInstructions: () => [
531
- new Sub(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.SUB_8, Sub.wireFormat8),
532
+ new Sub(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
533
+ Opcode.SUB_8,
534
+ Sub.wireFormat8,
535
+ ),
532
536
  ],
533
537
  })),
534
538
 
@@ -539,7 +543,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
539
543
  { offset: 1, value: randomWithTag(tag) }, // random multiplier
540
544
  ],
541
545
  targetInstructions: () => [
542
- new Mul(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.MUL_8, Mul.wireFormat8),
546
+ new Mul(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
547
+ Opcode.MUL_8,
548
+ Mul.wireFormat8,
549
+ ),
543
550
  ],
544
551
  })),
545
552
 
@@ -551,7 +558,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
551
558
  { offset: 1, value: randomNonZeroWithTag(tag) }, // random non-zero divisor
552
559
  ],
553
560
  targetInstructions: () => [
554
- new Div(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.DIV_8, Div.wireFormat8),
561
+ new Div(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
562
+ Opcode.DIV_8,
563
+ Div.wireFormat8,
564
+ ),
555
565
  ],
556
566
  })),
557
567
 
@@ -563,7 +573,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
563
573
  { offset: 1, value: randomNonZeroField() }, // random non-zero divisor
564
574
  ],
565
575
  targetInstructions: () => [
566
- new FieldDiv(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
576
+ new FieldDiv(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
567
577
  Opcode.FDIV_8,
568
578
  FieldDiv.wireFormat8,
569
579
  ),
@@ -581,7 +591,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
581
591
  { offset: 1, value: randomWithTag(tag) }, // random value b
582
592
  ],
583
593
  targetInstructions: () => [
584
- new Eq(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.EQ_8, Eq.wireFormat8),
594
+ new Eq(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.EQ_8, Eq.wireFormat8),
585
595
  ],
586
596
  })),
587
597
 
@@ -592,7 +602,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
592
602
  { offset: 1, value: randomWithTag(tag) }, // random value b
593
603
  ],
594
604
  targetInstructions: () => [
595
- new Lt(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.LT_8, Lt.wireFormat8),
605
+ new Lt(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.LT_8, Lt.wireFormat8),
596
606
  ],
597
607
  })),
598
608
 
@@ -603,7 +613,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
603
613
  { offset: 1, value: randomWithTag(tag) }, // random value b
604
614
  ],
605
615
  targetInstructions: () => [
606
- new Lte(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(Opcode.LTE_8, Lte.wireFormat8),
616
+ new Lte(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2).as(
617
+ Opcode.LTE_8,
618
+ Lte.wireFormat8,
619
+ ),
607
620
  ],
608
621
  })),
609
622
 
@@ -617,7 +630,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
617
630
  { offset: 1, value: randomWithTag(tag) }, // random value b
618
631
  ],
619
632
  targetInstructions: () => [
620
- new And(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.AND_8, And.wireFormat8),
633
+ new And(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
634
+ Opcode.AND_8,
635
+ And.wireFormat8,
636
+ ),
621
637
  ],
622
638
  })),
623
639
 
@@ -628,7 +644,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
628
644
  { offset: 1, value: randomWithTag(tag) }, // random value b
629
645
  ],
630
646
  targetInstructions: () => [
631
- new Or(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.OR_8, Or.wireFormat8),
647
+ new Or(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.OR_8, Or.wireFormat8),
632
648
  ],
633
649
  })),
634
650
 
@@ -639,7 +655,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
639
655
  { offset: 1, value: randomWithTag(tag) }, // random value b
640
656
  ],
641
657
  targetInstructions: () => [
642
- new Xor(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.XOR_8, Xor.wireFormat8),
658
+ new Xor(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
659
+ Opcode.XOR_8,
660
+ Xor.wireFormat8,
661
+ ),
643
662
  ],
644
663
  })),
645
664
 
@@ -647,7 +666,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
647
666
  label: TypeTag[tag],
648
667
  setup: [{ offset: 0, value: randomWithTag(tag) }], // random value
649
668
  targetInstructions: () => [
650
- new Not(/*indirect=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 0).as(Opcode.NOT_8, Not.wireFormat8),
669
+ new Not(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 0).as(Opcode.NOT_8, Not.wireFormat8),
651
670
  ],
652
671
  })),
653
672
 
@@ -658,7 +677,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
658
677
  { offset: 1, value: withTag(1n, tag) }, // shift by 1 (small fixed amount to avoid overflow)
659
678
  ],
660
679
  targetInstructions: () => [
661
- new Shl(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.SHL_8, Shl.wireFormat8),
680
+ new Shl(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
681
+ Opcode.SHL_8,
682
+ Shl.wireFormat8,
683
+ ),
662
684
  ],
663
685
  })),
664
686
 
@@ -669,7 +691,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
669
691
  { offset: 1, value: withTag(1n, tag) }, // shift by 1 (small fixed amount)
670
692
  ],
671
693
  targetInstructions: () => [
672
- new Shr(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.SHR_8, Shr.wireFormat8),
694
+ new Shr(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
695
+ Opcode.SHR_8,
696
+ Shr.wireFormat8,
697
+ ),
673
698
  ],
674
699
  })),
675
700
 
@@ -680,7 +705,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
680
705
  label: TypeTag[tag],
681
706
  setup: [{ offset: 0, value: randomWithTag(tag) }], // random value to cast
682
707
  targetInstructions: () => [
683
- new Cast(/*indirect=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 1, /*dstTag=*/ TypeTag.UINT32).as(
708
+ new Cast(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 1, /*dstTag=*/ TypeTag.UINT32).as(
684
709
  Opcode.CAST_8,
685
710
  Cast.wireFormat8,
686
711
  ),
@@ -691,7 +716,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
691
716
  label: TypeTag[tag],
692
717
  setup: [{ offset: 0, value: randomWithTag(tag) }], // random value to move
693
718
  targetInstructions: () => [
694
- new Mov(/*indirect=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 1).as(Opcode.MOV_8, Mov.wireFormat8),
719
+ new Mov(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*dstOffset=*/ 1).as(Opcode.MOV_8, Mov.wireFormat8),
695
720
  ],
696
721
  })),
697
722
 
@@ -732,7 +757,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
732
757
  {
733
758
  setup: [],
734
759
  targetInstructions: () => [
735
- new Set(/*indirect=*/ 0, /*dstOffset=*/ 0, /*inTag=*/ TypeTag.UINT128, /*value=*/ 4242424242424242n).as(
760
+ new Set(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*inTag=*/ TypeTag.UINT128, /*value=*/ 4242424242424242n).as(
736
761
  Opcode.SET_128,
737
762
  Set.wireFormat128,
738
763
  ),
@@ -761,7 +786,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
761
786
  [Opcode.JUMPI_32]: [
762
787
  {
763
788
  setup: [{ offset: 0, value: new Uint1(0n) }], // Always false
764
- targetInstructions: () => [new JumpI(/*indirect=*/ 0, /*condOffset=*/ 0, /*loc=*/ 0)],
789
+ targetInstructions: () => [new JumpI(/*addressing_mode=*/ 0, /*condOffset=*/ 0, /*loc=*/ 0)],
765
790
  },
766
791
  ],
767
792
 
@@ -801,7 +826,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
801
826
  { offset: 0, value: new Uint32(0) }, // returnSize = 0
802
827
  ],
803
828
  targetInstructions: () => [
804
- new Return(/*indirect=*/ 0, /*returnSizeOffset=*/ 0, /*returnOffset=*/ 0), // return nothing (size=0)
829
+ new Return(/*addressing_mode=*/ 0, /*returnSizeOffset=*/ 0, /*returnOffset=*/ 0), // return nothing (size=0)
805
830
  ],
806
831
  // Use the side-effect-limit pattern (even though it's not a side-effect) as it fits
807
832
  // this case (we want to CALL, RETURN, then CALL again back in parent). We omit "cleanup"
@@ -818,7 +843,10 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
818
843
  { offset: 0, value: new Uint32(0) }, // retSize = 0
819
844
  ],
820
845
  targetInstructions: () => [
821
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 0, /*returnOffset=*/ 1).as(Opcode.REVERT_8, Revert.wireFormat8),
846
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 0, /*returnOffset=*/ 1).as(
847
+ Opcode.REVERT_8,
848
+ Revert.wireFormat8,
849
+ ),
822
850
  ],
823
851
  limit: 1, // REVERT can only execute once per call
824
852
  },
@@ -831,7 +859,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
831
859
  {
832
860
  setup: [],
833
861
  targetInstructions: () => [
834
- new GetEnvVar(/*indirect=*/ 0, /*dstOffset=*/ 0, /*varEnum=*/ 0).as(
862
+ new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*varEnum=*/ 0).as(
835
863
  Opcode.GETENVVAR_16,
836
864
  GetEnvVar.wireFormat16,
837
865
  ),
@@ -849,7 +877,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
849
877
  { offset: 1, value: new Uint32(0n) }, // cdStart = 0
850
878
  ],
851
879
  targetInstructions: () => [
852
- new CalldataCopy(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2),
880
+ new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2),
853
881
  ],
854
882
  },
855
883
  {
@@ -862,7 +890,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
862
890
  { offset: 1, value: new Uint32(0n) }, // cdStart = 0
863
891
  ],
864
892
  targetInstructions: () => [
865
- new CalldataCopy(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2),
893
+ new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2),
866
894
  ],
867
895
  },
868
896
  {
@@ -873,7 +901,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
873
901
  { offset: 1, value: new Uint32(0n) }, // cdStart = 0
874
902
  ],
875
903
  targetInstructions: () => [
876
- new CalldataCopy(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2),
904
+ new CalldataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*cdStartOffset=*/ 1, /*dstOffset=*/ 2),
877
905
  ],
878
906
  },
879
907
  ],
@@ -881,14 +909,14 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
881
909
  [Opcode.SUCCESSCOPY]: [
882
910
  {
883
911
  setup: [],
884
- targetInstructions: () => [new SuccessCopy(/*indirect=*/ 0, /*dstOffset=*/ 0)],
912
+ targetInstructions: () => [new SuccessCopy(/*addressing_mode=*/ 0, /*dstOffset=*/ 0)],
885
913
  },
886
914
  ],
887
915
 
888
916
  [Opcode.RETURNDATASIZE]: [
889
917
  {
890
918
  setup: [],
891
- targetInstructions: () => [new ReturndataSize(/*indirect=*/ 0, /*dstOffset=*/ 0)],
919
+ targetInstructions: () => [new ReturndataSize(/*addressing_mode=*/ 0, /*dstOffset=*/ 0)],
892
920
  },
893
921
  ],
894
922
 
@@ -901,7 +929,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
901
929
  { offset: 1, value: new Uint32(0n) }, // rdOffset
902
930
  ],
903
931
  targetInstructions: () => [
904
- new ReturndataCopy(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2),
932
+ new ReturndataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2),
905
933
  ],
906
934
  },
907
935
  {
@@ -914,7 +942,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
914
942
  { offset: 1, value: new Uint32(0n) }, // rdOffset
915
943
  ],
916
944
  targetInstructions: () => [
917
- new ReturndataCopy(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2),
945
+ new ReturndataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2),
918
946
  ],
919
947
  },
920
948
  {
@@ -925,7 +953,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
925
953
  { offset: 1, value: new Uint32(0n) }, // rdOffset
926
954
  ],
927
955
  targetInstructions: () => [
928
- new ReturndataCopy(/*indirect=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2),
956
+ new ReturndataCopy(/*addressing_mode=*/ 0, /*copySizeOffset=*/ 0, /*rdStartOffset=*/ 1, /*dstOffset=*/ 2),
929
957
  ],
930
958
  },
931
959
  ],
@@ -936,31 +964,66 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
936
964
  [Opcode.SLOAD]: [
937
965
  {
938
966
  label: 'Cold read (slot not written)',
939
- setup: [{ offset: 0, value: new Field(Fr.random()) }], // random slot
940
- targetInstructions: () => [new SLoad(/*indirect=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 1)],
967
+ setup: [
968
+ { offset: 0, value: new Field(Fr.random()) }, // random slot
969
+ () => [
970
+ // Get current contract address into offset 1
971
+ new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(
972
+ Opcode.GETENVVAR_16,
973
+ GetEnvVar.wireFormat16,
974
+ ),
975
+ ],
976
+ ],
977
+ targetInstructions: () => [
978
+ new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 1, /*dstOffset=*/ 2),
979
+ ],
941
980
  },
942
981
  {
943
982
  label: 'Warm read (from tree)',
944
983
  // Uses pre-inserted storage from insertWarmTreeEntries() which is called after contract deployment
945
- setup: [{ offset: 0, value: new Field(WARM_STORAGE_SLOT) }], // pre-inserted slot
946
- targetInstructions: () => [new SLoad(/*indirect=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 1)],
984
+ setup: [
985
+ { offset: 0, value: new Field(WARM_STORAGE_SLOT) }, // pre-inserted slot
986
+ () => [
987
+ // Get current contract address into offset 1
988
+ new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 1, /*varEnum=*/ 0).as(
989
+ Opcode.GETENVVAR_16,
990
+ GetEnvVar.wireFormat16,
991
+ ),
992
+ ],
993
+ ],
994
+ targetInstructions: () => [
995
+ new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 1, /*dstOffset=*/ 2),
996
+ ],
947
997
  },
948
998
  {
949
999
  label: 'Warm read (SSTORE first, unique slot per SLOAD)',
950
- // Memory layout: slot (incremented), value, constant 1, revertSize, loaded value
1000
+ // Memory layout: slot (incremented), value, constant 1, contract address (from GETENVVAR), revertSize, loaded value
951
1001
  setup: [
952
1002
  { offset: 0, value: new Field(Fr.random()) }, // slot (will be incremented)
953
1003
  { offset: 1, value: new Field(Fr.random()) }, // value to store
954
1004
  { offset: 2, value: new Field(1n) }, // constant 1 for ADD
955
- { offset: 3, value: new Uint32(0n) }, // revertSize
1005
+ () => [
1006
+ // Get current contract address into offset 3
1007
+ new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 3, /*varEnum=*/ 0).as(
1008
+ Opcode.GETENVVAR_16,
1009
+ GetEnvVar.wireFormat16,
1010
+ ),
1011
+ ],
1012
+ { offset: 4, value: new Uint32(0n) }, // revertSize
956
1013
  ],
957
1014
  targetInstructions: () => [
958
- new SStore(/*indirect=*/ 0, /*srcOffset=*/ 1, /*slotOffset=*/ 0),
959
- new SLoad(/*indirect=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 4),
960
- new Add(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 2, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8), // slot++
1015
+ new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 1, /*slotOffset=*/ 0),
1016
+ new SLoad(/*addressing_mode=*/ 0, /*slotOffset=*/ 0, /*contractAddressOffset=*/ 3, /*dstOffset=*/ 5),
1017
+ new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 2, /*dstOffset=*/ 0).as(
1018
+ Opcode.ADD_8,
1019
+ Add.wireFormat8,
1020
+ ), // slot++
961
1021
  ],
962
1022
  cleanupInstructions: () => [
963
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1023
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 4, /*returnOffset=*/ 0).as(
1024
+ Opcode.REVERT_8,
1025
+ Revert.wireFormat8,
1026
+ ),
964
1027
  ],
965
1028
  limit: MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
966
1029
  },
@@ -976,7 +1039,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
976
1039
  { offset: 1, value: randomWithTag(TypeTag.UINT64) }, // random leafIndex
977
1040
  ],
978
1041
  targetInstructions: () => [
979
- new NoteHashExists(/*indirect=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffset=*/ 1, /*existsOffset=*/ 2),
1042
+ new NoteHashExists(/*addressing_mode=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffset=*/ 1, /*existsOffset=*/ 2),
980
1043
  ],
981
1044
  },
982
1045
  {
@@ -987,7 +1050,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
987
1050
  { offset: 1, value: new Uint64(WARM_NOTE_HASH_LEAF_INDEX) }, // known leafIndex
988
1051
  ],
989
1052
  targetInstructions: () => [
990
- new NoteHashExists(/*indirect=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffset=*/ 1, /*existsOffset=*/ 2),
1053
+ new NoteHashExists(/*addressing_mode=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffset=*/ 1, /*existsOffset=*/ 2),
991
1054
  ],
992
1055
  },
993
1056
  ],
@@ -995,50 +1058,25 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
995
1058
  [Opcode.NULLIFIEREXISTS]: [
996
1059
  {
997
1060
  label: 'Non-existent nullifier',
1061
+ // NULLIFIEREXISTS now takes a siloed nullifier directly (no address parameter)
998
1062
  setup: [
999
- { offset: 0, value: new Field(Fr.random()) }, // random nullifier
1000
- { offset: 1, value: new Field(Fr.random()) }, // random address
1063
+ { offset: 0, value: new Field(Fr.random()) }, // random siloed nullifier (won't exist)
1001
1064
  ],
1002
1065
  targetInstructions: () => [
1003
- new NullifierExists(/*indirect=*/ 0, /*nullifierOffset=*/ 0, /*addressOffset=*/ 1, /*existsOffset=*/ 2),
1066
+ new NullifierExists(/*addressing_mode=*/ 0, /*siloedNullifierOffset=*/ 0, /*existsOffset=*/ 1),
1004
1067
  ],
1005
1068
  },
1006
1069
  {
1007
1070
  label: 'Existing nullifier (warm - from tree)',
1008
- // Uses pre-inserted nullifier from insertWarmTreeEntries()
1071
+ // Uses pre-inserted siloed nullifier from insertWarmTreeEntries()
1072
+ // NULLIFIEREXISTS now takes a siloed nullifier directly
1009
1073
  setup: [
1010
- { offset: 0, value: new Field(WARM_NULLIFIER) }, // pre-inserted nullifier
1011
- { offset: 1, value: new Field(WARM_NULLIFIER_ADDRESS.toField()) }, // address it was siloed with
1074
+ { offset: 0, value: new Field(WARM_SILOED_NULLIFIER) }, // pre-inserted siloed nullifier
1012
1075
  ],
1013
1076
  targetInstructions: () => [
1014
- new NullifierExists(/*indirect=*/ 0, /*nullifierOffset=*/ 0, /*addressOffset=*/ 1, /*existsOffset=*/ 2),
1077
+ new NullifierExists(/*addressing_mode=*/ 0, /*siloedNullifierOffset=*/ 0, /*existsOffset=*/ 1),
1015
1078
  ],
1016
1079
  },
1017
- {
1018
- label: 'Existing nullifier (warm - EMITNULLIFIER first)',
1019
- // Memory layout: nullifier (incremented), constant 1, current address (from GETENVVAR), revertSize, exists result
1020
- setup: [
1021
- { offset: 0, value: new Field(Fr.random()) }, // nullifier (will be incremented)
1022
- { offset: 1, value: new Field(1n) }, // constant 1 for ADD
1023
- () => [
1024
- // Get current contract address into offset 2
1025
- new GetEnvVar(/*indirect=*/ 0, /*dstOffset=*/ 2, /*varEnum=*/ 0).as(
1026
- Opcode.GETENVVAR_16,
1027
- GetEnvVar.wireFormat16,
1028
- ),
1029
- ],
1030
- { offset: 3, value: new Uint32(0n) }, // revertSize
1031
- ],
1032
- targetInstructions: () => [
1033
- new EmitNullifier(/*indirect=*/ 0, /*nullifierOffset=*/ 0),
1034
- new NullifierExists(/*indirect=*/ 0, /*nullifierOffset=*/ 0, /*addressOffset=*/ 2, /*existsOffset=*/ 4),
1035
- new Add(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8), // nullifier++
1036
- ],
1037
- cleanupInstructions: () => [
1038
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1039
- ],
1040
- limit: MAX_NULLIFIERS_PER_TX - 1,
1041
- },
1042
1080
  ],
1043
1081
 
1044
1082
  [Opcode.L1TOL2MSGEXISTS]: [
@@ -1049,7 +1087,12 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1049
1087
  { offset: 1, value: randomWithTag(TypeTag.UINT64) }, // random msgLeafIndex
1050
1088
  ],
1051
1089
  targetInstructions: () => [
1052
- new L1ToL2MessageExists(/*indirect=*/ 0, /*msgHashOffset=*/ 0, /*msgLeafIndexOffset=*/ 1, /*existsOffset=*/ 2),
1090
+ new L1ToL2MessageExists(
1091
+ /*addressing_mode=*/ 0,
1092
+ /*msgHashOffset=*/ 0,
1093
+ /*msgLeafIndexOffset=*/ 1,
1094
+ /*existsOffset=*/ 2,
1095
+ ),
1053
1096
  ],
1054
1097
  },
1055
1098
  {
@@ -1060,7 +1103,12 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1060
1103
  { offset: 1, value: new Uint64(WARM_L1_TO_L2_MSG_LEAF_INDEX) }, // known msgLeafIndex
1061
1104
  ],
1062
1105
  targetInstructions: () => [
1063
- new L1ToL2MessageExists(/*indirect=*/ 0, /*msgHashOffset=*/ 0, /*msgLeafIndexOffset=*/ 1, /*existsOffset=*/ 2),
1106
+ new L1ToL2MessageExists(
1107
+ /*addressing_mode=*/ 0,
1108
+ /*msgHashOffset=*/ 0,
1109
+ /*msgLeafIndexOffset=*/ 1,
1110
+ /*existsOffset=*/ 2,
1111
+ ),
1064
1112
  ],
1065
1113
  },
1066
1114
  ],
@@ -1071,7 +1119,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1071
1119
  // This ensures we're querying a valid deployed contract
1072
1120
  setup: [
1073
1121
  () => [
1074
- new GetEnvVar(/*indirect=*/ 0, /*dstOffset=*/ 0, /*varEnum=*/ 0).as(
1122
+ new GetEnvVar(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*varEnum=*/ 0).as(
1075
1123
  Opcode.GETENVVAR_16,
1076
1124
  GetEnvVar.wireFormat16,
1077
1125
  ),
@@ -1079,7 +1127,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1079
1127
  ],
1080
1128
  // memberEnum 0 = DEPLOYER
1081
1129
  targetInstructions: () => [
1082
- new GetContractInstance(/*indirect=*/ 0, /*addressOffset=*/ 0, /*dstOffset=*/ 1, /*memberEnum=*/ 0),
1130
+ new GetContractInstance(/*addressing_mode=*/ 0, /*addressOffset=*/ 0, /*dstOffset=*/ 1, /*memberEnum=*/ 0),
1083
1131
  ],
1084
1132
  },
1085
1133
  ],
@@ -1093,9 +1141,12 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1093
1141
  { offset: 0, value: new Field(Fr.random()) }, // random noteHash
1094
1142
  { offset: 1, value: new Uint32(0n) }, // revertSize
1095
1143
  ],
1096
- targetInstructions: () => [new EmitNoteHash(/*indirect=*/ 0, /*noteHashOffset=*/ 0)],
1144
+ targetInstructions: () => [new EmitNoteHash(/*addressing_mode=*/ 0, /*noteHashOffset=*/ 0)],
1097
1145
  cleanupInstructions: () => [
1098
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1146
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(
1147
+ Opcode.REVERT_8,
1148
+ Revert.wireFormat8,
1149
+ ),
1099
1150
  ], // revert with empty
1100
1151
  limit: MAX_NOTE_HASHES_PER_TX,
1101
1152
  },
@@ -1111,11 +1162,17 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1111
1162
  { offset: 2, value: new Uint32(0n) }, // revertSize
1112
1163
  ],
1113
1164
  targetInstructions: () => [
1114
- new EmitNullifier(/*indirect=*/ 0, /*nullifierOffset=*/ 0),
1115
- new Add(/*indirect=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(Opcode.ADD_8, Add.wireFormat8), // nullifier++
1165
+ new EmitNullifier(/*addressing_mode=*/ 0, /*nullifierOffset=*/ 0),
1166
+ new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 0).as(
1167
+ Opcode.ADD_8,
1168
+ Add.wireFormat8,
1169
+ ), // nullifier++
1116
1170
  ],
1117
1171
  cleanupInstructions: () => [
1118
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1172
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(
1173
+ Opcode.REVERT_8,
1174
+ Revert.wireFormat8,
1175
+ ),
1119
1176
  ], // revert with empty
1120
1177
  limit: MAX_NULLIFIERS_PER_TX - 1, // minus 1 because a TX will always have 1 "TX nullifier" from private
1121
1178
  },
@@ -1128,9 +1185,14 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1128
1185
  { offset: 1, value: new Field(Fr.random()) }, // random content
1129
1186
  { offset: 2, value: new Uint32(0n) }, // revertSize
1130
1187
  ],
1131
- targetInstructions: () => [new SendL2ToL1Message(/*indirect=*/ 0, /*recipientOffset=*/ 0, /*contentOffset=*/ 1)],
1188
+ targetInstructions: () => [
1189
+ new SendL2ToL1Message(/*addressing_mode=*/ 0, /*recipientOffset=*/ 0, /*contentOffset=*/ 1),
1190
+ ],
1132
1191
  cleanupInstructions: () => [
1133
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1192
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(
1193
+ Opcode.REVERT_8,
1194
+ Revert.wireFormat8,
1195
+ ),
1134
1196
  ], // revert with empty
1135
1197
  limit: MAX_L2_TO_L1_MSGS_PER_TX,
1136
1198
  },
@@ -1147,9 +1209,12 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1147
1209
  { offset: 1, value: new Field(Fr.random()) }, // random slot (same slot each iteration)
1148
1210
  { offset: 2, value: new Uint32(0n) }, // revertSize
1149
1211
  ],
1150
- targetInstructions: () => [new SStore(/*indirect=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 1)],
1212
+ targetInstructions: () => [new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 1)],
1151
1213
  cleanupInstructions: () => [
1152
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1214
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 2, /*returnOffset=*/ 0).as(
1215
+ Opcode.REVERT_8,
1216
+ Revert.wireFormat8,
1217
+ ),
1153
1218
  ], // revert with empty
1154
1219
  },
1155
1220
  {
@@ -1161,27 +1226,36 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1161
1226
  { offset: 3, value: new Uint32(0n) }, // revertSize
1162
1227
  ],
1163
1228
  targetInstructions: () => [
1164
- new SStore(/*indirect=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 1),
1165
- new Add(/*indirect=*/ 0, /*aOffset=*/ 1, /*bOffset=*/ 2, /*dstOffset=*/ 1).as(Opcode.ADD_8, Add.wireFormat8), // slot++
1229
+ new SStore(/*addressing_mode=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 1),
1230
+ new Add(/*addressing_mode=*/ 0, /*aOffset=*/ 1, /*bOffset=*/ 2, /*dstOffset=*/ 1).as(
1231
+ Opcode.ADD_8,
1232
+ Add.wireFormat8,
1233
+ ), // slot++
1166
1234
  ],
1167
1235
  cleanupInstructions: () => [
1168
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1236
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 3, /*returnOffset=*/ 0).as(
1237
+ Opcode.REVERT_8,
1238
+ Revert.wireFormat8,
1239
+ ),
1169
1240
  ], // revert with empty
1170
1241
  limit: MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
1171
1242
  },
1172
1243
  ],
1173
1244
 
1174
- // EMITUNENCRYPTEDLOG - two configs: minimal (many small logs) and max-size (one large log)
1175
- [Opcode.EMITUNENCRYPTEDLOG]: [
1245
+ // EMITPUBLICLOG - two configs: minimal (many small logs) and max-size (one large log)
1246
+ [Opcode.EMITPUBLICLOG]: [
1176
1247
  {
1177
1248
  label: 'Many empty logs, revert, repeat',
1178
1249
  setup: [
1179
1250
  { offset: 0, value: new Uint32(0n) }, // logSize = 0 fields (minimal)
1180
1251
  { offset: 1, value: new Uint32(0n) }, // revertSize
1181
1252
  ],
1182
- targetInstructions: () => [new EmitUnencryptedLog(/*indirect=*/ 0, /*logSizeOffset=*/ 0, /*logOffset=*/ 1)], // logOffset doesn't matter when size is 0
1253
+ targetInstructions: () => [new EmitPublicLog(/*addressing_mode=*/ 0, /*logSizeOffset=*/ 0, /*logOffset=*/ 1)], // logOffset doesn't matter when size is 0
1183
1254
  cleanupInstructions: () => [
1184
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1255
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(
1256
+ Opcode.REVERT_8,
1257
+ Revert.wireFormat8,
1258
+ ),
1185
1259
  ], // revert with empty
1186
1260
  // Max logs with 0-field content: floor(4096 / 2) = 2048
1187
1261
  limit: Math.floor(FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH / PUBLIC_LOG_HEADER_LENGTH),
@@ -1200,9 +1274,12 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1200
1274
  // value: new Field(0n),
1201
1275
  //})),
1202
1276
  ],
1203
- targetInstructions: () => [new EmitUnencryptedLog(/*indirect=*/ 0, /*logSizeOffset=*/ 0, /*logOffset=*/ 2)], // uses logOffset 2 (uninitialized Field(0))
1277
+ targetInstructions: () => [new EmitPublicLog(/*addressing_mode=*/ 0, /*logSizeOffset=*/ 0, /*logOffset=*/ 2)], // uses logOffset 2 (uninitialized Field(0))
1204
1278
  cleanupInstructions: () => [
1205
- new Revert(/*indirect=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(Opcode.REVERT_8, Revert.wireFormat8),
1279
+ new Revert(/*addressing_mode=*/ 0, /*retSizeOffset=*/ 1, /*returnOffset=*/ 0).as(
1280
+ Opcode.REVERT_8,
1281
+ Revert.wireFormat8,
1282
+ ),
1206
1283
  ], // revert with empty
1207
1284
  limit: 1, // Only 1 max-size log fits
1208
1285
  },
@@ -1219,7 +1296,9 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1219
1296
  value: new Field(Fr.random()), // random field element
1220
1297
  })),
1221
1298
  // Poseidon hash data at M[0..3], write result to M[0:3] (reuse results as next inputs)
1222
- targetInstructions: () => [new Poseidon2(/*indirect=*/ 0, /*inputStateOffset=*/ 0, /*outputStateOffset=*/ 0)],
1299
+ targetInstructions: () => [
1300
+ new Poseidon2(/*addressing_mode=*/ 0, /*inputStateOffset=*/ 0, /*outputStateOffset=*/ 0),
1301
+ ],
1223
1302
  },
1224
1303
  ],
1225
1304
 
@@ -1238,7 +1317,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1238
1317
  })),
1239
1318
  ],
1240
1319
  targetInstructions: () => [
1241
- new Sha256Compression(/*indirect=*/ 0, /*outputOffset=*/ 0, /*stateOffset=*/ 0, /*inputsOffset=*/ 8),
1320
+ new Sha256Compression(/*addressing_mode=*/ 0, /*outputOffset=*/ 0, /*stateOffset=*/ 0, /*inputsOffset=*/ 8),
1242
1321
  ],
1243
1322
  },
1244
1323
  ],
@@ -1250,7 +1329,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1250
1329
  offset: i,
1251
1330
  value: randomWithTag(TypeTag.UINT64),
1252
1331
  })),
1253
- targetInstructions: () => [new KeccakF1600(/*indirect=*/ 0, /*dstOffset=*/ 0, /*inputOffset=*/ 0)],
1332
+ targetInstructions: () => [new KeccakF1600(/*addressing_mode=*/ 0, /*dstOffset=*/ 0, /*inputOffset=*/ 0)],
1254
1333
  },
1255
1334
  ],
1256
1335
 
@@ -1267,7 +1346,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1267
1346
  ],
1268
1347
  targetInstructions: () => [
1269
1348
  new EcAdd(
1270
- /*indirect=*/ 0,
1349
+ /*addressing_mode=*/ 0,
1271
1350
  /*p1XOffset=*/ 0,
1272
1351
  /*p1YOffset=*/ 1,
1273
1352
  /*p1IsInfiniteOffset=*/ 2,
@@ -1292,7 +1371,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1292
1371
  ],
1293
1372
  targetInstructions: () => [
1294
1373
  new ToRadixBE(
1295
- /*indirect=*/ 0,
1374
+ /*addressing_mode=*/ 0,
1296
1375
  /*srcOffset=*/ 0,
1297
1376
  /*radixOffset=*/ 1,
1298
1377
  /*numLimbsOffset=*/ 2,
@@ -1311,7 +1390,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1311
1390
  ],
1312
1391
  targetInstructions: () => [
1313
1392
  new ToRadixBE(
1314
- /*indirect=*/ 0,
1393
+ /*addressing_mode=*/ 0,
1315
1394
  /*srcOffset=*/ 0,
1316
1395
  /*radixOffset=*/ 1,
1317
1396
  /*numLimbsOffset=*/ 2,
@@ -1332,7 +1411,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1332
1411
  ],
1333
1412
  targetInstructions: () => [
1334
1413
  new ToRadixBE(
1335
- /*indirect=*/ 0,
1414
+ /*addressing_mode=*/ 0,
1336
1415
  /*srcOffset=*/ 0,
1337
1416
  /*radixOffset=*/ 1,
1338
1417
  /*numLimbsOffset=*/ 2,
@@ -1359,7 +1438,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1359
1438
  // messageSize = 0
1360
1439
  targetInstructions: () => [
1361
1440
  new DebugLog(
1362
- /*indirect=*/ 0,
1441
+ /*addressing_mode=*/ 0,
1363
1442
  /*levelOffset=*/ 0,
1364
1443
  /*messageOffset=*/ 1,
1365
1444
  /*fieldsOffset=*/ 2,
@@ -1381,7 +1460,7 @@ export const SPAM_CONFIGS: Partial<Record<Opcode, SpamConfig[]>> = {
1381
1460
  // // messageSize = 1000 (large enough to show scaling)
1382
1461
  // targetInstructions: () => [
1383
1462
  // new DebugLog(
1384
- // /*indirect=*/ 0,
1463
+ // /*addressing_mode=*/ 0,
1385
1464
  // /*levelOffset=*/ 0,
1386
1465
  // /*messageOffset=*/ 1,
1387
1466
  // /*fieldsOffset=*/ 2,