質問編集履歴
5
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -163,3 +163,9 @@
|
|
163
163
|
これでは、%rip + xx のアドレスを絶対アドレスとしてcallしてしまっているように見えるのですが・・・・
|
164
164
|
|
165
165
|
わざわざ、オフセット付きの括弧となしの括弧の使い方を区別しているのに、これでは意味が無くなってしまいます。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
[環境]
|
170
|
+
|
171
|
+
64bit Linux Debian系 intel CPU です。
|
4
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -161,3 +161,5 @@
|
|
161
161
|
実際には文法エラーですが、call *xx(%rip)の記述はおかしいような気がするんですが・・・
|
162
162
|
|
163
163
|
これでは、%rip + xx のアドレスを絶対アドレスとしてcallしてしまっているように見えるのですが・・・・
|
164
|
+
|
165
|
+
わざわざ、オフセット付きの括弧となしの括弧の使い方を区別しているのに、これでは意味が無くなってしまいます。
|
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -139,3 +139,25 @@
|
|
139
139
|
これは即値によって決めるものですか?それともレジスタの容量によって決めるものですか?
|
140
140
|
|
141
141
|
あ、言い方が悪かったです。ソースとデステネイションのどちらによって決めるものですか?
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
7,lea xx(%rip), %rdx | call *(%rdx)
|
146
|
+
|
147
|
+
これを1つにして、call *xx(%rip) と記述できます。(正常に実行できます。)
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
これも変です。
|
152
|
+
|
153
|
+
xx(%rip) の中身はアドレスです。
|
154
|
+
|
155
|
+
そのアドレスが指す領域内のアドレスが関数のポインタです。
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
なら、イメージ的には、call *(xx(&rip))こんな感じになります。
|
160
|
+
|
161
|
+
実際には文法エラーですが、call *xx(%rip)の記述はおかしいような気がするんですが・・・
|
162
|
+
|
163
|
+
これでは、%rip + xx のアドレスを絶対アドレスとしてcallしてしまっているように見えるのですが・・・・
|
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,6 +88,8 @@
|
|
88
88
|
|
89
89
|
ラベルにも付けれるんですか?
|
90
90
|
|
91
|
+
(私の環境ではできませんでした。)
|
92
|
+
|
91
93
|
|
92
94
|
|
93
95
|
4,以上を見ていただければ、わかりますが・・・
|
@@ -95,6 +97,8 @@
|
|
95
97
|
アスタリスクは、絶対アドレスが入っているレジスタに対する構文ではないでしょうか?
|
96
98
|
|
97
99
|
ラベルに[*]を付ける方が納得がいかないんですが・・・・
|
100
|
+
|
101
|
+
(レジスタ以外に対するアスタリスクはすべてダメでした。)
|
98
102
|
|
99
103
|
|
100
104
|
|
1
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -133,3 +133,5 @@
|
|
133
133
|
最後に、qやl と言った文字をニーモニックにつけますが、
|
134
134
|
|
135
135
|
これは即値によって決めるものですか?それともレジスタの容量によって決めるものですか?
|
136
|
+
|
137
|
+
あ、言い方が悪かったです。ソースとデステネイションのどちらによって決めるものですか?
|