diff --git a/src/Mima/Asm/Phase2.hs b/src/Mima/Asm/Phase2.hs index b6e2303..0dfe285 100644 --- a/src/Mima/Asm/Phase2.hs +++ b/src/Mima/Asm/Phase2.hs @@ -9,12 +9,14 @@ import Mima.Asm.Phase2.Subphase3 import Mima.Asm.Phase2.Subphase4 import Mima.Asm.Phase2.Subphase5 import Mima.Asm.Weed +import qualified Mima.Vm.Metadata as Vm import qualified Mima.Vm.State as Vm -phase1To2 :: P1.Phase1 s -> Weed (WeedError s) Vm.MimaState +phase1To2 :: P1.Phase1 s -> Weed (WeedError s) (Vm.MimaState, Vm.Metadata) phase1To2 phase1 = do s1 <- subphase1 phase1 s2 <- subphase2 s1 - (s3, labelMap, _) <- subphase3 s2 + (s3, labelMap, metadata) <- subphase3 s2 s4 <- subphase4 labelMap s3 - subphase5 s4 + state <- subphase5 s4 + pure (state, metadata) diff --git a/src/Mima/Asm/Phase2/Subphase5.hs b/src/Mima/Asm/Phase2/Subphase5.hs index 93cebe2..6c92f24 100644 --- a/src/Mima/Asm/Phase2/Subphase5.hs +++ b/src/Mima/Asm/Phase2/Subphase5.hs @@ -18,7 +18,7 @@ type StateS5 = Vm.MimaState type WeedS5 s = StateT StateS5 (Weed (WeedError s)) wordToVmWord :: MimaWord 'S4 s -> Vm.MimaWord -wordToVmWord (WordLocation addr) = fromIntegral addr +wordToVmWord (WordLocation addr) = Vm.largeValueToWord addr wordToVmWord (WordRaw word) = word addRegister :: RegisterDirective 'S4 s -> WeedS5 s ()