6.1 仮想スタックマシン

Download Report

Transcript 6.1 仮想スタックマシン

第6章 コード生成
6.1
6.2
6.3
6.4
6.5
仮想スタックマシン
機械語
インタプリタ
コード最適化
最終コード生成
6.1 仮想スタックマシン
(1)逆ポーランド記法による計算実行
①識別子のときスタックに積む。
②演算子のときスタック上のデータを取り出して計算す
る。
③通常の演算子のとき、変数ならばその値を演算対象と
する。
④代入のときはスタックトップの値をスタック2番目の
変数に代入する。
③結果をスタックに積む。
変数名
A
B
C
D
値
(2)計算実行例(1)
4
5
3
A
A B C + D * =
変数名
A
B
C
D
値
計算実行例(2)
4
5
3
B
A
B C + D * =
変数名
A
B
C
D
値
計算実行例(3)
4
5
3
C
B
A
C + D * =
変数名
A
B
C
D
値
計算実行例(4)
4
②
5
3
③
B:4
C:5
+
9
①
C
B
A
④
+ D * =
変数名
A
B
C
D
値
計算実行例(5)
4
5
3
D
D
9
A
D * =
変数名
A
B
C
D
値
計算実行例(6)
4
5 ②
3
③
D:3
9
*
27 ④
①
D
9
A
* =
変数名
A
B
C
D
値
27
4
5 ②
3
計算実行例(7)
③
27
A
=
27 ④
①
27
A
=
変数名
A
B
C
D
値
27
4
5
3
計算実行例(8)
27