私はAssemblyで少し錆びています。皆さんに質問したいのですが。
- これらの組み立て手順はNASMで有効ですか?
- 違いは何ですか、いつ使用する必要がありますか?
mov EAX, EBX
vs
mov EAX, [EBX]
私はAssemblyで少し錆びています。皆さんに質問したいのですが。
mov EAX, EBX
vs
mov EAX, [EBX]
mov EAX, EBX
EBXの値をEAXに移動します。
mov EAX, [EBX]
EBX内のアドレスの値をEAXに移動します(したがって、EBXには有効なアドレスが含まれている必要があります。そうでない場合、セグメンテーション違反が発生します)。
Cが読めますか?もしそうなら、以前の定義を考えるint a, b;
と、最初の命令は多かれ少なかれ同等です
a = b;
一方、以前の定義を考えるint a, *b;
と、2番目の命令は多かれ少なかれ同等です
a = *b;
ただし、EAXとEBXは、スタック常駐変数ではなくレジスタです。
言うことができることはもっとたくさんありますが、上記はあなたにアイデアを与えます。
(ちなみに、NASM(私は過去5年間使用していません)は、GNUのアセンブラーとは逆の順序で引数を示します。NASMは宛先レジスタを左側に、ソースレジスタを右側に配置しますが、GNUはNASMの規則は、GNUの「AT&T構文」と比較して「Intel構文」とも呼ばれます。)