2009-07-04 15 views
3

Ich beginne, ein Programm zu portieren, das in C geschrieben ist und mehrere Teile des Codes in Assembler mit Anweisungen für eine 32-Bit-Maschine geschrieben - wie ljmp - zu einem 64-Bit-Maschine .64-Bit-Assembly Anweisungen von 32 Bit

Gibt es einen Ort/Dokument, das die Anweisungen aufweisen, in der Montage, für eine 32-Bit-Maschine und sein Gegenstück für einen 64 einen? Wenn nicht, wo finde ich ein Dokument, das alle Anweisungen für eine 32-Bit- und eine 64-Bit-Maschine auflistet?


Da es ziemlich offensichtlich ist, bin ich ein Neuling für die Situation. Lassen Sie uns einige Punkte klären.

Ich bin ein O in seinen frühen Tagen zu portieren. Es wurde mit einer x86-Maschine im Hinterkopf geschrieben. Jetzt möchte ich, dass es bei x86_64 läuft.

Es ist in einer Linux-Box mit UNIX im Hinterkopf geschrieben. Ich bin mir fast sicher, dass der ursprüngliche Autor es auf einer Intel-Maschine schreibt. Ich bin auch auf Intel, aber ich möchte das Betriebssystem auch in AMD laufen lassen.

Der verwendete Compiler ist gcc.

+3

welche Prozessorarchitektur? Gehen Sie zur Website des Anbieters und laden Sie eine Referenz herunter. –

Antwort

2
+0

Dies ist davon auszugehen, dass das OP tatsächlich auf einer x86-CPU arbeitet – jalf

+0

Die Tatsache, dass die ursprüngliche Frage nicht spezifiziert fast bedeutet, dass es x86-64 sein wird, dass er danach ist. Trotzdem wäre es großartig, wenn diese Fragen Referenzen für andere anwendbare Architekturen sammeln könnten :) – jerryjvl

3

Sie haben keinen Hintergrund angeboten oder auch die Art der CPU, aber ich werde vorschlagen Thay vielleicht sollten Sie diesen Port 64-Bit-nehmen als Chance genutzt zu überdenken, die Assembler-Sprache. Obwohl es sicherlich seinen Platz hat, würde ich empfehlen, die Routine in C++ zu rekodieren und die optimierte Ausgabe des Compilers zu vergleichen, um zu sehen, ob es wirklich langsamer ist. In vielen Fällen wird es nicht sein.