teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追記

2017/07/04 09:10

投稿

strike1217
strike1217

スコア651

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

追記

2017/07/04 09:10

投稿

strike1217
strike1217

スコア651

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

追記

2017/07/04 09:03

投稿

strike1217
strike1217

スコア651

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にしているようですが、なぜこんなことをする必要性があるのでしょうか??