もっとシンプルなものにしよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
- | - | | - | ! | - | ! | | | | ! !
utility Hoge { static void func() { int a; // R01 int b; // R02 { int c; // R03 } int d; // R02 { int e; // R03 } d = (a + b) * d; // (a + b)が一時変数としてR03に格納される // R03 = a + b; // R02 = R03 * R02; } };
1 2 3 4 5 6 7 8 9 10 11 12 13
- | | | | | - | | ! !
pod Vector3 { float x; float y; float z; void func(float addValue) { // R01 : this // R02 : addValue } }
1 2 3 4 5 6 7 8
- | - | ! !
utility Hoge { static int GetOne() { return 1; // R00 = 1 } };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- | | !
0: void func() 1:{ 2: int i = 3; 3: i = i + 4; 4:} # 命令コード Instruction: LOADC R01 0x0000 LOADC R02 0x0004 ADDI32 R01 R01 R02 RETURN # ローカル変数のレジスタマッピング情報 RegisterMap: R01: L2 i # コンパイル時に確定する定数のテーブル ConstantTable: 0x0000: 3 0x0004: 4