在我从大学毕业的论文中,我得到了类似的东西:
SUB
1. Subtracting value from register
| 100000 s w | 11 101 reg | value(L) | value(...) | value(...) | value(H) |
我知道" w"代表。它指定寄存器是否在" reg"字段是8或16/32位,但" s"选项?它代表什么?我通过互联网搜索,但我没有找到一个明确的答案。
答案 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操作码映射有大约十二个别名,这是英特尔不能简单地在解码问题上投入更多芯片的日子。