ASM - Multiplikation zweier 64Bit register
Verfasst: 30.11.2012 14:46
Hallo Leute,
irgendwie stelle ich mich zu blöd an die Suche hier, als auch Google zu benutzen.
Was ich suche, ist "den" ASM Befehl (und die Register), mit dem ich zwei 64-Bit Register miteinander multiplizieren kann und das Ergebnis dann in zwei 64-Bit Register gepackt wird.
Also ählich wie hier, wenn ich zwei Longs multipliziere und das Ergebnis dann in zwei 32-Bit Registern steht:
Wäre natürlich gut, wenn einer mir auch einen Link zeigen könnte, wo ich ähnliche Befehle für addieren und dividieren finde. Das ganze soll halt für 64Bit optimiert sein.
irgendwie stelle ich mich zu blöd an die Suche hier, als auch Google zu benutzen.
Was ich suche, ist "den" ASM Befehl (und die Register), mit dem ich zwei 64-Bit Register miteinander multiplizieren kann und das Ergebnis dann in zwei 64-Bit Register gepackt wird.
Also ählich wie hier, wenn ich zwei Longs multipliziere und das Ergebnis dann in zwei 32-Bit Registern steht:
Code: Alles auswählen
*A = AllocateMemory(4)
*B = AllocateMemory(4)
*C = AllocateMemory(4+4)
PokeL(*A, $03000002)
PokeL(*B, $03000002)
! MOV ecx, [p_A]
! MOV eax, [ecx]
! MOV ecx, [p_B]
! MUL dword [ecx]
! MOV ecx, [p_C]
! MOV [ecx], eax
! MOV [ecx+4], edx
ShowMemoryViewer(*C, 4+4)