質問編集履歴

3

追記

2017/07/04 09:10

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
 
72
72
 
73
- 4)、前回の質問をダンプしてみしたが、文字列が見当たりません。文字列のポインタを代入しているような命令も見当たらないのですが・・・
73
+ 4)、前回の質問のアセンブリ載せす。文字列が見当たりません。文字列のポインタを代入しているような命令も見当たらないのですが・・・
74
74
 
75
75
  ```アセンブリ
76
76
 

2

追記

2017/07/04 09:10

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -27,6 +27,8 @@
27
27
  下の方の場合なんですが・・・
28
28
 
29
29
  1)、**スタック領域につまれる順序が決まっていないなら、レジスタに代入したいポインタを探すのが困難ですよね?**
30
+
31
+ (つまり・・・スタック → レジスタに入れるとき、スタックの場所がわからないということです。)
30
32
 
31
33
  順番を定めた方がよいのではないかと思います。
32
34
 

1

追記

2017/07/04 09:03

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -39,6 +39,12 @@
39
39
  2)、前回の質問でも、出てきたのですが、システムコールを呼ぶ時のパラメータをいれるレジスタは必ず固定なのでしょうか??
40
40
 
41
41
  「どの値をどのレジスタに代入しなくてはならない」というのは決まっているのでしょうか?
42
+
43
+
44
+
45
+ raxやeaxはそれぞれ、64bit, 32bitですが、コンパイラが出力するレジスタは混合して出力されます。
46
+
47
+ raxとeaxの使い分けはどのようにすれば良いのでしょうか?
42
48
 
43
49
 
44
50
 
@@ -111,3 +117,17 @@
111
117
 
112
118
 
113
119
  Linux 64bit, intel CPU, GCCコンパイラです。
120
+
121
+
122
+
123
+ [追記]
124
+
125
+ 毎回、C言語のファイルを逆アセンブルすると、出てくるんですが、
126
+
127
+ 上記のアセンブリにも出てきていますね。
128
+
129
+
130
+
131
+ call命令の前後なのですが、**mov $0x0,%eax**・・・これですね。
132
+
133
+ EAXレジスタを0にしているようですが、なぜこんなことをする必要性があるのでしょうか??