2017-02-11 8 views
0
a:.int 0 
movl $0,a(%rip) 

movl $0,a(%rip)movl $0,bと略記することができるようにbのすべてのインスタンスがa(%rip)に置き換えられますように#define b a(%rip)ような何かをする方法は、ありますか?私はb=a(%rip).macro b;a(%rip);.endmの両方を試しましたが、どちらもうまくいきませんでした。どんな助けもありがとう。どのようにGNUアセンブラでarbitaryテキスト置換を行うには

答えて

2

ファイルをCプリプロセッサで前処理して、実際に#define b a(%rip)を使用することができます。 Cプリプロセッサで前処理したファイルを持っているために、代わりに.sのファイル接尾辞.Sを使用して、このように組み立て:このような定義は非常に珍しいと読者を混乱であることを

cc -c file.S 

注意を。マクロの平均であなたを混乱させるアセンブラ構文を変更するのではなく、代わりに%rip相対アドレッシングモードを使用する理由と構文をよく知っておくことをお勧めします。