1- use serde:: { Deserialize , Serialize } ;
2-
31use super :: decode:: Instruction ;
42use super :: mem:: { MemoryBuilder , MemoryValue } ;
53use super :: vm_import:: TraceEntry ;
6-
7- // TODO(spapini): Move this:
8- #[ derive( Clone , Copy , Debug , Default , Serialize , Deserialize ) ]
9- pub struct VmState {
10- pub pc : u32 ,
11- pub ap : u32 ,
12- pub fp : u32 ,
13- }
14- impl From < TraceEntry > for VmState {
15- fn from ( entry : TraceEntry ) -> Self {
16- Self {
17- pc : entry. pc as u32 ,
18- ap : entry. ap as u32 ,
19- fp : entry. fp as u32 ,
20- }
21- }
22- }
4+ use crate :: utils:: types:: CasmState ;
235
246// TODO(yuval/alonT): consider making the indexing mechanism more explicit in the code).
257/// The instructions usage in the input, split to Stwo opcodes.
@@ -30,44 +12,44 @@ impl From<TraceEntry> for VmState {
3012/// Note: for the flag "fp/ap", true means fp-based and false means ap-based.
3113#[ derive( Debug , Default ) ]
3214pub struct Instructions {
33- pub initial_state : VmState ,
34- pub final_state : VmState ,
15+ pub initial_state : CasmState ,
16+ pub final_state : CasmState ,
3517
3618 /// ret.
37- pub ret : Vec < VmState > ,
19+ pub ret : Vec < CasmState > ,
3820
3921 /// ap += imm.
40- pub add_ap : Vec < VmState > ,
22+ pub add_ap : Vec < CasmState > ,
4123
4224 /// jump rel imm.
4325 /// Flags: ap++?.
44- pub jmp_rel_imm : [ Vec < VmState > ; 2 ] ,
26+ pub jmp_rel_imm : [ Vec < CasmState > ; 2 ] ,
4527
4628 /// jump abs [fp/ap + offset].
4729 /// Flags: fp/ap, ap++?.
48- pub jmp_abs : [ Vec < VmState > ; 4 ] ,
30+ pub jmp_abs : [ Vec < CasmState > ; 4 ] ,
4931
5032 /// call rel imm.
51- pub call_rel_imm : Vec < VmState > ,
33+ pub call_rel_imm : Vec < CasmState > ,
5234
5335 /// call abs [fp/ap + offset].
5436 /// Flags: fp/ap.
55- pub call_abs : [ Vec < VmState > ; 2 ] ,
37+ pub call_abs : [ Vec < CasmState > ; 2 ] ,
5638
5739 /// jump rel imm if [fp/ap + offset] != 0.
5840 /// Flags: fp/ap, taken?, ap++?.
59- pub jnz_imm : [ Vec < VmState > ; 8 ] ,
41+ pub jnz_imm : [ Vec < CasmState > ; 8 ] ,
6042
6143 /// - [fp/ap + offset0] = [fp/ap + offset2]
62- pub mov_mem : Vec < VmState > ,
44+ pub mov_mem : Vec < CasmState > ,
6345
6446 /// - [fp/ap + offset0] = [[fp/ap + offset1] + offset2]
65- pub deref : Vec < VmState > ,
47+ pub deref : Vec < CasmState > ,
6648
6749 /// - [fp/ap + offset0] = imm
68- pub push_imm : Vec < VmState > ,
50+ pub push_imm : Vec < CasmState > ,
6951
70- pub generic : Vec < VmState > ,
52+ pub generic : Vec < CasmState > ,
7153}
7254impl Instructions {
7355 pub fn from_iter ( mut iter : impl Iterator < Item = TraceEntry > , mem : & mut MemoryBuilder ) -> Self {
@@ -86,8 +68,8 @@ impl Instructions {
8668 res
8769 }
8870
89- fn push_instr ( & mut self , mem : & mut MemoryBuilder , state : VmState ) {
90- let VmState { ap, fp, pc } = state;
71+ fn push_instr ( & mut self , mem : & mut MemoryBuilder , state : CasmState ) {
72+ let CasmState { ap, fp, pc } = state;
9173 let instruction = mem. get_inst ( pc) ;
9274 let instruction = Instruction :: decode ( instruction) ;
9375 match instruction {
0 commit comments