Bare Bones Backend / Assembly Intermediate Representation

The B3 compiler converts SSA procedures into efficient machine code by first converting them to a form that reveals machine details, like registers. This form is called Assembly Intermediate Representation, or just Air for short.

Air is designed around JavaScriptCore's existing MacroAssembler. Air has Inst objects, which each describe some method call to the MacroAssembler: an Inst's opcode indicates which method name to use and its args indicate the arguments to pass to that method. We use code generation to create a massive switch statement that turns the reflective Insts into actual calls to MacroAssembler. Consequently, we can "add" new instructions to Air usually by just editing the ​AirOpcode.opcodes file.

FIXME: Add more text here.