Sparc: 64bit-Größe modulo m
2007-01-13 18:37
Hannes
Hallo,
anscheinend bin ich nicht der einzige der mit den aktuellen RS-Aufgaben seine Probleme hat ;)
Meins ist von folgender Natur:
ich multipliziere zwei 32-bit-Zahlen. Die 32 höherwertigen bit des Produkts werden im Register %y gespeichert, die restlichen in einem Zielregister %l1. Dieses Produkt, aufgeteilt auf zwei Register, möchte ich nun modulo 10^9 rechnen. Als Weg habe ich mir
[img]http://mokrates.de/cgi-bin/texstring?a%20mod%20m%20%3D%20a%20-%20(%5Clfloor%20%5Cfrac%7Ba%7D%7Bm%7D%20%5Crfloor%20%5Ccdot%20m)[/img]
vorgestellt. Also dividiere ich %l1 durch 10^9 (dabei wird das %y-Register miteinbezogen) und multipliziere dann wieder mit 10^9. Da es Ganzzahlen sind, werden die Zahlen rechts "hinausgeschoben", es wird also automatisch abgerundet. Habe ich soweit richtig gedacht?
Lange Rede kurzer Sinn: Ich habe das jetzt zweimal gemacht, habe also a (64 Bit groß, in zwei Register aufgeteilt) und einmal a/m * m (auch 64 bit und in 2 Registern). Wie kann ich jetzt die eine 64-bit-Zahl von der anderen abziehen?
anscheinend bin ich nicht der einzige der mit den aktuellen RS-Aufgaben seine Probleme hat ;)
Meins ist von folgender Natur:
ich multipliziere zwei 32-bit-Zahlen. Die 32 höherwertigen bit des Produkts werden im Register %y gespeichert, die restlichen in einem Zielregister %l1. Dieses Produkt, aufgeteilt auf zwei Register, möchte ich nun modulo 10^9 rechnen. Als Weg habe ich mir
[img]http://mokrates.de/cgi-bin/texstring?a%20mod%20m%20%3D%20a%20-%20(%5Clfloor%20%5Cfrac%7Ba%7D%7Bm%7D%20%5Crfloor%20%5Ccdot%20m)[/img]
vorgestellt. Also dividiere ich %l1 durch 10^9 (dabei wird das %y-Register miteinbezogen) und multipliziere dann wieder mit 10^9. Da es Ganzzahlen sind, werden die Zahlen rechts "hinausgeschoben", es wird also automatisch abgerundet. Habe ich soweit richtig gedacht?
Lange Rede kurzer Sinn: Ich habe das jetzt zweimal gemacht, habe also a (64 Bit groß, in zwei Register aufgeteilt) und einmal a/m * m (auch 64 bit und in 2 Registern). Wie kann ich jetzt die eine 64-bit-Zahl von der anderen abziehen?