module Asm where import Harpy.X86CodeGen import Harpy.X86Assembler import Foreign -- epilogue/prologue stuff gfunc x = gprologue >> x >> gepilogue gprologue = do push ebp mov ebp esp gepilogue = do pop eax mov esp ebp pop ebp ret -- actual operations to be done -- because all of these end up -- pushing the result to the stack -- at the very end, our gepilogue -- will pop whatever's there and mov -- into eax gadd = do pop ebx pop eax add eax ebx push eax gsub = do pop ebx pop eax sub eax ebx push eax gmul = do pop ebx pop eax imul InPlace eax ebx push eax gdivmod = do pop ebx pop eax mov edx eax sar edx (31 :: Word8) idiv ebx gdiv = do gdivmod push eax gconst n = do push (fromIntegral n :: Word32)