汇编程序,SUB指令中的第七位用于什么?

时间:2017-01-22 13:27:49

标签: assembly x86 instructions machine-code

在我从大学毕业的论文中,我得到了类似的东西:

SUB
1. Subtracting value from register
| 100000 s w | 11 101 reg | value(L) | value(...) | value(...) | value(H) |

我知道" w"代表。它指定寄存器是否在" reg"字段是8或16/32位,但" s"选项?它代表什么?我通过互联网搜索,但我没有找到一个明确的答案。

1 个答案:

答案 0 :(得分:2)

s代表符号扩展。

SUB 80-83代表sub reg, imm

SUB版本82和83符号扩展了立即操作数,如此处所示

http://ref.x86asm.net/#column_flds

  

w表示存在位w(位索引0,操作数大小);可以与比特d或s组合。 04 ADD   s表示存在位s(位索引1,符号扩展);可以与位w组合。 6B IMUL

允许立即操作数更小,从而允许更紧凑的代码。

您可以在http://ref.x86asm.net/geek.html

查看完整的操作码地图

请注意,80和82都表示使用字节操作数进行算术运算。 80没有,82有符号扩展;但是,字节操作数上的符号扩展是无操作,因此82是80的别名 为了简化解码,英特尔选择不重新使用冗余的82操作码,而只是允许它们作为官方80操作码的别名。

x86操作码映射有大约十二个别名,这是英特尔不能简单地在解码问题上投入更多芯片的日子。