Division von 128-Bit-unsigned durch 64-Bit-unsigned in AMD64
-
Hallo,
ich will einen 128-Bit-unsigned gegeben als (high, low) durch einen 64-Bit-unsigned teilen unter AMD64.
Kann ich das alsmov high,rax mov low,rcx div rdx
realisieren?
-
das müsste gehen, weiß es aber nicht genau, habe bisher noch nicht mit 64bit herumexperimentiert. Die klassiche Kombi für 32bit Werte division ist
Edx:00000012 = High
Eax:3456789A = Lowalso zB.: 123456789A : 12345678 - der Rest landet wie immer in Edx.
probiers mal im Debugger aus.
...man kann es auch nachlesen, etwa hier:
-
solange der Quotient nicht größer als 2^64-1 wird, kann man div verwenden:
mov rax,DividendLow mov rdx,DividendHigh mov rcx,Divisor div rcx ;rax=Quotient <= 2^64-1 ;rdx=Modulo