回答編集履歴

3

追記

2017/07/05 14:54

投稿

strike1217
strike1217

スコア651

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
 
50
50
 
51
- この2つって全く意味は同じですかね??
51
+ この2つって全く意味は同じなんですかね??
52
52
 
53
53
  どうも私の持っている本の中では全く同じなようなんですが・・・
54
54
 
@@ -57,3 +57,47 @@
57
57
 
58
58
 
59
59
  わけがわからない・・・・
60
+
61
+
62
+
63
+ ________
64
+
65
+ 追記2
66
+
67
+
68
+
69
+ [アセンブラに手を出してみる](http://qiita.com/edo_m18/items/83c63cd69f119d0b9831)
70
+
71
+ ここによりますと、関数の呼び出し、システムコールに使用されるレジスタは決まっているようですね。
72
+
73
+
74
+
75
+ ```
76
+
77
+ The number of the syscall has to be passed in register rax.
78
+
79
+
80
+
81
+ rdi - used to pass 1st argument to functions
82
+
83
+ rsi - used to pass 2nd argument to functions
84
+
85
+ rdx - used to pass 3rd argument to functions
86
+
87
+ rcx - used to pass 4th argument to functions
88
+
89
+ r8 - used to pass 5th argument to functions
90
+
91
+ r9 - used to pass 6th argument to functions
92
+
93
+
94
+
95
+ A system-call is done via the syscall instruction. The kernel destroys registers rcx and r11.
96
+
97
+ ```
98
+
99
+
100
+
101
+ なるほど!!
102
+
103
+ rax や eaxの使い分けについては未だ不明のままです。><

2

修正

2017/07/05 14:54

投稿

strike1217
strike1217

スコア651

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  int型は32bitなので、そのまま代入できますが、char型の場合は1Bなので、1つのスタックフレームに4つ入るそうです。
38
38
 
39
- 必ずしも4の倍数の値が入ると決まっているわけではないようです。
39
+ 必ずしも4の倍数と決まっているわけではないようです。
40
40
 
41
41
 
42
42
 

1

追記

2017/07/05 14:43

投稿

strike1217
strike1217

スコア651

test CHANGED
@@ -15,3 +15,45 @@
15
15
 
16
16
 
17
17
  間違っていたらすいません。
18
+
19
+
20
+
21
+ ___________________
22
+
23
+ 追記
24
+
25
+
26
+
27
+ 1、2番が一番難しいんですが・・・
28
+
29
+
30
+
31
+ 3番については、4の倍数になっているのは、32bitだからですね。
32
+
33
+ 浮動少数点数の演算やポインタは、8の倍数に変化するようです。
34
+
35
+
36
+
37
+ int型は32bitなので、そのまま代入できますが、char型の場合は1Bなので、1つのスタックフレームに4つ入るそうです。
38
+
39
+ 必ずしも4の倍数の値が入ると決まっているわけではないようです。
40
+
41
+
42
+
43
+ ただ、符号の問題がでてきました。
44
+
45
+ movl 16(%rbp), %edx
46
+
47
+ movl -16(%rbp), %edx
48
+
49
+
50
+
51
+ この2つって全く意味は同じ何ですかね??
52
+
53
+ どうも私の持っている本の中では全く同じなようなんですが・・・
54
+
55
+ 上は足していますが、下は引いていますよね・・・
56
+
57
+
58
+
59
+ わけがわからない・・・・