Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: SSJ7Gohan am 16. November 2005, 15:42

Titel: 64 Bit Integer
Beitrag von: SSJ7Gohan am 16. November 2005, 15:42
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.^^;;