diff options
Diffstat (limited to 'snug-clean/src/Snug/Compile/Simulate.dcl')
-rw-r--r-- | snug-clean/src/Snug/Compile/Simulate.dcl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/snug-clean/src/Snug/Compile/Simulate.dcl b/snug-clean/src/Snug/Compile/Simulate.dcl new file mode 100644 index 0000000..a61d631 --- /dev/null +++ b/snug-clean/src/Snug/Compile/Simulate.dcl @@ -0,0 +1,25 @@ +definition module Snug.Compile.Simulate + +from Control.Applicative import class Applicative, class pure, class <*> +from Control.Monad import class Monad +from Control.Monad.Identity import :: Identity, instance Functor Identity, + instance Monad Identity, instance pure Identity, instance <*> Identity +from Control.Monad.State import :: State, :: StateT, + instance Functor (StateT s m), instance Monad (StateT s m), + instance pure (StateT s m), instance <*> (StateT s m) +from Data.Functor import class Functor + +from MIPS.MIPS32 import :: Instruction, :: Label +from Snug.Syntax import :: BasicValue + +:: Simulator a :== State SimulationState a + +:: SimulationState + +simulate :: !(Simulator a) -> [Instruction] + +buildCons :: !Label !Int -> Simulator () + +pushBasicValue :: !BasicValue -> Simulator () + +indirectAndEval :: Simulator () |