Galleria mappe mentale Capitolo 4 Sistema di comando
Questa è una mappa mentale sul Capitolo 4 Sistema di istruzioni, incluso il sistema di istruzioni, la modalità di indirizzamento delle istruzioni, la rappresentazione del codice a livello di macchina del programma, ecc.
Modificato alle 2024-01-16 15:52:47Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Questa è una mappa mentale su una breve storia del tempo. "Una breve storia del tempo" è un'opera scientifica popolare con un'influenza di vasta portata. Non solo introduce i concetti di base della cosmologia e della relatività, ma discute anche dei buchi neri e dell'espansione dell'universo. questioni scientifiche all’avanguardia come l’inflazione e la teoria delle stringhe.
Dopo aver letto "Il coraggio di essere antipatico", "Il coraggio di essere antipatico" è un libro filosofico che vale la pena leggere. Può aiutare le persone a comprendere meglio se stesse, a comprendere gli altri e a trovare modi per ottenere la vera felicità.
"Il coraggio di essere antipatico" non solo analizza le cause profonde di vari problemi nella vita, ma fornisce anche contromisure corrispondenti per aiutare i lettori a comprendere meglio se stessi e le relazioni interpersonali e come applicare la teoria psicologica di Adler nella vita quotidiana.
Capitolo 4 Sistema di comando
sistema di comando
sistema di comando
Il sistema di istruzioni è la parte centrale dell'architettura del set di istruzioni (ISA).
Formato base delle istruzioni
istruzione di indirizzo zero
un comando di indirizzo
Due istruzioni per l'indirizzo
Tre istruzioni per l'indirizzo
Quattro istruzioni per l'indirizzo
Formato delle istruzioni del codice operativo a lunghezza fissa
I codici operativi a lunghezza fissa sono molto utili per semplificare la progettazione dell'hardware del computer e migliorare la decodifica delle istruzioni e la velocità di riconoscimento.
Formato di istruzioni del codice operativo esteso
Il tipo di operazione dell'istruzione
trasmissione dati
Trasferimento tra registri (MOV)
L'unità di memoria legge i dati nel registro della CPU (LOAD)
Il registro della CPU scrive i dati nell'unità di memoria (STORE)
Operazioni aritmetiche e logiche
Aggiungere (ADD), sottrarre (SUB), confrontare (CMP), moltiplicare (MUL), dividere (DIV), aggiungere 1 (INC), sottrarre 1 (DEC), AND (AND), o (OR), negare ( NOT ), OR esclusivo (XOR)
funzionamento del turno
Spostamento aritmetico, spostamento logico, spostamento circolare
istruzioni di controllo del programma
Istruzioni per il controllo del circuito
CICLO L1. Ogni volta che viene eseguita questa istruzione, il numero di cicli nel contatore di cicli ECX viene diminuito di 1, quindi viene valutato se ECX è 0. Se non è 0, il programma andrà a L1 per continuare l'esecuzione, altrimenti il ciclo terminerà e verrà eseguita l'istruzione successiva dell'istruzione LOOP.
istruzione di trasferimento
trasferimento incondizionato
trasferimento condizionato
Utilizzare JZ e JNZ per rappresentare la ramificazione quando = e ≠ e utilizzare JGE/JAE, JG/JA, JLE/JBE e JL/JB per rappresentare la ramificazione quando ≥, >, ≤ e < rispettivamente dei numeri con segno/senza segno.
Chiamata di subroutine e istruzioni di ritorno
istruzioni di chiamata di subroutine
L'indirizzo dell'istruzione successiva dell'istruzione del rotore nel programma principale è chiamato punto di interruzione e il punto di interruzione è l'indirizzo di ritorno quando il sottoprogramma ritorna al programma principale.
istruzione call in x86, istruzione jal in MIPS
comando di ritorno
istruzione ret in x86, istruzione jr $ra in MIPS.
La differenza tra istruzioni di chiamata e istruzioni di trasferimento
Le istruzioni di trasferimento vengono trasferite all'interno dello stesso programma, mentre le istruzioni del rotore vengono trasferite tra programmi diversi.
Non è necessario che l'istruzione di trasferimento ritorni alla posizione originale, mentre non è necessario che l'istruzione del rotore ritorni alla posizione originale.
Le istruzioni del rotore e le istruzioni di restituzione sono generalmente incondizionate, mentre le istruzioni di trasferimento condizionate richiedono condizioni.
Operazioni di input e output
Quando il dispositivo esterno e la memoria principale adottano una modalità di indirizzamento unificato, non è necessario impostare istruzioni I/O dedicate e le istruzioni di accesso alla memoria possono essere utilizzate per accedere direttamente al dispositivo esterno.
istruzioni per la manipolazione dello stack
Istruzioni per l'elaborazione delle stringhe
Modalità di indirizzamento delle istruzioni
Indirizzamento delle istruzioni e indirizzamento dei dati
Indirizzamento delle istruzioni (la ricerca dell'indirizzo della successiva istruzione da eseguire è chiamata indirizzamento delle istruzioni)
indirizzamento sequenziale
L'indirizzo dell'istruzione successiva si forma aggiungendo uno a PC, ovvero EA=(PC) “1” dell'indirizzo dell'istruzione successiva. Tra questi, "1" è il numero di unità di memoria occupate dall'istruzione corrente.
saltare l'indirizzamento
Indirizzo assoluto (ottenuto direttamente dal marcatore)
Indirizzo relativo (offset relativo all'indirizzo dell'istruzione corrente)
Indirizzamento dei dati (la ricerca dell'indirizzo dei dati di questa istruzione è chiamata indirizzamento dei dati)
Metodi comuni di indirizzamento dei dati
indirizzamento implicito
Indirizzamento immediato (numero).
MOV EAX,2008H
Indirizzamento diretto
MOV EAX,[2008H]
Indirizzamento indiretto
MOV EAX,@2008H @ è il flag di indirizzamento indiretto
Registrare l'indirizzamento
MOV EAX,ECX
registrare l'indirizzamento indiretto
MOV ALE,[EBX]
indirizzamento relativo
EA=PC 1 D
indirizzamento di base
Utilizza registri speciali: il registro dell'indirizzo di base utilizza il metodo di indirizzamento implicito e non necessita di essere esplicitamente indicato nell'istruzione. Il campo dell'indirizzo formale nell'istruzione fornisce il valore di offset coinvolto nell'indirizzamento di base. Utilizzo dei registri generali: è necessario aggiungere un campo numero di registro per indicare il numero del registro dell'indirizzo di base utilizzato.
indirizzamento indicizzato
MOV EAX,32[ESI] #Aggiungi l'offset 32 al valore del registro indice ESI per formare un indirizzo per accedere alla memoria principale e inviare il risultato a EAX.
indirizzamento dello stack
pila di memoria
pila di registri
rappresentazione in codice a livello macchina di un programma
Formato delle istruzioni di assemblaggio
Confronto tra comandi in formato AT&T e comandi in formato Intel
Istruzioni comuni (formato Intel)
Le etichette utilizzate per gli operandi rappresentano rispettivamente registri, memoria e costanti.
<reg>: rappresenta qualsiasi registro. Se è seguito da un numero, specificarne il numero di cifre.
<mem>: rappresenta l'indirizzo di memoria
<con>: rappresenta una costante a 8 bit, 16 bit o 32 bit
istruzioni per il trasferimento dei dati
istruzioni di movimento
spingere l'istruzione
comando pop
Istruzioni operative aritmetiche e logiche
comando jmp
Prestare attenzione alla distinzione tra jmp (salto incondizionato) e jcondition (istruzioni di salto condizionato)
istruzione jcondizione
comando cmp/test
cmp e le istruzioni di test vengono solitamente utilizzate insieme all'istruzione jcondition
istruzione di chiamata/ret
Istruzioni comuni per le operazioni aritmetiche
Istruzioni operative logiche comuni
Rappresentazione a livello macchina delle chiamate di procedura
Supponiamo che il processo P (chiamante) chiami il processo Q (chiamato). I passaggi di esecuzione della chiamata alla procedura sono i seguenti
1) P inserisce i parametri di ingresso (parametri effettivi) dove Q può accedervi.
2) P memorizza l'indirizzo del mittente in un luogo specifico, quindi trasferisce il controllo a Q. Istruzione CHIAMA
3) Q salva la posizione di P (il contenuto del registro generale) e alloca spazio per le proprie variabili locali non statiche.
4) Eseguire il processo Q.
5) Q ripristina la scena di P, mette il risultato restituito da qualche parte a cui P può accedere e libera lo spazio occupato dalle variabili locali.
6) O estrae l'indirizzo del mittente e trasferisce il controllo a P. istruzione RET
Istruzione di chiamata di funzione: chiama <nome funzione>
①Inserisci il vecchio valore IP nello stack (salvalo nella parte superiore dello stack frame della funzione) ② Imposta il nuovo valore di IP e trasferisci incondizionatamente alla prima istruzione della funzione chiamata
Istruzione di ritorno della funzione: ret
Trova il vecchio valore IP (ovvero l'indirizzo di ritorno) dalla parte superiore dello stack frame della funzione, estrailo dallo stack e ripristina il registro IP
Contrassegna l'intervallo di frame dello stack: registro EBP, ESP
ebp: punta al "fondo" dello stack frame corrente
esp: punta alla "cima" dello stack frame corrente
L'accesso ai dati all'interno dello stack frame è basato su ebp ed esp.
Come accedere allo stack frame?
Come cambiare stack frame quando viene chiamata una funzione?
"Elaborazione di routine" all'inizio di ogni funzione
push ebp #Salva l'indirizzo base dello stack frame della funzione di livello precedente (vecchio valore di ebp)
mov ebp,esp #Imposta l'indirizzo base dello stack frame della funzione corrente (ebp nuovo valore)
Come cambiare stack frame quando ritorna una funzione?
"Elaborazione di routine" prima di ogni funzione ret
Nota: la parte inferiore di ogni stack frame viene utilizzata per salvare l'indirizzo di base dello stack frame precedente.
mov esp, ebp #Lascia che esp punti alla fine dello stack frame corrente
pop ebp #Estrae dallo stack l'elemento puntato da esp e lo scrive nel registro ebp
Quale contenuto può essere contenuto in uno stack frame
Rappresentazione a livello macchina delle istruzioni select
istruzione di trasferimento incondizionata
jmp<indirizzo> #PC trasferito incondizionatamente a <indirizzo> jmp 128 #<indirizzo> può essere fornito come costante jmp eax #<indirizzo> può provenire da un registro jmp[999] #<indirizzo> può provenire dalla memoria principale jmp NEXT #<indirizzo> può essere ancorato con "etichetta"
Il principio alla base dell'istruzione cmp
Essenzialmente, esegue l'operazione di sottrazione a-b e genera i bit di flag OF, ZF, CF, SF
je<indirizzo> #Se a==b, salta, ZF==1?
jne<indirizzo> #Se a!=b, salta, ZF==0?
jg<indirizzo> #Se a>b, salta, 2F==0 && SF==OF?
jge<indirizzo> #Se a>=b, salta, SF==OF?
jl<indirizzo> #Se a<b, salta, SF!=OF?
jle<indirizzo> #Se a<=b, salta, SF!=OF||ZF==1?
Rappresentazione a livello macchina delle istruzioni di ciclo
Implementazione di cicli utilizzando istruzioni di trasferimento condizionale
Utilizzare l'istruzione loop per implementare il loop
Concetti base di CISC e RISC
Computer con sistema di istruzioni complesso (CISC)
caratteristica principale
Il sistema di comando è complesso ed enorme
La lunghezza dell'istruzione non è fissa, esistono molti formati di istruzione e molte modalità di indirizzamento.
Non ci sono restrizioni sulle istruzioni a cui è possibile accedere dalla memoria
La frequenza di utilizzo delle varie istruzioni varia notevolmente.
Il tempo di esecuzione delle varie istruzioni varia notevolmente e la maggior parte delle istruzioni richiede più cicli di clock per essere completata.
La maggior parte dei controller utilizza il controllo tramite microprogramma
È difficile generare programmi in codice oggetto efficienti con una compilazione ottimizzata
La maggior parte di essi può raggiungere la compatibilità software, ovvero le macchine di fascia alta contengono tutte le istruzioni delle macchine di fascia bassa e possono essere espanse.
Computer con sistema di istruzioni ridotto (RISC)
caratteristica principale
Seleziona alcune delle istruzioni semplici utilizzate più frequentemente Le funzioni delle istruzioni complesse sono realizzate da una combinazione di istruzioni semplici.
La lunghezza dell'istruzione è fissa, esistono pochi tipi di formati di istruzione ed esistono pochi tipi di modalità di indirizzamento.
Solo le istruzioni Load/Store (fetch/store) accedono alla memoria e le operazioni di altre istruzioni vengono eseguite tra i registri.
Il numero di registri di uso generale nella CPU è piuttosto elevato
RISC deve utilizzare la tecnologia della pipeline di istruzioni e la maggior parte delle istruzioni viene completata entro un ciclo di clock.
Principalmente basato sul controllo del cablaggio, nessun uso o meno del controllo del microprogramma
Prestare particolare attenzione al lavoro di ottimizzazione della compilazione per ridurre i tempi di esecuzione del programma
La maggior parte delle macchine RISC non sono compatibili con le macchine più vecchie
Confronto tra CISC e RISC