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;
    }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…