blob: 29b42ca4fdfdf46aae128bf380db860ac2a92e71 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
|