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

回答編集履歴

3

追記

2017/07/05 14:54

投稿

strike1217
strike1217

スコア651

answer CHANGED
@@ -23,8 +23,30 @@
23
23
  movl 16(%rbp), %edx
24
24
  movl -16(%rbp), %edx
25
25
 
26
- この2つって全く意味は同じですかね??
26
+ この2つって全く意味は同じなんですかね??
27
27
  どうも私の持っている本の中では全く同じなようなんですが・・・
28
28
  上は足していますが、下は引いていますよね・・・
29
29
 
30
- わけがわからない・・・・
30
+ わけがわからない・・・・
31
+
32
+ ________
33
+ 追記2
34
+
35
+ [アセンブラに手を出してみる](http://qiita.com/edo_m18/items/83c63cd69f119d0b9831)
36
+ ここによりますと、関数の呼び出し、システムコールに使用されるレジスタは決まっているようですね。
37
+
38
+ ```
39
+ The number of the syscall has to be passed in register rax.
40
+
41
+ rdi - used to pass 1st argument to functions
42
+ rsi - used to pass 2nd argument to functions
43
+ rdx - used to pass 3rd argument to functions
44
+ rcx - used to pass 4th argument to functions
45
+ r8 - used to pass 5th argument to functions
46
+ r9 - used to pass 6th argument to functions
47
+
48
+ A system-call is done via the syscall instruction. The kernel destroys registers rcx and r11.
49
+ ```
50
+
51
+ なるほど!!
52
+ rax や eaxの使い分けについては未だ不明のままです。><

2

修正

2017/07/05 14:54

投稿

strike1217
strike1217

スコア651

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  浮動少数点数の演算やポインタは、8の倍数に変化するようです。
18
18
 
19
19
  int型は32bitなので、そのまま代入できますが、char型の場合は1Bなので、1つのスタックフレームに4つ入るそうです。
20
- 必ずしも4の倍数の値が入ると決まっているわけではないようです。
20
+ 必ずしも4の倍数と決まっているわけではないようです。
21
21
 
22
22
  ただ、符号の問題がでてきました。
23
23
  movl 16(%rbp), %edx

1

追記

2017/07/05 14:43

投稿

strike1217
strike1217

スコア651

answer CHANGED
@@ -6,4 +6,25 @@
6
6
  おそらく、システムコール番号を代入するのにアキュミュレータが使用されるようなので、あらかじめ0にしていた方が安全なのだと思われます。
7
7
  (コンパイラがcall後に何がくるのか分からないので、システムコール番号に変な値が入らないように保証するための機能だと思われます。自動的に入るようです。)
8
8
 
9
- 間違っていたらすいません。
9
+ 間違っていたらすいません。
10
+
11
+ ___________________
12
+ 追記
13
+
14
+ 1、2番が一番難しいんですが・・・
15
+
16
+ 3番については、4の倍数になっているのは、32bitだからですね。
17
+ 浮動少数点数の演算やポインタは、8の倍数に変化するようです。
18
+
19
+ int型は32bitなので、そのまま代入できますが、char型の場合は1Bなので、1つのスタックフレームに4つ入るそうです。
20
+ 必ずしも4の倍数の値が入ると決まっているわけではないようです。
21
+
22
+ ただ、符号の問題がでてきました。
23
+ movl 16(%rbp), %edx
24
+ movl -16(%rbp), %edx
25
+
26
+ この2つって全く意味は同じ何ですかね??
27
+ どうも私の持っている本の中では全く同じなようなんですが・・・
28
+ 上は足していますが、下は引いていますよね・・・
29
+
30
+ わけがわからない・・・・