2010-03-30 12 views
20

Google zeigt das Ergebnis nicht,Was bedeutet X in EAX, EBX, ECX ... in der Montage?

Wer weiß?

+0

Bezogen: [Was bedeuten die E- und R-Präfixe für die Namen der Intel 32-Bit- und 64-Bit-Register?] (Https://stackoverflow.com/questions/43933379/what-do-the-e -und-r-Präfixe-Stand-für-die-Namen-von-Intel-32-Bit-und-64-Bit-r). Fragt auch nach dem "X" -Teil, aber diese Frage hat bessere Antworten dafür, also schließt nicht als Duplikat. –

Antwort

9

Nichts, soweit ich weiß. Es steht für ein Allzweckregister.

Das 16-Bit-AX-Register kann als AH (High Byte) und AL (Low Byte) adressiert werden.

Das EAX-Register ist die 32-Bit-Version des AX-Registers. Das E steht für erweitert.

+14

Die 8080, 8085 und Z80 hatten 8-Bit Register A, B, usw. Die 8086 hatte die 16-Bit AX, EX usw. Register. Die 80386 und darüber haben den EAX bekommen.Ich nahm an, dass das E und das X beide für "erweitert" standen, das X für die 16-Bit-Erweiterung und das E für die 32-Bit-Erweiterung. –

+1

@ Jonathan: Das X könnte durch "erweitert" inspiriert worden sein, aber ich habe das nirgends beschrieben noch gefunden. Wenn es keine offizielle Bedeutung für die X, das würde erklären, wie sie eine andere „erweitert“, ohne das Gefühl dumm hinzufügen könnten. Nennen Sie es die "Extended Accumulator eXtended" -Register würde wie ein Mangel an Phantasie scheinen ... :) – Guffa

+0

Art wie "C" hat seinen Namen - C für Code. – IAbstract

1

Wie Mihai sagt, ist es nur eine Namenskonvention.

Allerdings wird "X" oft für "füllen Sie Ihren Wert" verwendet und wird von Mathematikern häufig als der erste variable Name der Wahl in Gleichungen verwendet, und dass diese bestimmten Register allgemeinen Zweck sind (im Gegensatz zu sagen ESP, das der erweiterte (32-Bit-) Stapelzeiger oder EIP der erweiterte Befehlszeiger ist, ist vielleicht der Grund, warum X gewählt wurde, im Gegensatz zu 'B'.

+0

gleichermaßen, Variablen neigen dazu, Namen, A B C ... aber es könnte der Grund sein. – thecoshman

+0

Nun, wahr, einige Leute gehen für a, b, c, andere für x, y, z ... Ich rate nur um ehrlich zu sein. –

0

Ein möglicher Grund, den ich mir vorstellen kann, ist zu bezeichnen, dass es keinen "normalen" Zustand hat. Wenn man über die serielle Kommunikation in der Elektronik zu sprechen, wenn einer der Datenleitungen kann alles sein, könnte man sagt ihr Zustand X ist, wie es ist weder/beide/entweder 0 oder 1

+0

Man könnte vermuten, dass „X“ war eine Abkürzung für „H oder L“, da AX „die Register alle ist ersten Buchstaben, deren H, und dessen zweiter Brief H oder L“ so interpretiert werden könnte, aber das hat nichts zu mit "normalem" Zustand machen. – supercat

32

Die X bedeuten Paar, und hat mindestens die 8080. Es hatte 8-Bit-Register B, C, D, E, H, L (unter anderem), die auch in Paaren (BC, DE und HL) verwendet werden könnten. Die BC- und DE-Paare wurden hauptsächlich für 16-Bit-Arithmetik verwendet; Das HL-Paar enthielt im Allgemeinen eine Speicheradresse. Einige Beispiele für die Verwendung von X für Paar:

LXI D,12ABH ; "load pair immediate" 
DCX B   ; "decrement pair" 
STAX D   ; "store A (indirect) at pair" 

Schneller Vorlauf zum 8086. Es hat Register AL, AH, BL, BH, CL, CH, DL, DH, die, ähnlich der 8080, kann paarweise verwendet werden: AX, BX, CX, DX.

Wie bereits erwähnt, bedeutet das E in den 32-Bit-Registernamen erweitert.

+2

Super! Danke dafür. Ich habe nur vermutet, dass 'E' lange vor deinem Posten stand. – crush

+0

Bestätigt: Der erste Intel-Prozessor, der diese Anweisungen unterstützt, war der 8080. Weiter geht es nicht weiter. Der 8008 unterstützt keine gepaarten Register. Der einzige 'X' enthaltenden Befehlsmnemoniks auf den 8008 waren XOR-Operationen. –

5

Beim 8086 war das AX-Register die Kombination aus AH und AL. Gleichermaßen war BX BH und BL usw. Auf dem 80386 fügte Intel, anstatt 16-Bit-Register in 32-Bit-Register zu kombinieren, jedem Register 16 Bits hinzu. Der Name "AL" bezieht sich immer noch auf die Bits 0-7 des ersten Registers mit dem Buchstaben, "AH" auf die Bits 8-15 und "AX" auf die Bits 0-15; Der Name "EAX" bezieht sich nun auf alle 32 Bits des Registers.

Es ist interessant festzustellen, dass die meisten anderen 16- und 32-Bit-Prozessoren keine gleichwertige Möglichkeit bieten, nur auf den oberen oder unteren Teil eines Registers zuzugreifen. Die Kosten für das Zulassen eines solchen Zugriffs, sowohl hinsichtlich der Hardwarekomplexität als auch der Befehlscodierungsbits, waren signifikant, und im heutigen Zeitalter ist die Möglichkeit, einen 8-Bit-Teil eines Registers einem 8-Bit-Teil eines anderen Registers hinzuzufügen, weit weniger nützlich als viele andere Anwendungen, in die ein solcher Hardware- oder Instruktions-Codierungsraum eingefügt werden könnte. Auf der anderen Seite gibt es Zeiten, in denen solche Fähigkeiten nützlich sein können, wenn sie existieren.