アセンブリで変数がどのように実装されているか少し混乱します。アセンブリ変数はどのように実装されていますか?
.section .data
var:
.long 23
は、その後、次のような変数にアクセスすることができます:私は、次の宣言は、プログラムのdata
セクションで指定されたメモリロケーションを作成することを知っている上で、私は明確ではないよ何
movl var, %eax //read from var location
方法上記の指示が実際に実装されています。私は、メモリ参照、たとえ絶対メモリ参照であっても、それを使用する前にレジスタにロードする必要があるという印象を受けました。
leal var, %ebx
movl (%ebx), %eax
やアセンブラがvar
のアドレスを追跡し、それが絶対的な即時アクセスであるかのように、その場所にアクセスしない:
は、アセンブラは、次のような複数の命令の中に上記の命令を変換する必要がありません例えば:
movl ($addr_of_var), %eax
いいえ。要件の誤解があります。アドレスをレジスタにロードする必要はありません。 'MOV'命令ファミリの命令リファレンスを見てください。 –