summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_interface.lem
diff options
context:
space:
mode:
authorKathy Gray2015-02-27 14:52:13 +0000
committerKathy Gray2015-02-27 14:52:13 +0000
commitef0b2daa613c81f2ea42168023fd70e6f6dee187 (patch)
treeacf2c3de90b088cbb1e9326e2d3011313bc906c4 /src/lem_interp/interp_interface.lem
parentad0d6ce116355702467845f42a24f672fe2a141f (diff)
Fix a series of errors leading to the first ARM instruction not running.
Including: Correct loss of constraints between declared constraints, pattern constraints and expression body constraints Handle insertion of dependent parameters in the case of unit parameters Add a case to how ifields are translated to permit numbers as well as bits and bitvectors Expand interpreter to actually handle user-defined functions on the left had side of the assignment expression.
Diffstat (limited to 'src/lem_interp/interp_interface.lem')
-rw-r--r--src/lem_interp/interp_interface.lem2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem
index ae29a2e9..3b83dd89 100644
--- a/src/lem_interp/interp_interface.lem
+++ b/src/lem_interp/interp_interface.lem
@@ -349,12 +349,14 @@ val initial_instruction_state : context -> string -> list register_value -> inst
(*Type representint the constructor parameters in instruction, other is a type not representable externally*)
type instr_parm_typ =
| Bit (*A single bit, represented as a one element Bitvector as a value*)
+ | Range of maybe int (*Internall represented as a number, externally as a bitvector of length int *)
| Other (*An unrepresentable type, will be represented as Unknown in instruciton form *)
| Bvector of maybe int (* A bitvector type, with length when statically known *)
let instr_parm_typEqual ip1 ip2 = match (ip1,ip2) with
| (Bit,Bit) -> true
| (Other,Other) -> true
+ | (Range i1,Range i2) -> i1 = i2
| (Bvector i1,Bvector i2) -> i1 = i2
| _ -> false
end