Yhc/API/Bytecode: Difference between revisions
NeilMitchell (talk | contribs) No edit summary |
NeilMitchell (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
{{Yhc}} | |||
On the step towards a full API for the whole compiler, an API for just the bytecode first will probably be desirable. | On the step towards a full API for the whole compiler, an API for just the bytecode first will probably be desirable. |
Revision as of 02:41, 15 January 2006
Part of Yhc |
On the step towards a full API for the whole compiler, an API for just the bytecode first will probably be desirable.
There are two entirely separate lumps in this, the raw bytecode, and the wrappers that make a module file.
Module
Constructor Arity TagNo
type ConstTable = [Const]
type HufByteCode = [HufBC]
Bytecode
There are tree types of bytecode representation:
{{{
- !syntax haskell
data GraphNode = ... data LabeledJumps = ... }}}
Then there are the api's {{{
- !syntax haskell
instance Show GraphNode instance Show ByteCode instance Show ByteCodeHuf instance Show ...
graphToByteCode :: GraphNode -> ByteCode byteCodeToGraph :: ByteCode -> GraphNode byteCodeCompress :: ByteCode -> ByteCodeHuf byteCodeInflate :: ByteCodeHuf -> ByteCode
writeModule :: Module -> FilePath -> IO () readModule :: FilePath -> IO Module
-- do memory and zapping analysis memAnalysis :: a -> a
-- peep hole optimisations peephole :: a -> a }}}