私は、Linuxカーネルのヘッダーファイルの1つであるarch/x86/include/asm/nops.hのコメントで少し混乱しています。それは、代わりに
MOVL%ESI 64ビットモード使用K8またはP6のNOPのために、x86-64ではmov%esi、%esiはno-opですか、notですか?
私は著者がそれぞれのマシン命令('89 F6' と '8D 76 00' を、暗黙の推測)がなく、アセンブリ命令。インテル・ソフトウェア・デベロッパーズ・マニュアルVol2Aの<が...>次の命令は64ビットモードでのNOPされていないと述べている%ESI
レアルは0x00( %ESI)、%ESI
< ...>
LEA
の記述から、後者の命令(
lea 0x00(%rsi), %esi
)は前者のものと同じであることがわかります。
mov %esi,%esi
。
これで、mov %esi,%esi
が実際にはx86-64で動作していないかどうかが問われます。
mov
フラグは変更されません。この種のmov
は、メモリの変更はありません。もしそれが%rip
のほかに何か変わったら、それは汎用レジスタでなければなりません。しかし、私はそれがどのように%rsi
の内容を変更することができるか、または何かを手掛かりがありません。汎用レジスタの下半分を操作する場合、上半分は変更しないでください。
あなたのアセンブリの男として見て、これはあなたの486番目の答えです、これは今あなたが質問に答えるのを止めるでしょうか? (申し訳ありませんが、486の冗談... 486DX2を覚えています...私は486DX2を覚えています...そして今は完全にトピックです) – Steve
答えに追加するだけで、インテルの開発者マニュアルの関連セクションは3.4.1.1です(Volume 1) 。 –
@スティーブ:私がアセンブリを書いた最初のプラットフォームは68kだったので、私はそれを掛ける前にしばらく時間があると思う。 –