汇编程序,SUB 指令中的第七位是做什么用的?
Assembler, what is seventh bit in SUB instruction used for?
在我从大学获得的论文中,我有这样的内容:
SUB
1. Subtracting value from register
| 100000 s w | 11 101 reg | value(L) | value(...) | value(...) | value(H) |
我知道 "w" 代表什么。它指定 "reg" 字段中的寄存器是 8 位还是 16/32 位,但是 "s" 选项是什么?它代表什么?我通过互联网搜索但我没有找到明确的答案。
s
代表符号扩展
SUB
80-83代表sub reg, imm
.
SUB
版本 82 和 83 符号扩展了立即操作数,如此处所示
http://ref.x86asm.net/#column_flds
w means bit w (bit index 0, operand size) is present; may be combined with bits d or s. 04 ADD
s means bit s (bit index 1, Sign-extend) is present; may be combined with bit w. 6B IMUL
.
允许立即操作数更小,从而允许更紧凑的代码。
您可以在以下位置查看完整的操作码图:http://ref.x86asm.net/geek.html
请注意,80 和 82 均表示带字节操作数的算术运算。 80 没有,82 有符号扩展;但是字节操作数的符号扩展是 no-op,因此 82 是 80.
的别名
为了简化解码,英特尔选择不重新利用冗余的 82 操作码,而只是允许它们作为官方 80 操作码的别名。
x86 操作码映射有大约十几个别名,是英特尔无法简单地在解码问题上投入更多芯片的时代遗留下来的。
在我从大学获得的论文中,我有这样的内容:
SUB
1. Subtracting value from register
| 100000 s w | 11 101 reg | value(L) | value(...) | value(...) | value(H) |
我知道 "w" 代表什么。它指定 "reg" 字段中的寄存器是 8 位还是 16/32 位,但是 "s" 选项是什么?它代表什么?我通过互联网搜索但我没有找到明确的答案。
s
代表符号扩展
SUB
80-83代表sub reg, imm
.
SUB
版本 82 和 83 符号扩展了立即操作数,如此处所示
http://ref.x86asm.net/#column_flds
w means bit w (bit index 0, operand size) is present; may be combined with bits d or s.
04 ADD
s means bit s (bit index 1, Sign-extend) is present; may be combined with bit w.6B IMUL
.
允许立即操作数更小,从而允许更紧凑的代码。
您可以在以下位置查看完整的操作码图:http://ref.x86asm.net/geek.html
请注意,80 和 82 均表示带字节操作数的算术运算。 80 没有,82 有符号扩展;但是字节操作数的符号扩展是 no-op,因此 82 是 80.
的别名
为了简化解码,英特尔选择不重新利用冗余的 82 操作码,而只是允许它们作为官方 80 操作码的别名。
x86 操作码映射有大约十几个别名,是英特尔无法简单地在解码问题上投入更多芯片的时代遗留下来的。