2012-02-11 9 views
3

アセンブリで "%"を使用するとは何ですか?例えば、時には命令として書かれている:ASM - "%"とは何ですか?

MOVL%EAX、それは次のように書かれて

および他回%のEBX:(パーセント記号なし)

MOVL EAX、EBX

何違いは何ですか?

答えて

5

X86 assembly syntaxという異なるフレーバーがあります。 %のものはAT & Tと呼ばれ、もう1つはインテルと呼ばれます。異なるアセンブラは異なる構文を使用します。いくつかの(気体)は両方で働く。

6

すべてのアセンブラでは、シンボルと同じ名前のレジスタを参照する必要があるときに問題があります。例えば、 "int eax()"という関数があり、 "mov ebx、eax"を実行するアセンブリコードにリンクしているCコードがある場合、アセンブラは "eax"レジスタであるか関数であるかを示します。

異なるアセンブラを回避するには、さまざまなことを行います。一部の者(例えばNASM)は "eax"がレジスタであると仮定し、あいまいな記号(例えば、レジ​​スタではなく記号を参照するための "$ eax")のためにある種のプレフィックスを必要とする。他のもの(例えばGAS)は反対を行い、レジスタ名にプレフィックスを付加する。時にはあいまい性がまったくなくても(たとえば、レジ​​スタを参照する "%eax"やシンボルを参照する "eax"など)