首先:我真的试图找到一个匹配的答案,但我还没有成功。
我目前正在开发一个小型8086仿真器。我还没想到的是溢出和辅助标志如何最好地计算加法和减法。
据我所知,Auxilliary Flag符合溢出标志,但只使用4位,而溢出标志使用整个大小。因此,如果我添加两个带符号的1字节整数,OF将检查1字节有符号溢出,而辅助标志只查看两个整数的低4字节。
是否有任何通用算法或"魔术按位运算"用于计算4,8和16位加法和减法的有符号溢出? (我不介意用什么语言写的)
备注:我需要在内部将值存储在无符号变量中,因此我只能使用无符号值或按位计算。
可能有一个适用于加法和减法的解决方案是检查" Sign Flag" (或辅助标志的第4位)在计算完成后发生了变化?
提前致谢!
答案 0 :(得分:1)
溢出标志指示结果是否太大/太小而无法放入目标操作数,无论其大小如何。
Auxilliary Flag指示结果是否太大/太小而不适合四个位。
编辑:如何确定AF:Explain how the AF flag works in an x86 instructions?。