繁体   English   中英

为什么nasm和yasm为mov r16,单词[r64-3]指令生成67个操作码?

[英]Why nasm and yasm yield 67 opcode for mov r16, word [r64 - 3] instruction?

x86-64汇编中,我有以下说明

mov        dx, word [esi-5]

Nasm 2.13.03生成:

66 67 8B 56 FB 

yasm 1.3.0生成:

67 66 8B 56 FB 

66 67操作码是修饰符,因此8B 56 FB本身是:

 mov        edx, dword [rsi-5]

我注意到:

66 8B 56 FB 

还评估为:

mov        dx, word [rsi-5]

我有两个问题:
1)为什么nasmyasm发出这67操作码字节填充? 67本身不足以将edx缩减为dx ,它需要包含66
2)有没有办法在nasm / yasm中发出没有 67的较短的4字节指令?

问题做出了错误的假设66 8B 56 FB

mov        dx, word [rsi-5] 

相当于

`66 67 8B 56 FB` or `67 66 8B 56 FB` 

mov        dx, word [esi-5] 

66edxdx
67[rsi-5]降低为[esi-5]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM