|
发表于 2007-12-2 23:11:29
|
显示全部楼层
Post by bzw2000;1790425
比如, 0xfffffffe+0x1 这个加法运算, 执行后会不会去设置EFLAGS里C flag呢? 因为如果按照无符号数运算的话, 应该不设(因为并没有超过UMAX); 而作为符号数运算的话, 即-2+1, 应该会设C flag(因为结果为负). 虽然运算结果都一样(0xffffffff), 但如果设置C flag不同, 这不是会产生歧义吗?
这不像ARM汇编, 以上两种情况都会设置C flag.
x86的标志定义和ARM不太一样,cf可以理解为只针对无符号就是说加法超过FFFFFFFF,减法低于00000000才会置一
of才是针对有符号的,正+正=负;负+负=正;正-负=负;负-正=正。。。等溢出情况会置一。
加减法不分有无符号,乘除法倒是分得 |
|