Inhaltsverzeichnis
Der Unterschied zwischen Linux x86 (32-Bit) und x64 (64-Bit)
Heim Betrieb und Instandhaltung Betrieb und Wartung von Linux Was ist der Unterschied zwischen x64 und x86 unter Linux?

Was ist der Unterschied zwischen x64 und x86 unter Linux?

Jan 11, 2022 pm 06:03 PM
linux x86

Unterschiede: 1. Andere Registerzuordnung, x64 hat nur 8 Register; 3. Andere Funktionsaufrufe; 5. Andere Stack-Frames; Zeiger, während x86 ebp als Stapelrahmenzeiger verwendet. 6. Die Rechengeschwindigkeit von x64 ist höher als die von x86.

Was ist der Unterschied zwischen x64 und x86 unter Linux?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Der Unterschied zwischen Linux x86 (32-Bit) und x64 (64-Bit)

0x01: Unterschiede in der Registerzuordnung

(1) 64-Bit hat 16 Register, 32-Bit nur 8. Aber die ersten 8 Bits von 32-Bit haben unterschiedliche Namen, nämlich e_, während die ersten acht Bits von 64-Bit r anstelle von e verwenden, was r_ ist. Die mit e beginnende Registerbenennung kann weiterhin direkt auf die unteren 32 Bits des entsprechenden Registers angewendet werden, während die übrigen Registernamen von r8 bis r15 reichen und die unteren Bits jeweils mit d, w und b bezeichnet werden
(2) 32-Bit verwendet den Stapelrahmen als Speicherort für die übergebenen Parameter, während 64-Bit Register verwendet und rdi, rsi, rdx, rcx, r8, r9 jeweils als Parameter 1–6 und rax als Rückgabewert verwendet
(3) 64-Bit hat keinen Stack-Frame-Zeiger, 32-Bit verwendet ebp als Stack-Frame-Zeiger, 64-Bit hebt diese Einstellung auf und rbp wird als allgemeines Register verwendet; unterstützt einige Formen der PC-bezogenen Adressierung, während 32-Bit nur JMP unterstützt. Diese Adressierungsmethode wird nur verwendet, wenn: pop erweitert die movq-Reihe von mov und pushq und popq Wird zum Betreiben von Quad-Worten verwendet.

Ergänzung: (1) movabsq ist keine 32-Bit-Erweiterung, es ist eine völlig neue Anweisung. Wird verwendet, um einen 64-Bit-Literalwert direkt in einem 64-Bit-Register zu speichern. Da movq nur 32-Bit-Werte speichern kann, wird eine neue Anweisung wie diese hinzugefügt

(2) 64-Bit-Assembly-Code fügt möglicherweise vor ret einen rep hinzu. Der rep hier hat nur aus Gründen der Zweckmäßigkeit keine praktische Bedeutung Der Grund für den AMD-Prozessor besteht darin, den Ort zu vermeiden, an dem jmp direkt ret erreicht, wodurch der Prozessor schneller läuft. Siehe oben);

callq speichert eine 8-Bit-Rückgabeadresse auf dem Stapel

(2) Viele Funktionen haben keine Stapelrahmen mehr und nur diejenigen, die nicht alle lokalen Variablen in Registern platzieren können, weisen Platz auf dem Stapel zu

