12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "alu.inc"
- .code
- prolog
- #define SUBX(N, I0, I1, V) ALUX(N, sub, I0, I1, V)
- /* nothing */
- SUBX(0, 0, 0, 0)
- #if __WORDSIZE == 32
- /* carry */
- SUBX(1, 0x7fffffff, 0xffffffff, 0xffffffff)
- /* overflow */
- SUBX(2, 0x80000000, 1, 0)
- /* carry */
- SUBX(3, 0x7fffffff, 0x80000000, 0xffffffff)
- /* overflow */
- SUBX(4, 0x80000000, 0x7fffffff, 0)
- /* carry+overflow */
- SUBX(5, 1, 0x80000000, 0xffffffff)
- #else
- /* carry */
- SUBX(1, 0x7fffffff, 0xffffffff, -1)
- /* nothing */
- SUBX(2, 0x80000000, 1, 0)
- /* carry */
- SUBX(3, 0x7fffffff, 0x80000000, -1)
- /* nothing */
- SUBX(4, 0x80000000, 0x7fffffff, 0)
- /* carry */
- SUBX(5, 1, 0x80000000, -1)
- /* carry */
- SUBX(6, 0x7fffffffffffffff, 0xffffffffffffffff, -1)
- /* overflow */
- SUBX(7, 0x8000000000000000, 1, 0)
- /* carry */
- SUBX(8, 0x7fffffffffffffff, 0x8000000000000000, -1)
- /* overflow */
- SUBX(9, 0x8000000000000000, 0x7fffffffffffffff, 0)
- /* carry+overflow */
- SUBX(10,1, 0x8000000000000000, -1)
- #endif
- prepare
- pushargi ok
- ellipsis
- finishi @printf
- ret
- epilog
|