


Was ist der Unterschied zwischen x64 und x86 unter Linux?
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.
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
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;
(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 Verwandte Empfehlungen: „Linux-Video-Tutorial“
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.
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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.

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 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.

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.

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, 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.

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 ...
