
www.Usenet.com
| <-- __Chronological__ --> | <-- __Thread__ --> |
Francisco Rodriguez wrote: > As your numbers are 32-bit wide, and overflow condition is a flag > about the result of the _whole_ v := v + i operation, it can be determined > by the MSB bits only (that is, from columns 31 and 30 of the addition). Thank you! I think I used the wrong word "underflow". What I mean is: if "i" is negative, it might be that abs(lo(i)) is greater than lo(v). What happens then? An example: v = 1234 0100 hex i = 0000 0101 hex The operation for the lo bits will result in FFFF and the carry will be set. Then when I add the high bits, it will be 1235 when it should actually be 1233. How do I save that the first operation was not an overflow but a borrow? (I don't know how to call this. That's what I mistakenly called underflow). Glen Herrmannsfeld wrote: > After the high halfword add, you compare the carry out to the carry out of > the sign bit to the carry in of the sign bit. If they are different then it > is overflow or underflow. The value of such bit tells you which one. So does that mean I have to modify my architecture and set TWO flags? A carry flag and a negative flag (if sign of last operation was negative), and then the Add-With-Carry instruction would look at both? Thanks a lot!
| <-- __Chronological__ --> | <-- __Thread__ --> |