diff options
Diffstat (limited to 'ABC/Machine/Driver.icl')
-rw-r--r-- | ABC/Machine/Driver.icl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/ABC/Machine/Driver.icl b/ABC/Machine/Driver.icl new file mode 100644 index 0000000..29b42ca --- /dev/null +++ b/ABC/Machine/Driver.icl @@ -0,0 +1,25 @@ +implementation module ABC.Machine.Driver + +import StdEnv + +import ABC.Machine + +boot :: ([Instruction], [Desc]) -> State +boot (prog,descs) + = { astack = as_init + , bstack = bs_init + , cstack = cs_init + , graphstore = gs_init + , descstore = ds_init descs + , pc = pc_init + , program = ps_init prog + , io = io_init + } + +fetch_cycle :: State -> State +fetch_cycle st=:{pc,program} +| pc_end pc = st +| otherwise = fetch_cycle (currinstr {st & pc=pc`}) +where + pc` = pc_next pc + currinstr = ps_get pc program |