Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Assembler ::  Division von 128-Bit-unsigned durch 64-Bit-unsigned in AMD64     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
sdfdsff
Unregistrierter




Beitrag sdfdsff Unregistrierter 19:59:40 10.08.2010   Titel:   Division von 128-Bit-unsigned durch 64-Bit-unsigned in AMD64            Zitieren

Hallo,

ich will einen 128-Bit-unsigned gegeben als (high, low) durch einen 64-Bit-unsigned teilen unter AMD64.
Kann ich das als
Assembler Code:
mov high,rax
mov low,rcx
div rdx
Assembler Code:
mov high,rax
mov low,rcx
div rdx
Assembler Code:
mov high,rax
mov low,rcx
div rdx

realisieren?
nachtfeuer
Mitglied

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 1167
Beitrag nachtfeuer Mitglied 22:46:37 10.08.2010   Titel:              Zitieren

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 = Low

also zB.: 123456789A : 12345678 - der Rest landet wie immer in Edx.

probiers mal im Debugger aus.

...man kann es auch nachlesen, etwa hier:

http://www.complang.tuwien.ac.at/ubvl/amd64/amd64h.html
masm
Unregistrierter




Beitrag masm Unregistrierter 14:56:40 11.08.2010   Titel:              Zitieren

solange der Quotient nicht größer als 2^64-1 wird, kann man div verwenden:
Assembler Code:
mov rax,DividendLow
mov rdx,DividendHigh
mov rcx,Divisor
div rcx
;rax=Quotient <= 2^64-1
;rdx=Modulo
Assembler Code:
mov rax,DividendLow
mov rdx,DividendHigh
mov rcx,Divisor
div rcx
;rax=Quotient <= 2^64-1
;rdx=Modulo
Assembler Code:
mov rax,DividendLow
mov rdx,DividendHigh
mov rcx,Divisor
div rcx
;rax=Quotient <= 2^64-1
;rdx=Modulo
C/C++ Forum :: Assembler ::  Division von 128-Bit-unsigned durch 64-Bit-unsigned in AMD64   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.