8fc69e43a1a065f32988cc61fa2a407a4f6c271f
[WebKit-https.git] / Websites / webkit.org / docs / b3 / assembly-intermediate-representation.html
1 <html>
2   <head>
3     <title>Assembly Intermediate Representation</title>
4     <link rel="stylesheet" type="text/css" href="style.css">
5   </head>
6   <body>
7     <h1><a href="index.html">Bare Bones Backend</a> / Assembly Intermediate Representation</h1>
8     <p>The B3 compiler converts SSA procedures into efficient machine code by first converting
9       them to a form that reveals machine details, like registers. This form is called Assembly
10       Intermediate Representation, or just Air for short.</p>
11
12     <p>Air is designed around JavaScriptCore's existing MacroAssembler. Air has Inst objects,
13       which each describe some method call to the MacroAssembler: an Inst's opcode indicates
14       which method name to use and its args indicate the arguments to pass to that method. We
15       use code generation to create a massive switch statement that turns the reflective Insts
16       into actual calls to MacroAssembler. Consequently, we can "add" new instructions to Air
17       usually by just editing the â€‹AirOpcode.opcodes file.</p>
18
19     <p><a href="https://bugs.webkit.org/show_bug.cgi?id=153668">FIXME: Add more text here.</a></p>
20   </body>
21 </html>
22