确定签名溢出(x86溢出/辅助标志)

时间:2012-02-26 09:22:13

标签: bit-manipulation x86-16 bitflags

首先:我真的试图找到一个匹配的答案,但我还没有成功。

我目前正在开发一个小型8086仿真器。我还没想到的是溢出和辅助标志如何最好地计算加法和减法。

据我所知,Auxilliary Flag符合溢出标志,但只使用4位,而溢出标志使用整个大小。因此,如果我添加两个带符号的1字节整数,OF将检查1字节有符号溢出,而辅助标志只查看两个整数的低4字节。

是否有任何通用算法或"魔术按位运算"用于计算4,8和16位加法和减法的有符号溢出? (我不介意用什么语言写的)

备注:我需要在内部将值存储在无符号变量中,因此我只能使用无符号值或按位计算。

可能有一个适用于加法和减法的解决方案是检查" Sign Flag" (或辅助标志的第4位)在计算完成后发生了变化?

提前致谢!

1 个答案:

答案 0 :(得分:1)

溢出标志指示结果是否太大/太小而无法放入目标操作数,无论其大小如何。

Auxilliary Flag指示结果是否太大/太小而不适合四个

编辑:如何确定AF:Explain how the AF flag works in an x86 instructions?