借り初めのひみつきちスマートフォン用の表示で見る借り初めのひみつきち仮ブログです。2016-12-01nasmのバグ?|ω・`)チラッ一般にアセンブリ言語と機械語は一対一に対応するとよく言われますが、実際にはそうとは限りません。x86の場合は同じ命令に別の機械語が割り当てられているものが幾つか存在し、全く同じアセンブリ言語のソースでもアセンブラの気分次第で別の機械語になることがあります。同じ機械語でも逆アセンブルしたときの文脈によって命令が変化する場合があります。あるものとしてはaxレジスタを対象とした演算命令やmov命令は他のレジスタを使った場合より1バイト短い専用形式を持っています。定数の表記方法も条件を満たした場合は汎用の命令より短い機械語にすることができる場合があります。XXXX)の場合、次の3つの形式があります。汎用の正式な形式です。ちなみに、32bit(eax)版はサイズプレフィックスを除外すると以下のようになります。形式で、正式なソースは見つけることができなかったのですが、どうやら386の頃に新たに定義された命令で8086では定義されていない命令のようです。and命令もデコードできる可能性がありますが、正式には存在していなかった命令のようです。nasmの話になりますが、最近のnasmは短いバイト数の命令を選択する最適化機能があります。基本的には全く同じ動作の命令ならバイト数が少ないほうがいいのでこの機能自体は歓迎すべき機能です。頑なに使い続けました。短い命令になるので、おそらく32bitのサイズで比重が設定されているのでしょう。このためだけに他の最適化をすべて切るわけにも行かないので困ったものです。»プロフィールid:neriring16仮ブログです。汎用レジスタのルーツ任意コード実行可能なホームページ作った。ゴルフの果てに月別アーカイブはてなブログをはじめよう!neriring16さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。