64 bits Montageanweisungen von 32 Bits Einsen
-
23-08-2019 - |
Frage
Ich fange an, ein Programm zu portieren, die in C geschrieben und haben mehrere Stücke von Code in Assembler geschrieben mit Anweisungen für eine 32-Bit-Maschine - wie LJMP -. Auf eine 64-Bit-Maschine
Gibt es einen Ort / Dokument, das die Anweisungen hat, in der Montage, für eine 32-Bit-Maschine und sein Gegenstück für ein 64 ein? Wenn nicht, wo finde ich ein Dokument, das die Anweisungen alle für ein 32-Bit-Listen und eine 64-Bit-Maschine?
Wie es ist ziemlich offensichtlich ist, bin ich ein Neuling für die Situation. Lassen Sie uns einige Punkte klären.
Ich bin Portierung ein OS in seinen sehr frühen Tagen. Es wurde mit einer x86-Maschine im Hinterkopf geschrieben. Nun, ich will es auf einem x86_64 auszuführen.
Es ist in einer Linux-Box mit UNIX im Hinterkopf geschrieben. Ich bin fast sicher, dass der ursprüngliche Autor es bei einer Intelen Maschine schreibt. Ich bin auch auf Intel, aber ich möchte das Betriebssystem in AMD laufen.
Der Compiler verwendet wird, gcc.
Lösung
Bitte zuerst lesen: http: // x86asm .net / articles / x86-64-Tour-of-Intel-Handbücher / index.html .
Dann den Befehlssatz Referenz hier herunterladen: http://developer.intel .com / products / Prozessor / Betriebsanleitungen / index.htm .
Andere Tipps
Sie haben keinen Hintergrund angeboten oder auch die Art der CPU, aber ich werde vorschlagen Thay vielleicht sollten Sie diese nehmen 64-Bit-Port als eine Gelegenheit, die Montag zu überdenken verwendete Sprache. Während es sicherlich seinen Platz hat, würde ich Umkodierung die Routine in C ++ empfehlen und Benchmarking des optimierte Ausgabe des Compilers, um zu sehen, ob es wirklich jeden langsamer ist. In vielen Fällen wird es nicht sein.