
dons:
pj:
Hello,
I would like to use nativeCodeGen outside of GHC to generate code from an IR. The IR would be produced by a third party program, not the GHC frontend.
Looking at CVS HEAD I can see that GHC.hs exports plenty of things (for the GHC API I presume), but I can't find anything that lets me input some sort of IR and have ASM in return. Am I missing it somewhere or is there no way to input IR and get ASM in return? If there isn't, is such a feature planned/wanted?
If such a feature isn't planned, I would appreciate any ideas on how to to accomplish the same thing. I have no problems with having a build tree of GHC laying around if that makes things easier. It would be a nice bonus if it made my maintenance burden low.
You could use External Core with GHC, couldn't you?
For example: Your src: $ cat M.hs module M where f = "foo" Compile to Core: $ ghc -fno-code -fext-core M.hs Now edit M.hcr. And compile that to assembly: $ ghc -fasm -c -keep-tmp-files M.hcr And inspect your piping-hot asm ... $ cat ghc17508.s .data .align 4 _module_registered: .long 0 .text .align 4,0x90 .globl __stginit_M_ __stginit_M_: cmpl $0,_module_registered jne .Lc5Y .Lc5Z: movl $1,_module_registered .Lc5Y: addl $4,%ebp jmp *-4(%ebp) .text .align 4,0x90 .globl __stginit_M __stginit_M: jmp __stginit_M_ -- Don