回答編集履歴

2

なんか記憶違い起こしてる気がするので削除

2018/11/21 21:52

投稿

asm
asm

スコア15147

test CHANGED
@@ -12,9 +12,11 @@
12
12
 
13
13
 
14
14
 
15
- 関数の途中ではスタックフレームの開始地点はスタックに格納され、出すのに手間が掛かります。
15
+ ~~関数の途中ではスタックフレームの開始地点はスタックに格納され、出すのに手間が掛かります。
16
16
 
17
+ そのため~~
18
+
17
- そのためローカル変数のアドレスはベースポインタ-定数で表されます。
19
+ ローカル変数のアドレスはベースポインタ-定数で表されます。
18
20
 
19
21
  ベースポインタ-0よりベースポインタ-4の方が小さいので、結果として逆順に見えます。
20
22
 
@@ -24,25 +26,25 @@
24
26
 
25
27
  提示されたソースの場合は引数がないので、概ね
26
28
 
27
- 1. main関数フレームが作成される。
29
+ 1. main関数のスタックフレームが作成される。
28
30
 
29
31
  2. hogeが呼び出される(return先として呼び出した次の位置がスタックに記憶される)
30
32
 
31
- 3. hoge関数フレームが作成される
33
+ 3. hoge関数のスタックフレームが作成される
32
34
 
33
- 4. hoge関数フレームが破棄される
35
+ 4. hoge関数のスタックフレームが破棄される
34
36
 
35
37
  5. returnし、呼び出し位置が破棄される
36
38
 
37
39
  6. hoge1が呼び出される(return先として呼び出した次の位置がスタックに記憶される)
38
40
 
39
- 7. hoge1関数フレームが作成される
41
+ 7. hoge1関数のスタックフレームが作成される
40
42
 
41
- 8. hoge1関数フレームが破棄される
43
+ 8. hoge1関数のスタックフレームが破棄される
42
44
 
43
45
  9. returnし、呼び出し位置が破棄される
44
46
 
45
- 10. main関数フレームが破棄される
47
+ 10. main関数のスタックフレームが破棄される
46
48
 
47
49
 
48
50
 

1

修正

2018/11/21 21:52

投稿

asm
asm

スコア15147

test CHANGED
@@ -59,3 +59,5 @@
59
59
  ---
60
60
 
61
61
  余談ですが、FILOよりもLIFOの方が通り名として一般的です。
62
+
63
+ 余談ついでですが、スタックの成長方向も処理系依存です。[PA-RISCとやらはx86とは逆方向らしい](https://tech.nikkeibp.co.jp/it/article/OPINION/20051018/222943/)