1 RA (0, -1)

学籍番号
学年
実行時環境
年
氏名
(7/20〆切)
レポート課題
1. 図 1 に示す原始プログラムの下線部分に対応するアセンブリコードを図 2 に記入せよ。
また、図 1 の地点①まで実行したときの Dseg およびフレームポインタ(FP), ブロックポ
インタ(BP)の状態を表 1 左欄とする。このとき、図 1 の地点②まで実行したときの (func
内から見た) Dseg, FP, BP の状態を表 1 右欄に記入せよ。ただし、関数への引数は値渡し
とする。
main () {
int n, i=5, j=10; ①
n = func (i, j);
}
int func (int x, int y) {
int z;
z = y - x; ②
return z;
}
0 START
11 ASSGN
1 PUSHI 5
12 REMOVE
2 POP (0, 2)
13 HALT
3 PUSHI 10
14 PUSHI (0, 1)
4 POP (0, 3)
図 1 原始プログラム
①
15 PUSH (0, -3)
5 PUSHI (0, 1)
16 PUSH (0, -4)
6
17 SUB
7
18 ASSGN
8
19 REMOVE
9
20
10
21
②
図 2 アセンブリコード
表 1 Dseg および FP, BP の状態
地点①実行時
変数名
地点②実行時
相対番地
実番地
値
DL
RA
(0, -2)
(0, -1)
0
1
-1
-1
SL
(0, 0)
2
n
i
j
(0, 1)
(0, 2)
(0, 3)
FP
0
変数名
相対番地
実番地
値
0
1
-1
-1
-1
DL
RA
SL
2
-1
3
4
5
5
10
n
i
j
3
4
5
6
7
8
9
10
11
5
10
BP
2
FP
BP