The package contains the following components:
- An x86 assembler. We provide both low-level code generation in
module Harpy.X86CodeGen as well as a (slightly) higher-level
implementation in module Harpy.X86Assembler, which figures out
addressing modes based on an instruction's operand types.
- An x86 disassembler which knows most of the opcodes available on
modern x86 processors and can display its output both in the style
used in Intel documents an in AT&T style, like the GNU tools. The
disassmbler can be found in module Harpy.X86Disassembler.
- Some abstractions over the abovementioned code generation modules,
such as automatic label management and code generation
combinators (for if-then-else statements, while-loops, functions)
(module Harpy.X86CGCombinators).
- All the above modules use the code generation monad defined in module
Harpy.CodeGenMonad.
|