Ad esempio, l'accumulatore è denominato EAX
e, mentre il puntatore di istruzioni è chiamato IP
. So anche che ci sono byte chiamati CL
e DH
. So che ci deve essere una convenzione per tutti i nomi, ma che cos'è?Perché i registri x86 sono nominati come sono?
risposta
Il C e il D sono numeri/tipi e H per alto e L per le parti basse del registro più alto. http://en.wikipedia.org/wiki/X86
Wikipedia lo spiega molto bene.
Altro dal Wikipedia:
- AX/EAX/RAX: accumulatore
- BX/EBX/RBX: base
- CX/ECX/RCX: contatore
- DX/EDX/RDX : dati /generale
* EAX - Accumulator Register
* EBX - Base Register
* ECX - Counter Register
* EDX - Data Register
* ESI - Source Index
* EDI - Destination Index
* EBP - Base Pointer
* ESP - Stack Pointer
È storia. L'x86 proveniva dall'8086, che proveniva dall'8080, che proveniva dall'8008, che proveniva dal 4004. C'erano registri a 16 bit AX, BX, ecc. E per l'80386 si erano "estesi" a 32 bit.
Aggiunto: BTW Motorola 68K aveva registri a 32 bit dall'inizio, quindi è stato molto più facile programmare per i primi due decenni. Ho lavorato a progetti in cui Intel è stata scelta per ragioni di business, non tecniche.
ISN storia 't continuo - l'8080 ha diversi nomi di registro, e quei nomi sono entrati con l'8086. Vale la pena notare l'architettura CISC qui, con registri di scopo speciale, in entrambe le varianti 8086 e 8080, però - RISC è arrivato più tardi, con il suo' tutti i registri hanno lo stesso approccio (aiutato da 32 bit per istruzione invece di provare a codificare la maggior parte delle istruzioni in 8 bit). – ijw
@ijw - ma ci sono/sono stati traduttori da 8080 a 8086 e c'è una mappatura. Il registro A di 8080 è diventato AL, la coppia di registri B dell'8080, CH è diventata CH, CL. La coppia di registri dell'8080 D, E divenne DH, DL. La coppia di registri dell'8080 H, L divenne BH, BL. 8086 include istruzioni LAHF e SAHF che aiutano nella traduzione da 8080 a 8086. 8086 ha aggiunto registri come SI (indice di origine), DI (indice di destinazione) e BP (puntatore di base che per impostazione predefinita registra il segmento SS). – rcgldr
I processori precedenti hanno accumulatori denominati A, B, ecc. (Ordine alfabetico). Quando sono stati sviluppati accumulatori a 16 e 32 bit, gli ingegneri hanno aggiunto una X (estesa). Quindi è tutto sulla storia, dato che il linguaggio C è chiamato così perché è stato sviluppato dal linguaggio B (laboratori Bell).
La convenzione è solo interna, per stare al passo con i nomi con cui hanno familiarità.
In realtà i registri non sono in ordine alfabetico. L'ordine reale è A, C, D, B –
Alcune buone risposte qui: x86 assembly registers — Why do they work the way they do?
Per più storia e la spiegazione: http://www.swansontec.com/sregisters.html – rmmh
@ Daniel, sei mancato ESI, EDI, EBP, ecc – Pacerier