64-Bit-Linux, Assemblersprache, Probleme?


7

Ich bin gerade dabei, Assembler zu lernen. Ich verwende Gas auf Linux Mint (32-Bit). Mit diesem Buch: Programming from the Ground Up.

Die Maschine, die ich verwende, hat einen AMD Turion 64 bit Prozessor, aber ich bin auf 2 GB RAM beschränkt. Ich denke über ein Upgrade meiner Linux-Installation auf die 64-Bit-Version von Linux Mint, aber ich bin besorgt, dass, weil das Buch auf 32-Bit-x86-Architektur ausgerichtet ist, die Codebeispiele nicht funktionieren.

So zwei Fragen:

  1. Gibt es wahrscheinlich Probleme mit den Codebeispielen sein?
  2. Hat jemand bemerkt, irgendwelche Vorteile im Allgemeinen bei der Verwendung von 64-Bit-Linux über 32-Bit (Ich habe einige Threads auf Stack Overflow zu diesem Thema gesehen, aber sie sind meist im Zusammenhang mit Windows Vista vs. Windows XP.)
4

Ihre Codebeispiele sollten alle noch funktionieren. 64-Bit-Prozessoren und Betriebssysteme können weiterhin 32-Bit-Code in einer Art "Kompatibilitätsmodus" ausführen. Ihre Montagebeispiele sind nicht anders. Sie müssen möglicherweise eine zusätzliche Reihe von Assembly oder zwei (wie .BITS 32) bereitstellen, aber das ist alles.

Im Allgemeinen ist die Verwendung eines 64-Bit-Betriebssystems schneller als die Verwendung eines 32-Bit-Betriebssystems. x86_64 hat mehr Register als i386. Da Sie an der Assembly arbeiten, wissen Sie bereits, welche Register für ... verwendet werden. Wenn Sie mehr davon haben, müssen Sie weniger Material auf den Stapel (und anderen temporären Speicher) verschieben, so dass Ihr Programm weniger Zeit für die Verwaltung von Daten und weniger Zeit benötigt mehr Zeit, um an diesen Daten zu arbeiten.

bearbeitet: 32-Bit-Version auf 64-Bit-Linux unter Verwendung von Gas zu kompilieren, verwenden Sie nur das Kommandozeilen-Argument "--32", wie in the GAS manual

  0

vielen dank, sehr hilfreich! 22 feb. 092009-02-22 15:00:30


1

Auch darauf hingewiesen, wenn Sie Linux 64bit laufen, es Es ist möglich, 32-Bit-Binärdateien zu kompilieren und auszuführen. Ich weiß nicht, wie gut Mints Unterstützung dafür ist, ich nehme an, du solltest nachsehen.

64bit Assembler ist jedoch nicht vollständig kompatibel zu 32bit, zum Beispiel haben Sie verschiedene (mehr) Register. Es gibt einige spezifische Anweisungen, die auf keiner Plattform verfügbar sind.

Ich würde sagen, der Umzug zu 64bit ist keine große Sache. Sie können immer noch 32bit Assembly schreiben und dann vielleicht versuchen, es auch als 64bit laufen zu lassen (sollte nicht zu hart sein), als Quelle für noch mehr Programmier-/Lernspaß.

  0

danke, sehr hilfreich! 22 feb. 092009-02-22 15:01:18

  0

Ich sehe, wie du die andere Antwort mehr magst, aber wenn du denkst, dass meine hilfreich ist, könntest du ihr +1 geben;) aber ich bin auch mit deinem Kommentar zufrieden :) 22 feb. 092009-02-22 18:30:48


1

Normalerweise 32-Bit ist reichlich, so verwenden Sie nur 64-Bit oder mehr, wenn Sie es wirklich brauchen. Am besten entscheiden Sie vor der Programmierung, wenn Sie es als 32-Bit-App oder eine 64-Bit-App tun wollen und dann als Mixed-Mode-Debuggen ca werden knifflig schnell.