( 3 ) Die Funktion kann bis zu 128 Byte Stapelspeicher erhalten. Auf diese Weise kann die Funktion Informationen auf dem Stapel speichern, ohne den Stapelzeiger zu ändern (dh der 128-Byte-Bereich unter RSP kann im Voraus verwendet werden. Dieser Bereich wird als rote Zone bezeichnet. In x86-64 ist er verfügbar

(4) Es gibt keinen Stapelrahmenzeiger mehr und die Stapelposition hängt jetzt vom Stapelzeiger ab. Die meisten Funktionen weisen zu Beginn des Aufrufs den gesamten erforderlichen Stapelspeicher zu und lassen dann den Stapelzeiger unverändert

(5) Einige Register sind als vom Aufrufer gespeicherte Register konzipiert und müssen gespeichert werden, wenn ihre Werte benötigt werden ändern und anschließend wiederherstellen.

0x04: Unterschiede in der Parameterübergabe

(1) 6 Register werden zur Parameterübergabe verwendet (siehe oben); (2) Die restlichen Register werden wie zuvor übergeben (jedoch bezogen auf rsp ist ebp nein). Wird länger als Stapelrahmenzeiger verwendet und der 7. Parameter beginnt bei rsp, der 8. Parameter beginnt bei rsp+8 usw. (3) Beim Aufruf bewegt sich rsp um 8 Bits nach unten (in der Rücksprungadresse gespeichert). , die Registerparameter haben keine Auswirkung, der 7. und die folgenden Parameter sind jetzt der 7. ab RSP+8, der 8. ab RSP+16 usw.

0x05: Der Unterschied in den Stapelrahmen

In vielen Fällen wird der Stapelrahmen nicht mehr benötigt. Wenn beispielsweise keine andere Funktion aufgerufen wird und das Register ausreicht, um Parameter zu speichern, muss nur die Rücksprungadresse gespeichert werden.
Situationen, in denen ein Stapelrahmen benötigt wird:

(1) Es gibt zu viele lokale Variablen und nicht genügend Register;
(2) Einige lokale Variablen sind Arrays oder Strukturen;
(3) Die Funktion verwendet den Adressoperator, um zu berechnen Wert einer lokalen Variablenadresse;

(4) Die Funktion muss den Stapel verwenden, um einige Parameter an eine andere Funktion zu übertragen

(5) Die Funktion muss den Status einiger vom Aufrufer gespeicherter Register speichern ; Aber jetzt hat der Stapelrahmen oft eine feste Größe, die zu Beginn des Funktionsaufrufs festgelegt wird. Während des gesamten Aufrufs bleibt der obere Zeiger des Stapels unverändert, sodass der entsprechende Wert durch Hinzufügen eines Offsets bedient werden kann EBP wird nicht mehr als Stack-Frame-Zeiger benötigt. Obwohl wir oft denken, dass es keinen „Stapelrahmen“ gibt, muss jeder Funktionsaufruf eine Rücksprungadresse haben, die auf den Stapel gelegt wird. Wir können uns diese Adresse auch als „Stapelrahmen“ vorstellen, da sie auch den Status des Aufrufers speichert.

0x06: Unterschiedliche Betriebsgeschwindigkeiten

Die Datenbreite der 64-Bit-CPU beträgt 64 Bit, und der 64-Bit-Befehlssatz kann 64-Bit-Datenanweisungen ausführen, was bedeutet, dass der Prozessor 64-Bit-Daten extrahieren kann zu einem Zeitpunkt, der höher als 32-Bit ist. Eine Verdoppelung der Leistung führt theoretisch zu einer Leistungssteigerung um den Faktor 1.

Verwandte Empfehlungen: „Linux-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen x64 und x86 unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Deepseek Web Version Eingang Deepseek Offizielle Website Eingang Deepseek Web Version Eingang Deepseek Offizielle Website Eingang Feb 19, 2025 pm 04:54 PM

Deepseek ist ein leistungsstarkes Intelligent -Such- und Analyse -Tool, das zwei Zugriffsmethoden bietet: Webversion und offizielle Website. Die Webversion ist bequem und effizient und kann ohne Installation verwendet werden. Unabhängig davon, ob Einzelpersonen oder Unternehmensnutzer, können sie massive Daten über Deepseek problemlos erhalten und analysieren, um die Arbeitseffizienz zu verbessern, die Entscheidungsfindung zu unterstützen und Innovationen zu fördern.

So installieren Sie Deepseek So installieren Sie Deepseek Feb 19, 2025 pm 05:48 PM

Es gibt viele Möglichkeiten, Deepseek zu installieren, einschließlich: kompilieren Sie von Quelle (für erfahrene Entwickler) mit vorberechtigten Paketen (für Windows -Benutzer) mit Docker -Containern (für bequem am besten, um die Kompatibilität nicht zu sorgen), unabhängig von der Methode, die Sie auswählen, bitte lesen Die offiziellen Dokumente vorbereiten sie sorgfältig und bereiten sie voll und ganz vor, um unnötige Schwierigkeiten zu vermeiden.

Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Bitget Offizielle Website -Installation (2025 Anfängerhandbuch) Bitget Offizielle Website -Installation (2025 Anfängerhandbuch) Feb 21, 2025 pm 08:42 PM

Bitget ist eine Kryptowährungsbörse, die eine Vielzahl von Handelsdienstleistungen anbietet, darunter Spot -Handel, Vertragshandel und Derivate. Der 2018 gegründete Austausch hat seinen Hauptsitz in Singapur und verpflichtet sich, den Benutzern eine sichere und zuverlässige Handelsplattform zu bieten. Bitget bietet eine Vielzahl von Handelspaaren, einschließlich BTC/USDT, ETH/USDT und XRP/USDT. Darüber hinaus hat der Austausch einen Ruf für Sicherheit und Liquidität und bietet eine Vielzahl von Funktionen wie Premium -Bestellarten, gehebelter Handel und Kundenunterstützung rund um die Uhr.

Holen Sie sich das Installationspaket Gate.io kostenlos Holen Sie sich das Installationspaket Gate.io kostenlos Feb 21, 2025 pm 08:21 PM

Gate.io ist ein beliebter Kryptowährungsaustausch, den Benutzer verwenden können, indem sie sein Installationspaket herunterladen und auf ihren Geräten installieren. Die Schritte zum Abholen des Installationspakets sind wie folgt: Besuchen Sie die offizielle Website von Gate.io, klicken Sie auf "Download", wählen Sie das entsprechende Betriebssystem (Windows, Mac oder Linux) und laden Sie das Installationspaket auf Ihren Computer herunter. Es wird empfohlen, die Antiviren -Software oder -Firewall während der Installation vorübergehend zu deaktivieren, um eine reibungslose Installation zu gewährleisten. Nach Abschluss muss der Benutzer ein Gate.io -Konto erstellen, um es zu verwenden.

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Ouyi OKX Installationspaket ist direkt enthalten Ouyi OKX Installationspaket ist direkt enthalten Feb 21, 2025 pm 08:00 PM

Ouyi Okx, die weltweit führende digitale Asset Exchange, hat jetzt ein offizielles Installationspaket gestartet, um ein sicheres und bequemes Handelserlebnis zu bieten. Auf das OKX -Installationspaket von Ouyi muss nicht über einen Browser zugegriffen werden. Der Installationsprozess ist einfach und einfach zu verstehen.

Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Apr 01, 2025 pm 03:06 PM

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

See all articles