harold が言うように、デフォルトのオペランド サイズは命令にエンコードされていませんが、現在のプロセッサ モードに依存します。
リアル モードと 16 ビット プロテクト モードでは、デフォルトのオペランド サイズは 16 ビットなので83 E4 F0
、and $-16, %sp
.
32 ビット モードでは、オペランド サイズのデフォルトは 32 ビットなので、and $-16, %esp
.
x64 モードでは、ほとんどの命令が再びデフォルトで 32 ビットのオペランド サイズに設定されるため (分岐、およびスタックを間接的に使用するプッシュ、ポップ、呼び出し、リターンなどを除く)、再び にデコードされand $-16, %esp
ます。
プレフィックスを使用して、デフォルトのオペランド サイズをオーバーライドすることができます。たとえば、プレフィックス 66h は 32 ビットと 16 ビットのオペランド サイズを切り替えるため、16 ビット モードで66 83 E4 F0
は にデコードし、32 ビットまたは 64 ビット モードでは にデコードします。64 ビットのオペランド サイズを取得するには、W ビットが設定されたREX プレフィックスを使用する必要があるため、デコードされます (ただし、64 ビット モードでのみ!)。and $-16, %esp
and $-16, %sp
48 83 E4 F0
and $-16, %rsp