Sono nuovo in Assembly e, sulla base delle mie conoscenze, un ISA (Instruction Set Architecture) specifica quali istruzioni sono disponibili per una particolare CPU.
Ma un ISA specifica anche quali registri sono disponibili nella CPU?
Sì. Specifica inoltre quali istruzioni possono essere utilizzate con quali registri, quali istruzioni possono essere utilizzate dopo quali istruzioni, quali istruzioni e sequenze di istruzioni sono atomiche e così via.
Naturalmente, l'ISA specifica solo regole "come se", quindi la CPU potrebbe avere più registri e passarli da un thread all'altro o potrebbe avere meno registri ed emularli in qualche modo.
Un set di istruzioni specifica istruzioni che possono contenere diverse parti: opcode, modalità di indirizzamento, indirizzi o dati letterali. La modalità di indirizzamento che specifica i registri o le destinazioni indirette al registro e le fonti per un'istruzione fa riferimento a registri specifici (ad esempio il modello di bit 0001 potrebbe significare "Il registro AXE" e 0010 "Il registro BX", ecc.).
Se un set di istruzioni contiene tali modalità di indirizzamento, sì, una CPU che implementa questo set deve avere i registri corrispondenti. In caso contrario, il computer dovrebbe segnalare un'eccezione operativa a un livello così basso da rendere difficile il recupero o persino la comunicazione ragionevole. In pratica, ha senso solo implementare il 100% di un set di istruzioni e include tutti i registri della CPU che assume.
But does an ISA also specify what registers are available in the CPU?
Un ISA definisce comportamenti molto specifici in termini di istruzioni individuali e i vari campi che possono essere codificati in ogni istruzione. Alcuni di questi comportamenti definiscono l'impostazione di uno stato che è disponibile per alcune istruzioni successive da consumare.
Si tratta delle istruzioni esatte che, con le loro definizioni, forniscono l'esistenza, l'aggiornamento e il consumo dei registri e queste istruzioni espongono questo stato alla programmazione.
Naturalmente, considerare il registro nel suo insieme è fondamentale per capire un ISA. Tutte le definizioni di istruzioni - prese insieme - possono essere viste come essenzialmente definenti il set di registri visibile esternamente, che @Basile indica come registri logici.
Tuttavia, ad un modo di guardarlo, i registri esistono nell'ISA perché esistono istruzioni che li definiscono e manipolano.
I programmi, ovviamente, vengono creati utilizzando sequenze di istruzioni (comportamenti) che modificano lo stato in un modo desiderabile per calcolare qualcosa di interessante.
Come altri sottolineano, l'hardware fisico moderno di solito fornisce più stato interno di quello definito nell'ISA e, in sostanza, queste aggiunte non sono visibili attraverso le istruzioni. Questi extra vengono utilizzati per aumentare le prestazioni, ad esempio consentendo di lavorare su più cose in parallelo dall'hardware o eliminando le bancarelle.
da wikipedia:
An instruction set architecture (ISA) is an abstract model of a computer.
L'architettura di un set di istruzioni è effettivamente un'interfaccia o un contratto tra una famiglia di hardware che lo implementa e il software che lo utilizza.
Il contratto afferma una garanzia dei comportamenti documentati delle istruzioni, che include l'impostazione e ottenere i valori di registro. Tramite un ISA, una famiglia di processori hardware pubblica un contratto che garantisce la possibilità di eseguire sistemi operativi e software utente basati sui comportamenti definiti.
Leggi altre domande sui tag assembly