aboutsummaryrefslogtreecommitdiff
path: root/src/Assembly/QhasmEvalCommon.v
diff options
context:
space:
mode:
authorGravatar Robert Sloan <varomodt@gmail.com>2016-04-04 19:38:00 -0400
committerGravatar Robert Sloan <varomodt@gmail.com>2016-06-22 13:43:15 -0400
commit366b62f01f7931b91bb6b7671d2e481ab0585075 (patch)
tree493d50e94bb0d94dde970a1431b66a11173b13df /src/Assembly/QhasmEvalCommon.v
parent55c24be6c27a807cfdd8c4ac392bbd288819622d (diff)
Fix Qhasm and AlmostQhasm with new State machinery
Diffstat (limited to 'src/Assembly/QhasmEvalCommon.v')
-rw-r--r--src/Assembly/QhasmEvalCommon.v29
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