| [0] | [1] | [2] | [3] | [4] | |
| AEs_Op0(0) | n | AEs_Op0Nop(0) | | | 何もしない命令です。nは命令長で、(n+1)*5が総命令長になります。 |
| AEs_Op0(0) | n | AEs_Op0DefLb(1) | lb | | lbはラベル番号です。命令長nは1以上を指定することもできますが、普通は0にします。 |
| AEs_Op0(0) | n | AEs_Op0Jmp(2) | lb | | 無条件分岐命令です。これも通常はn=0です。 |
| AEs_Op0(0) | n | AEs_Op0Jcc(3) | lb | | 条件分岐命令です。条件は先行するCMP命令で指示します。これも通常はn=0です。 |
| AEs_Op0(0) | n | AEs_Op0Ent(4) | | | 関数宣言開始の命令です。 |
| AEs_Op0(0) | n | AEs_Op0Tet(5) | | | 関数抜ける命令です。 |
| AEs_Op0(0) | n | AEs_Op0SysFn(6) | retVar | funcPtr | システム関数呼び出し(普通の関数)。詳細後述。 |
| AEs_Op0(0) | n | AEs_Op0SysFnP(7) | retVar | funcPtr | システム関数呼び出し(純関数)。詳細後述。 |
| | | | | |
| AEs_OpVoid(2) | var | 0 | 0 | 0 | 指定した変数の値をこの先参照しない(=値が壊れてもよい)という情報を表します。 |
| AEs_OpSetCc(3) | var | 0 | 0 | 0 | 先行するCMP命令の結果に応じてvarに0か1を代入します。 |
| AEs_OpCpy(4) | v0 | v1 | 0 | 0 | v0 = v1; |
| AEs_OpNeg(5) | v0 | v1 | 0 | 0 | v0 = - v1; |
| AEs_OpArySet(6) | 0 | v0 | v1 | v2 | v0[v1] = v2; |
| AEs_OpAryGet(7) | v0 | v1 | v2 | 0 | v0 = v1[v2]; |
| AEs_OpCmpEq(8) | 0 | v0 | v1 | 0 | CMP(v0, v1); |
| AEs_OpCmpNe(9) | 0 | v0 | v1 | 0 | CMP(v0, v1); |
| AEs_OpCmpLt(10) | 0 | v0 | v1 | 0 | CMP(v0, v1); |
| AEs_OpCmpGe(11) | 0 | v0 | v1 | 0 | CMP(v0, v1); |
| AEs_OpCmpLe(12) | 0 | v0 | v1 | 0 | CMP(v0, v1); |
| AEs_OpCmpGt(13) | 0 | v0 | v1 | 0 | CMP(v0, v1); |
| AEs_OpCmpRnz(14) | 0 | 0 | 0 | 0 | CMP(v0, v1); |
| AEs_OpAdd(16) | v0 | v1 | v2 | 0 | v0 = v1 + v2; |
| AEs_OpSub(17) | v0 | v1 | v2 | 0 | v0 = v1 - v2; |
| AEs_OpMul(18) | v0 | v1 | v2 | 0 | v0 = v1 * v2; |
| AEs_OpDiv(19) | v0 | v1 | v2 | 0 | v0 = v1 / v2; |
| AEs_OpMod(20) | v0 | v1 | v2 | 0 | v0 = v1 % v2; |
| AEs_OpAnd(21) | v0 | v1 | v2 | 0 | v0 = v1 & v2; |
| AEs_OpShr(22) | v0 | v1 | v2 | 0 | v0 = v1 >> v2; |
| AEs_OpM64s(23) | v0 | v1 | v2 | v3 | v0 = ((AInt64) v1 * (AInt64) v2) >> v3; |