Sappi che tenere a mente il tuo programma è memorizzato in aree diverse a seconda della tua configurazione sul tuo
computer desktop.
Il programma può essere memorizzato sul disco rigido o sulla RAM o in entrambi, a seconda di
come è stato configurato il computer, la scheda madre ha un bus indirizzo e il bus dati il bus indirizzo per i circuiti
di utilità si trova all'interno del chip del microprocessore.
Ora il contatore del programma è un registro di una posizione di memoria come qualsiasi altro registro nel microprocessore.
Ora mentre conta automaticamente con tutte le sfere dell'orologio è un registro che puoi leggere e puoi scrivere
per selezionare vedere il tuo programma alla riga 40 in hack e in realtà hai scritto il tuo programma per guardare uno
degli ingressi per vedere se premi il bottone.
Rileva che hai premuto quel pulsante e quindi vuoi saltare in avanti nel tuo programma per dire
linea esadecimale.
A A tutto ciò che devi fare è impostare il contatore del programma sul braccio ETU.
Il programma contrasta un registro che ha un indirizzo come qualsiasi altro registro e puoi semplicemente
scrivere il tuo programma in modo che indirizzi il contatore del programma e carichi quel registro con qualsiasi
numero desideri.
Proprio come qualsiasi altro registro.
Quindi ora puoi saltare il tuo programma in questo modo.
Ad esempio, di solito, se raggiungi la fine del tuo programma, lo rimandi all'inizio.
Altrimenti eseguirà il programma una volta e quindi interromperà tutte le funzioni.
Ora forse è proprio quello che vuoi e quello che vuoi è che è il tuo programma
che puoi fare quello che vuoi ma molto probabilmente vorrai eseguire il tuo programma più e più
volte in un ciclo continuo.
Quindi alla fine del tuo programma invii un esagono 0 0 al tuo contatore del programma e voilà
hai appena impostato il tuo programma all'inizio.
Quindi, con questa idea che il tuo programma sta andando a correre più e più volte pensare al tuo programma
come una parte di routine di quella routine è controllare se hai spinto il grande pulsante rosso che vuoi che il tuo robot inizi
a correre in cerchio urlando .
Ha spinto il pulsante rosso per la tua vita o qualcosa del genere.
Hai una serie di istruzioni che vuoi che il robot funzioni quando premi il grande pulsante rosso.
Quando viene premuto quel grosso pulsante rosso, vogliamo lasciare la nostra normale routine in cui il robot sta lavando
i piatti.
Quindi la routine normale dei robot è di sedersi lì e fare i piatti.
Comunque ora vogliamo lasciare temporaneamente la nostra routine ed eseguire una subroutine che la subroutine possa essere eseguita in tre cerchi che urlano,
ah, mette il grosso pulsante rosso in esecuzione per le vostre vite e poi torna
a fare qualsiasi cosa prima di eseguire quella subroutine .
Quindi chiamiamo questa subroutine la nostra subroutine potrebbe essere di 30 righe di codice e in realtà possiamo memorizzare quel codice in
qualsiasi indirizzo di memoria che vogliamo.
Quindi diciamo che abbiamo riempito le 30 righe di codice a partire dall'indirizzo esadecimale 5 che stiamo eseguendo la tua routine originale
e il nostro contatore del programma era a 0 F quando abbiamo colpito il grande pulsante rosso.
Ecco cosa succede.
L'istruzione del codice macchina è chiamata quando chiamiamo subroutine a frase.
Quali sono i circuiti di utilità che chiamerò Dan, l'uomo estrae il numero dal contatore
del programma e lo inserisce nello stack.
Una pila è come una mensola.
Lo stack è una pila di posizioni di memoria dei registri.
Quindi l'uomo inserisce l'indirizzo per la subroutine nel contatore del programma.
Così ora il microprocessore inizia a eseguire il programma memorizzato all'indirizzo di hacking.
D 5 alla fine della routine si impartisce un comando per tornare.
Fondamentalmente stai dicendo a papà l'uomo che vuoi restituire da dove siamo venuti.
Sadan l'uomo afferra il numero dalla pila e lo mette nel contatore del programma.
Ora sei tornato a eseguire la routine principale originale esattamente dove ti eri interrotto.
Ora ecco la cosa.
Quindi l'uomo ha una pila di scaffali che puoi chiamare una subroutine.
E poi mentre sei nel mezzo di quella sottoprogramma in esecuzione puoi chiamare un'altra subroutine che
puoi chiamare.
Quindi chiami una subroutine.
Dan l'uomo prende il numero dal contatore del programma e ne fa il resto sul ripiano più in alto della pila.
Inserisce l'indirizzo per la prima subroutine di superficie nel contatore del programma e inizia a eseguire il
programma D5.
Ora mentre il mio robot gira in tondo e urla che spingo il pulsante rosso
grande, prendo il grande pulsante arancione che non so farò sparare al robot perché sai che respirare fuoco
è un portafoglio di opzioni che va in giro urlando su come si preme il grosso pulsante rosso, la mia
subroutine antincendio si trovava in corrispondenza dell'indirizzo di memoria EF 0, il nostro contatore del programma continua a contare.
Quindi era diventato esadecimale.
D a.
Quando ho colpito il grande pulsante arancione.
Quindi Dan l'uomo afferra il numero in cima allo stack lo infila sullo scaffale sottostante, afferra il DA dal contatore del
programma lo mette in cima allo stack.
Poi gira f 0 l'indirizzo per la nostra subroutine arancione del pulsante nei contatori del programma ai microprocessori ora
inizia a eseguire il programma situato in hack di f 0.
Quando arriva alla fine di quella subroutine il programma che hai scritto emette il comando di ritorno.
Dan l'uomo prende il numero.
Questo è in cima allo stack e lo mette nel contatore del programma.
Prende il numero dal secondo scaffale della pila e lo mette in cima alla pila.
Il programma riprende da dove era stato interrotto nella prima subroutine.
Arriva alla fine di quella subroutine, dice a Dan l'uomo di tornare.
Dan l'uomo ora prende il numero dalla cima del ripiano allo stile più in alto dello stack e lo
inserisce nel contatore del programma.
Ora siamo tornati al punto in cui ci eravamo interrotti nella nostra cattiva routine.
Quindi lo stack dell'uomo potrebbe essere solo 10 alti in alto, puoi chiamare una subroutine quindi una sottoroutine sub all'interno di quella
quindi una sub sub suburb team all'interno di quella poi una sotto sub sub sub di
routine e poi l'uomo continuerà a catturare qualunque numero era nel contatore del programma.
Lo metterà in cima alla pila e muoverà gli altri numeri nella pila uno ora che ha solo 10 scaffali
nel suo stack.
Se chiami 10 subroutine senza problemi, ma il suo stack è pieno, non ha più spazio di archiviazione.
Ha esaurito i registri di archiviazione nello stack.
Quindi prova a chiamare una subroutine 11 e poi l'uomo perde e scatta.
Si gira e inizia a urlare contro di te.
Non posso più farlo, posso farlo.
Non vedi lo stack che scorre troppo.
Questo è chiamato un errore di overflow dello stack e potresti aver riscontrato un errore simile nei tuoi
viaggi su Internet o nei programmi che Cresta sul tuo computer.
Esiste persino un sito Web chiamato Stack Overflow che utilizza questo errore comune come nome della propria home page.
Quindi lo stack è un gruppo importante di registri che vengono utilizzati per memorizzare numeri temporanei come
i contatori del programma durante le subroutine, ma lo stack di solito è limitato.
Dipende dal microprocessore.
Ho visto il più comunemente avere una pila di 10 livelli di profondità.
Ora un microprocessore.
Tutto ciò che fa è trattare con i numeri.
Questo è davvero tutto ciò che fa.
Quindi eseguirà la matematica nella manipolazione dei numeri.
La caduta di Clinton, per esempio, è stata quella che chiamiamo complementare.
Ha cambiato tutti gli zeri e gli zeri in uno.
Ora immagina questo per un secondo se darai un'occhiata al registro di Clinton che è
a 8 bit un byte guardando solo un bit per farlo.
Il circuito di Clinton deve avere un gate non ma deve essere combinato con un gate AND perché deve essere
guidato dal ciclo di clock che Clinton deve controllare quando il circuito effettua la conversione in modo da
poter memorizzare il nuovo numero in un secondo registro .
Quindi il secondo registro richiede anche tutte queste porte come abbiamo fatto prima e
quindi le linee di controllo per scaricare quel registro sul bus dati per trasferirlo ovunque sia necessario.
Quindi questa è una funzione semplice e abbiamo bisogno di moltiplicare tutti questi circuiti per otto perché ci
sono 8 bit in ogni morso che Clinton deve convertire in altri circuiti di utilità che potrebbero avere il circuito
duro per aggiungere due numeri insieme.
Quindi ha bisogno di avere due registri uno per ogni numero da aggiungere che sono collegati da tutta la massa di
gate di controllo del clock che aggiungono i due bit.
E poi se c'è un riporto, è come se aggiungessi un sette e un otto arrivasse a 5 e
portassi l'uno.
Bene se aggiungi binario 1 e binario 1 ottieni 0 e porti quello al prossimo bit più significativo.
Tutti i circuiti devono avere tutte le porte per fare tutto questo.
C'è un sacco di circuiti coinvolti qui.
Quindi puoi iniziare a immaginare il circuito coinvolto nella moltiplicazione o nella divisione a 8 cifre.
Diventa davvero grande e complicato in una grande fretta.
Se volessimo, potremmo costruire quell'enorme varietà di circuiti di utilità collegati a ogni singolo
registro nel microprocessore.
Ma perché dovremmo farlo.
La quantità di spazio che occuperebbe tutto quel circuito estraneo sarebbe enorme.
Piuttosto, ciò che i progettisti fanno è creare un registro specializzato che ha tutti questi complessi circuiti digitali collegati ad esso per
eseguire tutte le funzioni matematiche se abbiamo bisogno di fare matematica sul numero che è memorizzato in
un registro da qualche parte.
Carichiamo quel numero dal registro nel registro di elaborazione matematica, facciamo qualsiasi funzione matematica vogliamo
fare e quindi possiamo inviare il risultato ovunque nel registro da dove
proviene.
O qualche altra destinazione nel microprocessore.
In questo modo abbiamo solo bisogno di uno di tutti quei circuiti di utilità che sono così grandi e complicati.
Il registro matematico di specialità è chiamato un gruppo di nomi diversi.
L'unità logica aritmetica o Alieu in breve è un nome.
E questo ha molto senso per il nome, ma ho visto che ha chiamato tutti i tipi di cose diverse che ho
avuto il mio primo assaggio della programmazione del codice macchina sul venerabile Commodore VIC 20, che è stato uno dei
primi computer domestici mai costruiti.
Era anni prima del suo tempo ed era il predecessore del Commodore 64.
Mentre il primo comando di codice macchina che abbiamo appreso era LDK caricare l'accumulatore, l'accumulatore era il nome
che hanno dato al registro matematico speciale e il primo comando che abbiamo appreso era caricato
con il numero su cui poi eseguivamo alcune funzioni matematiche perché era la matematica Registrare.
Quindi, quando il microprocessore stava per essere utilizzato nella prossima lezione, lo chiamano registro di lavoro.
Quindi, qualunque sia il suo nome, questo registro di specialità è il registro a cui è collegato tutto questo circuito
complicato in modo da poter manipolare il numero che è stato dato, ora che alcuni microprocessori hanno più
di un registro di massa.
Ma il numero di questi registri di specialità è sempre un piccolo numero per il semplice
fatto che ognuno richiede enormi banchi di circuiti di utilità che sono così complicati e occupano così tanto spazio e lavoro
per costruire un grande Sei ancora esausto.
Perché ora scaveremo nei microcontrollori.