import Data.List ( intersperse, groupBy )
import IO ( Handle )
import Maybe ( isJust )
+import Data.Char ( chr )
pprCmms :: [Cmm] -> SDoc
pprCmms cmms = pprCode CStyle (vcat (intersperse separator $ map ppr cmms))
-- ;
CmmNop -> semi
- -- // text
+ -- // text
CmmComment s -> text "//" <+> ftext s
-- reg = expr;
CmmReg reg -> ppr reg
CmmRegOff reg off -> parens (ppr reg <+> char '+' <+> int off)
CmmMachOp mop args -> genMachOp mop args
- CmmPicBaseReg -> text "PIC_BASE_REG"
- e -> parens (pprExpr e)
genMachOp :: MachOp -> [CmmExpr] -> SDoc
genMachOp mop args
MO_Xor _ -> Just $ char '^'
MO_Not _ -> Just $ char '~'
MO_S_Neg _ -> Just $ char '-' -- there is no unsigned neg :)
- MO_Not _ -> Just $ char '~'
_ -> Nothing
-- --------------------------------------------------------------------------
CmmUninitialised i -> nest 4 $ text "I8" <> brackets (int i)
CmmAlign i -> nest 4 $ text "align" <+> int i
CmmDataLabel clbl -> pprCLabel clbl <> colon
- CmmString s' -> nest 4 $ text "I8[]" <+> doubleQuotes (text s')
+ CmmString s' -> nest 4 $ text "I8[]" <+>
+ doubleQuotes (text (map (chr.fromIntegral) s'))
-- --------------------------------------------------------------------------
-- Registers, whether local (temps) or global
GCEnter1 -> ptext SLIT("stg_gc_enter_1")
GCFun -> ptext SLIT("stg_gc_fun")
BaseReg -> ptext SLIT("BaseReg")
-
- _ -> panic $ "PprCmm.pprGlobalReg: unknown global reg"
+ PicBaseReg -> ptext SLIT("PicBaseReg")
-- --------------------------------------------------------------------------
-- data sections