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)
* All the above modules use the code generation monad defined in module Harpy.CodeGenMonad.
These details are provided for information only. No information here is legal advice and should not be used as such.