MASMGen-0.1.0.0: test/Main.hs
module Main where
import Language.MASMGen.Core
import Language.MASMGen.Types
import Control.Monad.Writer.Lazy
main :: IO ()
main =
let
masm = def { masmProgMode = Mode386
, masmProgOptions = ["casemap :none"]
, masmInclude = [ MASMInclude "\\masm32\\include\\windows.inc"
, MASMInclude "\\masm32\\include\\kernel32.inc"
, MASMInclude "\\masm32\\include\\masm32.inc"
, MASMIncludeLib "\\masm32\\lib\\kernel32.lib"
, MASMIncludeLib "\\masm32\\lib\\masm32.lib"
]
, masmProg = prog
}
prog = do
mkFunc "start" $ do
mov (Reg AX) (Imm 0)
movl (RegIndirect EAX) (Reg EBX)
addw (Reg AX) (Imm 10)
sub (Reg AX) (Imm 100)
mkFunc "testFunc1" $ do
let loop n = if n > 0
then do
mov (Reg EAX) (Imm $ n * n)
loop (n - 1)
else
return ()
loop 20
comment "this is a comment"
label "testLabel"
in
(mapM_ putStrLn) . output . snd . runWriter . produceAsm $ masm