判断 68000 是否发生无符号溢出

Determining if unsigned overflow occurs on 68000

我正在为学校做一道题,无法理解这部分与相加两个数字以及检查是否发生无符号溢出有关的部分。

在我使用的参考资料中,它说条件测试VC(溢出清除)和VS(溢出设置)都是二进制补码算法并使用有符号数。

据我了解,任何使用有符号数的条件测试都不适用于无符号数。我应该用不同的方法来测试这个吗?

OV 标志仅对您想要解释为有符号整数的数字有效。当任何计算超过 +/- MAXINT 的限制(取决于操作数大小)时设置它。使用无符号数时,通常应忽略它。在非常低的级别上,当您将两个具有相同符号的数字相加并且结果的最高位被计算更改时,会设置 OV 标志。

C 标志与有符号数和无符号数都相关 - 当任何计算超过值零时设置它。

68k CPU 的条件分支在对有符号和无符号整数有效的条件下排序,观察 V 和 C(和 Z)标志的组合,将它们转换为条件 >、=、>=、 <, <=.对于初学者来说,有时会有点困惑,因为具有相同操作码的相同指令可能有多个名称:一个表示标志状态,另一个表示 "what the flags mean",如 BCC(如果进位则分支清除)和 BHS(如果更高或相同则分支)。这两个都计算为相同的操作码。