我正在处理一个学校问题,无法理解这与加两个数字并检查是否发生未签名溢出有关的部分。
在我正在使用的参考中,它说条件测试VC(溢出清除)和VS(溢出集)都是二进制补码算术,并使用带符号的数字。
据我了解,任何使用带符号数字的条件测试都不适用于无符号数字。我应该为此进行测试吗?
答案 0 :(得分:2)
OV标志仅对要解释为有符号整数的数字有效。当任何计算超过+/- MAXINT的限制时设置(取决于操作数大小)。使用无符号数字时,通常应忽略它。在非常低的级别上,当您将两个具有相同符号的数字相加时,OV标志就会置位,并且结果的最高位会通过计算而更改。
C标志与有符号和无符号数字都相关-当任何计算超过零值时设置C。
68k CPU的条件分支按对有符号和无符号整数有效的条件进行排序,观察V和C(和Z)标志的组合,将它们转换为条件>,=,> =,<,<=。对于初学者而言,有时带有相同操作码的相同指令可能具有多个名称,这有点令人困惑:一个表示标志状态的名称,另一个表示“标志的含义”的名称,如BCC
(进位清除)和BHS
(如果分支较高或相同,则分支)。两者的计算结果都相同。