Hi Frank,
Yes, it seems to work. Here is a sample output:
$ ./test_asm64_long 2309865 -4320000076
Addition:
C: 2309865 plus -4320000076 = -4317690211
ASM64: 2309865 plus -4320000076 = -4317690211
Substraction:
C: 2309865 minus -4320000076 = 4322309941
ASM64: 2309865 minus -4320000076 = 4322309941
Increment:
C: inc(2309865) = 2309866
ASM64: inc(2309865) = 2309866
C: inc(-4320000076) = -4320000075
ASM64: inc(-4320000076) = -4320000075
Decrement:
C: dec(2309865) = 2309864
ASM64: dec(2309865) = 2309864
C: dec(-4320000076) = -4320000077
ASM64: dec(-4320000076) = -4320000077
Sign change:
C: minus(2309865) = -2309865
ASM64: minus(2309865) = -2309865
C: minus(-4320000076) = 4320000076
ASM64: minus(-4320000076) = 4320000076
Maximum:
C : max(2309865, -4320000076) = 2309865
ASM64: max(2309865, -4320000076) = 2309865
Minimum:
C : min(2309865, -4320000076) = -4320000076
ASM64: min(2309865, -4320000076) = -4320000076
Multiplication:
C: 2309865 times -4320000076 = -9978616975549740
ASM64: 2309865 times -4320000076 = -9978616975549740
Division: quotient
C: 2309865 div -4320000076 = 0
ASM64: 2309865 div -4320000076 = 0
Division: remainder
C: 2309865 mod -4320000076 = 2309865
ASM64: 2309865 mod -4320000076 = 2309865
Dision: quotient and remainder in one:
ASM64: 2309865 mdiv -4320000076 : (q: 0 r: 2309865)
Now I see a little bug: Dision for Division
Best,
Jordi