加法
减法
减法和加法一样都在ALU中处理,运算部件同样不关心是否符号数,无论何种类型,在ALU中运算得到的机器数都是相同的,但根据上层对于符号数或无符号数的需要对于结果的解释不同,符号数的首位为符号位按照符号数补码来解释结果,无符号数直接解释
与加法类似,ALU根据运算结果设置EFLAGS中的各个符号位,同样地,CF用于判断无符号数运算,OF用于判断符号数运算
程序实现
对于CF的实现较为简单,由于CF用于标志无符号数,因此判断两个数的大小即可 对于OF的实现稍微复杂一些,虽然可以将A-B变为A+(-B)从而使用加法判断的几口,但是对于0X80000000这样的数,添加负号会导致其溢出(负数表示范围比正数多一个),因此对于这种类型的数直接判断一下,具体代码如下