質問編集履歴
3
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
int = 4B
|
35
35
|
なので、変数が違えば、8,12,16などの値も変わるんですか?
|
36
36
|
|
37
|
-
4)、前回の質問
|
37
|
+
4)、前回の質問のアセンブリを載せます。文字列が見当たりません。文字列のポインタを代入しているような命令も見当たらないのですが・・・
|
38
38
|
```アセンブリ
|
39
39
|
0x555555554690 <main> push %rbp │
|
40
40
|
│0x555555554691 <main+1> mov %rsp,%rbp │
|
2
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
の2通りでしょうか??
|
14
14
|
下の方の場合なんですが・・・
|
15
15
|
1)、**スタック領域につまれる順序が決まっていないなら、レジスタに代入したいポインタを探すのが困難ですよね?**
|
16
|
+
(つまり・・・スタック → レジスタに入れるとき、スタックの場所がわからないということです。)
|
16
17
|
順番を定めた方がよいのではないかと思います。
|
17
18
|
(配列や構造体は除く)
|
18
19
|
(前回の質問では、スタック領域に入っている値がどのアドレスに入ってるかがまるで分かりませんでした。)
|
1
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,6 +20,9 @@
|
|
20
20
|
2)、前回の質問でも、出てきたのですが、システムコールを呼ぶ時のパラメータをいれるレジスタは必ず固定なのでしょうか??
|
21
21
|
「どの値をどのレジスタに代入しなくてはならない」というのは決まっているのでしょうか?
|
22
22
|
|
23
|
+
raxやeaxはそれぞれ、64bit, 32bitですが、コンパイラが出力するレジスタは混合して出力されます。
|
24
|
+
raxとeaxの使い分けはどのようにすれば良いのでしょうか?
|
25
|
+
|
23
26
|
3)、前回の質問を見てもらえば分かるのですが、
|
24
27
|
mov 8(%rsp), %rbx
|
25
28
|
mov 12(%rsp), %rcx
|
@@ -54,4 +57,11 @@
|
|
54
57
|
アセンブリ言語初心者です。
|
55
58
|
お願いします。
|
56
59
|
|
57
|
-
Linux 64bit, intel CPU, GCCコンパイラです。
|
60
|
+
Linux 64bit, intel CPU, GCCコンパイラです。
|
61
|
+
|
62
|
+
[追記]
|
63
|
+
毎回、C言語のファイルを逆アセンブルすると、出てくるんですが、
|
64
|
+
上記のアセンブリにも出てきていますね。
|
65
|
+
|
66
|
+
call命令の前後なのですが、**mov $0x0,%eax**・・・これですね。
|
67
|
+
EAXレジスタを0にしているようですが、なぜこんなことをする必要性があるのでしょうか??
|