問題タブ [intel-syntax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - objdump のアセンブリ エンコーディングが異なるのはなぜですか?
位置に依存しないコードに関するこの記事を読んでいて、この関数のアセンブリ リストに遭遇しました。
ただし、私のマシン (gcc-7.3.0、Ubuntu 18.04 x86_64) では、以下のようにわずかに異なる結果が得られました。
mov
私が見つけた主な違いは、命令のセマンティクスです。上のリストではmov ebp,esp
実際に に移動esp
しますebp
が、下のリストでmov %esp,%ebp
は同じことを行いますが、オペランドの順序が異なります。
手書きのアセンブリをコーディングしなければならない場合でも、これはかなり混乱します。要約すると、私の質問は、(1) 同じ命令に対して異なるアセンブリ表現を取得した理由、および (2) アセンブリ コードを記述するときに (たとえば を使用して) どちらを使用する必要があるかです__asm(:::);
。