私はこのようなコードを持っています:
.bss
woof: .long 0
.text
bleh:
...some op codes here.
次に、woof のアドレスを eax に移動したいと思います。それを行うためのインテルの構文コードは何ですか? bleh のアドレスを ebx などに移動する場合も同様です。
あなたの助けは大歓迎です!
私はこのようなコードを持っています:
.bss
woof: .long 0
.text
bleh:
...some op codes here.
次に、woof のアドレスを eax に移動したいと思います。それを行うためのインテルの構文コードは何ですか? bleh のアドレスを ebx などに移動する場合も同様です。
あなたの助けは大歓迎です!
bss セクションには、実際のオブジェクトを含めることはできません。一部のアセンブラでは .bss セクションに切り替えることができますが、そこでできることは次のように言うことだけですx: . = . + 4
。
最近のほとんどのアセンブラ、特に intel の gnu ではディレクティブがなくなっている.bss
ため、一時的に bss に切り替えて、次のようなコマンドで bss シンボルを 1 回で作成します.comm sym,size,alignment
。これが、おそらく ". bss ディレクティブが認識されない" などのエラーが発生する理由です。
そして、次のいずれかでアドレスを取得できます。
lea woof, %eax
また
movl $woof, %eax
更新:あはは、Intel 構文であり、Intel アーキテクチャではありません。わかった:
.intel_syntax noprefix
lea esi,fun
lea esi,[fun]
mov eax,OFFSET FLAT:fun
.att_syntax
lea fun, %eax
mov $fun, %eax
.data
fun: .long 0x123
すべてのlea
フォームが同じコードを生成する必要があります。