68k/x86左移溢出?

Ton*_*y R 4 x86 assembly 68000 shift

我听说摩托罗拉68000和英特尔x86架构处理左移不同的溢出.特别是68k LSL与英特尔SAL/SHL组装说明.

有谁知道这具体细节?他们设置不同的标志,还是设置不同的标志?我试着在参考手册中查看,但我没有看到任何区别.为什么人们想以不同的方式处理这种情况?

小智 6

X位不涉及.由于有两个左移指令,因此产生了对68000个标志的混淆:

  • LSL,逻辑左移,清除溢出标志.
  • ASL,算术左移,如果MSB在移位期间的任何时间改变符号,则设置V标志.

x86指令集几乎没有那么强大.如果移位计数= 1,则OF,溢出标志=(MSB XOR CF),即,如果MSB由于1位移位而改变符号,则OF = 1,否则OF = 0.

如果移位计数> 1,则OF 未定义. (英特尔SHL文档的HTML摘录).