【发布时间】:2015-07-01 19:38:23
【问题描述】:
我正在用 Java 编写一个 x86 解释器,并有一个 Python 脚本来测试我的 x86 指令实现与使用 NASM 的真实对应物。 根据这个测试,除了进位标志之外,所有标志都被正确设置。 有趣的部分是:
long result;
switch (op) {
case ADD:
result = Math.abs(x) + Math.abs(y);
if (result > U_MAX)
registers.carry_flag = true;
else
registers.carry_flag = false;
break;
其中 U_MAX 是 4294967295L(全部 32 位设置)。
我发现的所有答案都没有意识到进位和溢出是两个不同的东西。那么,如何在 Java 中正确实现进位标志呢?
【问题讨论】:
-
x 和 y 是如何声明的?
-
x 和 y 是整数。