2010-03-30 19 views
20

Google non mostra il risultato,Cosa significa X in EAX, EBX, ECX ... in assemblea?

Qualcuno sa?

+0

Correlato: [Quali sono i prefissi E e R per i nomi dei registri Intel a 32 e 64 bit?] (Https://stackoverflow.com/questions/43933379/what-do-the-e -e-r-prefissi-stand-per-in-the-nomi-di-intel-32-bit e 64-bit--R). Chiede anche della parte "X", ma questa domanda ha risposte migliori, quindi non si chiude come un duplicato. –

risposta

9

Nulla, per quanto ne so. Rappresenta un registro generale.

Il registro AX a 16 bit può essere indirizzato come AH (byte alto) e AL (byte basso).

Il registro EAX è la versione a 32 bit del registro AX. La E sta per esteso.

+14

8080, 8085 e Z80 avevano registri a 8 bit A, B, ecc. L'8086 aveva i registri AX, EX ecc. A 16 bit. L'80386 e sopra ha ottenuto l'EAX.Supponevo che E e X rappresentassero entrambi "estesi", la X per l'estensione a 16 bit e la E per l'estensione a 32 bit. –

+1

@ Jonathan: X potrebbe essere stato ispirato da "esteso" ma non ho ancora trovato quello descritto da nessuna parte. Se non c'è un significato ufficiale per la X, ciò spiegherebbe come potrebbero aggiungere un altro "esteso" senza sentirsi stupidi. Dare il nome al registro "Extended Accumulator eXtended" sembrerebbe una mancanza di immaginazione ... :) – Guffa

+0

un po 'come "C" ha il suo nome - C per Codice. – IAbstract

1

Come dice Mihai, è solo una convenzione di denominazione.

Tuttavia, dato che "X" è spesso usato per "riempire il tuo valore" ed è comunemente usato dai matematici come il primo nome variabile di scelta nelle equazioni, e che quei registri particolari sono di uso generale (al contrario di dire ESP che è il puntatore di stack esteso (32 bit) o ​​EIP il puntatore di istruzioni esteso) che è forse il motivo per cui viene scelto X invece di dire "B".

+0

allo stesso modo, le variabili tendono a essere nomi, A B C ... ma potrebbe essere la ragione. – thecoshman

+0

Beh, certo, alcune persone scelgono a, b, c, altre per x, y, z ... Sto solo supponendo di essere onesto. –

0

Una ragione plausibile a cui riesco a pensare è quella di non avere uno stato "normale". Quando si parla di comunicazione seriale in elettronica, se una delle linee di dati può essere qualsiasi cosa, si potrebbe dire che il suo stato è X come non è né/sia/0 o 1.

+0

Si potrebbe suggerire che "X" fosse una scorciatoia per "H o L", poiché AX potrebbe essere interpretato nel senso di "tutti i registri la cui prima lettera è H, e la cui seconda lettera è H o L", ma che non ha nulla da fare con lo stato "normale". – supercat

32

The X significa coppia, e risale almeno al 8080. Aveva registri a 8 bit B, C, D, E, H, L (tra gli altri) che potevano essere usati anche a coppie (BC, DE e HL). Le coppie BC e DE sono state utilizzate principalmente per l'aritmetica a 16 bit; la coppia HL generalmente conteneva un indirizzo di memoria. Alcuni esempi di utilizzo di X per pair:

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

avanti veloce al 8086. Ha registri AL, AH, BL, BH, CL, CH, DL, DH, che, analogamente a l'8080 può essere utilizzato in coppia: AX, BX, CX, DX.

Come altri hanno sottolineato, la E nei nomi dei registri a 32 bit significa estesa.

+2

Fantastico! Grazie per questo. Stavo solo supponendo che 'E' si ergeva esteso prima del tuo post. – crush

+0

Confermato: il primo processore Intel a supportare queste istruzioni era il 8080. Non torna più indietro di così. L'8008 non supportava registri associati. L'unica mnemonica di istruzioni contenente 'X' sull'8008 erano operazioni XOR. –

5

Sull'8086, il registro AXE era la combinazione di AH e AL. Allo stesso modo BX era BH e BL, ecc. Sull'80386, anziché combinare registri a 16 bit in registri a 32 bit, Intel aggiunse 16 bit a ciascun registro. Il nome "AL" si riferisce ancora ai bit 0-7 del primo registro con la prima lettera, "AH" ai bit 8-15 e "AX" ai bit 0-15; il nome "EAX" ora si riferisce a tutti i 32 bit del registro.

È interessante notare che molti altri processori a 16 e 32 bit non offrono alcun mezzo equivalente per accedere solo alle parti superiore o inferiore di un registro. I costi di consentire tale accesso, sia nella complessità dell'hardware che nei bit di codifica delle istruzioni, erano significativi e, ai giorni nostri, la possibilità di aggiungere una porzione di 8 bit di un registro a una porzione di 8 bit di un altro registro è lontana meno utile di molti altri usi a cui tale hardware o spazio di codifica delle istruzioni potrebbe essere messo. D'altra parte, ci sono ancora momenti in cui tali abilità possono essere utili quando esistono.