64アンダービットのx86 CPUを登録します。は、通常、我々は数をロード-1のように登録すること
mov rdx, -1 // 48BAFFFFFFFFFFFFFFFF
...このオペコードは10バイトになります。
もう一つの方法は次のとおりです。
xor rdx, rdx // 4831D2
dec rdx // 48FFCA
...このオペコードは、6バイトのみを要します。
EDIT:
イェンスBjörnhagerとしてxor edx, edx
オペコードが全体RDXレジスタをクリアする必要があります(私がテストしている)と言う:
xor edx, edx // 31D2
dec rdx // 48FFCA
...このオペコードは唯一の5バイトを取ります。
EDIT:
アレックスは別の解決策を見つける:
mov rdx, -1 // 48C7C2FFFFFFFF
を...このオペコードは7バイトになります。 しかし、(DBを使用せずに)より短いオペコードを使用するようコンパイラに指示する方法はありますか?
...
が速く何ですか、何がより経済的ですか?
xor edx、edx; dec rdx; 5バイトです。 –
@JensBjörnhager:64ビットの結果が必要です。「xor edx、edx」はわずか32ビットです! –
xor edx、edxがrdx全体をクリアしていませんか? –