これがあれば、何が何に対応しているかわかりやすいでしょう。そしてJITコンパイラが大したことないということもわかってもらえると思います。
単純代入:
(HL-9a) putIc (OpCpy, &var[tc[wpc[0]]], &var[tc[wpc[1]]], 0, 0);
(HL-13) putIcX86("8b_%1m0; 89_%0m0;", &var[tc[wpc[0]]], &var[tc[wpc[1]]], 0, 0);
print命令:
(HL-9a) phrCmpPutIc ( 4, "print !!**0;", pc, 0, 1, OpPrint, &e0)
(HL-13) phrCmpPutIcX86( 4, "print !!**0;", pc, 0, 1, sub_print, &e0)
+1する命令:
(HL-9a) putIc (OpAdd1, &var[tc[wpc[0]]], 0, 0, 0);
(HL-13) putIcX86("8b_%0m0; 40; 89_%0m0;", &var[tc[wpc[0]]], 0, 0, 0);
各種二項演算子:
いずれも基本形は以下の通り
(HL-9a) putIc (op, &var[tc[wpc[0]]], &var[tc[wpc[1]]], &var[tc[wpc[3]]], 0);
(HL-13) putIcX86(op, &var[tc[wpc[0]]], &var[tc[wpc[1]]], &var[tc[wpc[3]]], 0);
演算子 (HL-9a) (HL-13)
+ OpAdd "8b_%1m0; 03_%2m0; 89_%0m0;"
- OpSub "8b_%1m0; 2b_%2m0; 89_%0m0;"
* OpMul "8b_%1m0; 0f_af_%2m0; 89_%0m0;"
/ OpDiv "8b_%1m0; 99; f7_%2m7; 89_%0m0;"
% OpMod "8b_%1m0; 99; f7_%2m7; 89_%0m2;"
& OpAnd "8b_%1m0; 23_%2m0; 89_%0m0;"
>> OpShr "8b_%1m0; 8b_%2m1; d3_f8; 89_%0m0;"
== OpCeq "8b_%1m0; 3b_%2m0; 0f_94_c0; 83_e0_01; 89_%0m0;"
!= OpCne "8b_%1m0; 3b_%2m0; 0f_95_c0; 83_e0_01; 89_%0m0;"
< OpClt "8b_%1m0; 3b_%2m0; 0f_9c_c0; 83_e0_01; 89_%0m0;"
>= OpCge "8b_%1m0; 3b_%2m0; 0f_9d_c0; 83_e0_01; 89_%0m0;"
<= OpCle "8b_%1m0; 3b_%2m0; 0f_9e_c0; 83_e0_01; 89_%0m0;"
> OpCgt "8b_%1m0; 3b_%2m0; 0f_9f_c0; 83_e0_01; 89_%0m0;"
ループ命令:
(HL-9a) putIc (OpLop, &var[tc[wpc[4]]], &var[tc[wpc[0]]], &var[tc[wpc[3]]], 0);
(HL-13) putIcX86("8b_%1m0; 40; 89_%1m0; 3b_%2m0; 0f_8c_%0l;", &var[tc[wpc[4]]], &var[tc[wpc[0]]], &var[tc[wpc[3]]], 0);