diff options
author | Robert Sloan <varomodt@gmail.com> | 2016-04-04 19:38:00 -0400 |
---|---|---|
committer | Robert Sloan <varomodt@gmail.com> | 2016-06-22 13:43:15 -0400 |
commit | 366b62f01f7931b91bb6b7671d2e481ab0585075 (patch) | |
tree | 493d50e94bb0d94dde970a1431b66a11173b13df /src/Assembly/QhasmEvalCommon.v | |
parent | 55c24be6c27a807cfdd8c4ac392bbd288819622d (diff) |
Fix Qhasm and AlmostQhasm with new State machinery
Diffstat (limited to 'src/Assembly/QhasmEvalCommon.v')
-rw-r--r-- | src/Assembly/QhasmEvalCommon.v | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/Assembly/QhasmEvalCommon.v b/src/Assembly/QhasmEvalCommon.v index ec54fdc47..009bcbd1e 100644 --- a/src/Assembly/QhasmEvalCommon.v +++ b/src/Assembly/QhasmEvalCommon.v @@ -82,10 +82,10 @@ Definition evalOperation (o: Operation) (state: State): option State := | Some v0 => match c with | const32 v1 => setReg r (evalBinOp b v0 v1) state - | _ => None end | None => None end + | OpReg32Reg32 b r0 r1 => match (getReg r0 state) with | Some v0 => @@ -95,6 +95,7 @@ Definition evalOperation (o: Operation) (state: State): option State := end | None => None end + | RotReg32 b r m => match (getReg r state) with | Some v0 => setReg r (evalRotOp b v0 m) state @@ -106,10 +107,10 @@ Definition evalOperation (o: Operation) (state: State): option State := | Some v0 => match c with | const64 v1 => setReg r (evalBinOp b v0 v1) state - | _ => None end | None => None end + | OpReg64Reg64 b r0 r1 => match (getReg r0 state) with | Some v0 => @@ -120,25 +121,9 @@ Definition evalOperation (o: Operation) (state: State): option State := | None => None end - | OpReg128Constant b r c => - match (getReg r state) with - | Some v0 => - match c with - | const128 v1 => setReg r (evalBinOp b v0 v1) state - | _ => None - end - | None => None - end - | OpReg128Reg128 b r0 r1 => - match (getReg r0 state) with - | Some v0 => - match (getReg r1 state) with - | Some v1 => setReg r0 (evalBinOp b v0 v1) state - | _ => None - end - | None => None - end - end. + (* Don't implement the 128-wide ops yet: + I think x86 doesn't do them like this *) + | _ => None end. Definition evalAssignment (a: Assignment) (state: State): option State := match a with @@ -151,6 +136,7 @@ Definition evalAssignment (a: Assignment) (state: State): option State := end | None => None end + | Assign32Stack16 r s i => match (getReg r state) with | Some v0 => @@ -329,7 +315,6 @@ Definition evalAssignment (a: Assignment) (state: State): option State := | Some v0 => match c with | const32 v1 => setReg r v1 state - | _ => None end | None => None end |