INNER CODE UNIT · Rust
finalize_trace
GuildOfWeavers/distaff · src/processor/decoder/mod.rs:253
pub fn finalize_trace(&mut self) {
// don't increase counter for void instructions
let last_op_count = self.op_counter[self.step];
fill_register(&mut self.op_counter, self.step + 1, last_op_count);
// set all bit registers to 1 to indicate NOOP operation
for register in self.cf_op_bits.iter_mut() { fill_register(register, self.step, field::ONE); }
for register in self.ld_op_bits.iter_mut() { fill_register(register, self.step, field::ONE); }
for register in self.hd_op_bits.iter_mut() { fill_register(register, self.step, field::ONE); }
// for sponge and stack registers, just copy the value of the last state of the register
for register in self.sponge_trace.iter_mut() { fill_register(register, self.step + 1, register[self.step]); }
for register in self.ctx_stack.iter_mut() { fill_register(register, self.step + 1, register[self.step]); }
for register in self.loop_stack.iter_mut() { fill_register(register, self.step + 1, register[self.step]); }
// update the step pointer to point to the last step
self.step = self.trace_length() - 1;
}