Autor Thema: 64 Bit Integer  (Gelesen 4787 mal)

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« 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.^^;;

 

Einloggen