質問編集履歴

5

追記

2017/07/14 09:56

投稿

strike1217
strike1217

スコア651

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

追記

2017/07/14 09:56

投稿

strike1217
strike1217

スコア651

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

追記

2017/07/14 09:17

投稿

strike1217
strike1217

スコア651

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

追記

2017/07/14 09:14

投稿

strike1217
strike1217

スコア651

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

追記

2017/07/14 08:06

投稿

strike1217
strike1217

スコア651

test CHANGED
File without changes
test CHANGED
@@ -133,3 +133,5 @@
133
133
  最後に、qやl と言った文字をニーモニックにつけますが、
134
134
 
135
135
  これは即値によって決めるものですか?それともレジスタの容量によって決めるものですか?
136
+
137
+ あ、言い方が悪かったです。ソースとデステネイションのどちらによって決めるものですか?