Um den Datentyp long von Java in meinem JIT Compiler einzubauen, müsste ich wissen, wie ich signed 64 Bit Integer multipliziren, dividieren und den Modulo berechnen kann.
Addieren und Subtrahieren ist ja kein Problem, das kann man ja einfach so machen:
Addition 5 + 7
mov eax, 5 ;low-dword des 64bit ints
mov edx, 0 ;high-dword des 64bit ints
add eax, 7 ;low-dword adden
adc edx, 0 ;high-dword mit carry adden
Subtrahieren geht auch ähnlich.
Multiplizieren macht der GCC so:
Multiplikation 5 * 7
; in ecx ist das low-dword (enthält 5)
; in ebx ist das high-dword (enthält 0)
movl %ecx, %eax
movl %ebx, %edx
shldl $3, %eax, %edx
sall $3, %eax
subl %ecx, %eax
sbbl %ebx, %edx
Ich verstehe aber auch nicht wirklich warum.^^;;