Introduzione al funzionamento dei processori!

Nei giorni in cui vi prende l'ispirazione hi-tech...prendete in mano la tastiera e sfogatevi qui!

Moderatori: cb_123, tonertemplum

Messaggiodi thrantir il 12 gen 2004, 12:48

azarius ha scritto:ora tutto chiaro.... scusami se mi sono perso per la strada... ma capita....


Mica ti devi scusare! Se già le sapevate queste cose ke ve lle raccontavo a fare??? :D :D :D
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

 

Messaggiodi thrantir il 12 gen 2004, 13:23

Ora ke avete visto un primo esempio di interpretazione di una istruzione è il caso di introdurre alcune istruzioni in più, per poter avere un set Assembler completo!

Allora, per ora abbiamo le istruzioni aritmetike, ci servono altre due classi di istruzioni:

1) Quelle di "salto"

2) Quelle di accesso in memoria

Per capire le istruzioni di salto dobbiamo soffermarci un attimo su come avviene l'esecuzione di un programma... come potete immaginarvi un programma è sostanzialmente una successione di istruzioni e un insieme di dati su cui fare operazioni, un po come una ricetta dove i dati sono gli ingredienti, le istruzioni sono le cose da fare e il processore è il nostro chef! Ke ne dici azarius, ti piace l'esempio? :wink:
In generale il processore esegue le istruzioni nell'ordine in cui sono scritte, xò in certe occasioni si ha la necessità di "saltare" da una istruzione ad un'altra ke nn è la diretta successiva... ci servono quindi delle istruzioni ke ci consentano di dire al processore "ora invece ke eseguire la prossima istruzione vai direttamente a quest'altra"... supponiamo quindi di avere un'istruzione del tipo :
"Vai a, indirizzo"... i primi 8 bit dell'istruzione diranno al processore ke si trova davanti a un'istruzione di salto, i restanti 24 gli diranno a quale istruzione deve saltare... x ora non siamo abbastanza esperti per dare un significato all'indirizzo presente nella istruzione ke dice al processore dove trovare l'istruzione da eseguire, immaginate cmq ke si tratta di un indirizzo di memoria.
A questa istruzione ne aggiungiamo un'altra più o meno uguale dove al posto dell'indirizzo c'è un numero corrispondente ad un registro in cui si trova l'indirizzo della istruzione da eseguire, l'istruzione sarà quindi del tipo "Vai a, registro contenente l'istruzione"
Queste due istruzioni ci permettono quello ke si kiama "salto incondizionato", cioè sono delle istruzioni ke semplicemente dicono al processore "vai qui!"... ma esistono delle situazioni in cui bisogna decidere se saltare o no... tornando all'esempio della ricetta, spesso trovate scritto "mescolare fino a quando l'impasto è ben amalgamato", analizziamo questa cosa: c'è una cosa da fare (mescolare) e una cosa da controllare ke ci dice quando smettere di fare quella operazione e passare alla prossima (l'impasto deve essere ben amalgamato)... ebbene spesso in un programma ci si trova davanti alla necessità di un meccanismo simile a questo, i più pratici avranno certamente riconosciuto il famigerato "ciclo iterativo" ke si compone di una condizione (detta tecnicamente "guardia") e di una serie di cose da fare fino a quando la guardia rimane vera, quando la guradia diventa false si smette di fare quelle operazioni e si passa alle successive... ora cerco di farvi un esempio facile, vi scriverò una serie di istruzioni ke possono essere un programmino facile facile; ogni istruzione avrà davanti un numero detto etiketta ke ci servirà per riferirci a quella istruzione in particolare e ci permetterà di "andare" direttamente a quella istruzione con un salto:

0 - scrivi 0 nel registro 3
1 - se il contento del registro 1 è minore del contenuto del registro 2 allora salta all'istruzione 5
2 - sottrai dal contenuto del registro 1 il contenuto del registro 2 mettendo il risultato nel registro 1
3 - aumenta di 1 il contenuto del registro 3
4 - se il contento del registro 1 è maggiore del contenuto del registro 2 allora salta all'istruzione 2
5 - .......

Supponete ke nei registri 1 e 2 siano stati scritti precedentemente dei valori con l'unico vincolo ke quello scitto nel registro 1 sia maggiore di quello scritto nel registro 2. Ora vi lascio con un interrogativo pesante... cosa fa questo semplice programmino? Cosa conterranno alla fine i registri 1 e 3? Se avete difficoltà a capire per bene il programmino fatevi un disegno in cui ogni istruzione è rakkiusa in un cerchietto e inserite delle frecce da un'istruzione all'altra se c'è la possibilità ke le due istruzioni possano essere eseguite una di seguito all'altra... questo è suppergiù il "diagramma di flusso" del programma
Ultima modifica di thrantir su 12 gen 2004, 13:27, modificato 1 volte in totale.
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi thrantir il 12 gen 2004, 13:26

Accidenti mi stavo incasinando nel mandare il post :roll:
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi azarius il 12 gen 2004, 15:12

un'equazione di secondo grado praticamente.... se delta maggiore di 0.. se delta minore di 0... se delta uguale a 0... come un'equazione di secondo grado... bellissimo :D :D :D
.::Abit_An7_-_XP-M_2400+_-_Thermaltake_Pipe101_&_UFO_-_2*256mb_KingSton_DDR_400mhz_2_3_2_11_-_5900xt_128mb_-_r::. .::ThermalTake Xaser V::.
azarius
Saggio del pianeta
Saggio del pianeta
 
Messaggi: 704
Iscritto il: 31 dic 2003, 10:40
Località: il deserto....

Messaggiodi azarius il 12 gen 2004, 15:28

allora dovrebbe fare questo il programma
1° tipo reg.1<reg.2
[reg.1]-->1
[reg.2]-->2
[reg.3]-->0(x l'istruzione 0)

allora il programma finisce all'istru 1 ke ti manda alla 5...e il reg.3 rimane 0?? O.ò

2° tipo reg.1>reg.2
[reg.1]-->2
[reg.2]-->1
[reg.3]-->0
0->reg.3=0
1->falso
2->(reg.1)-(reg.2)=x(in reg.1)-->2-1=1(in reg.1)
3->(reg.3)+1=0+1=1
4->if (reg.1)>(reg.2)-->se vera(v. istruzione 2); se falsa continua-->1>1
-->falsa
5->....(programma finito?!?!?! ;P)


Spero ke funzioni così... cmq di al cuoco che sa cucinare ;P ;P ;P
.::Abit_An7_-_XP-M_2400+_-_Thermaltake_Pipe101_&_UFO_-_2*256mb_KingSton_DDR_400mhz_2_3_2_11_-_5900xt_128mb_-_r::. .::ThermalTake Xaser V::.
azarius
Saggio del pianeta
Saggio del pianeta
 
Messaggi: 704
Iscritto il: 31 dic 2003, 10:40
Località: il deserto....

Messaggiodi thrantir il 12 gen 2004, 16:06

No no nn ci siamo, mi sa ke è colpa mia ke mi son spiegato male, ti riscirvo meglio l'esempio aggiungendo le cose ke avevo lasciato sottinteso:

0 - scivi 50 nel registro 1
1 - scrivi 3 nel registro 2
2 - scrivi 0 nel registro 3
3 - se il contento del registro 1 è minore del contenuto del registro 2 allora salta all'istruzione 7
4 - sottrai dal contenuto del registro 1 il contenuto del registro 2 mettendo il risultato nel registro 1
5 - aumenta di 1 il contenuto del registro 3
6 - se il contento del registro 1 è maggiore del contenuto del registro 2 allora salta all'istruzione 4
7 - .......

riesci a vederlo meglio ora?

Il fatto di mettere 50 nel registro 1 e 3 nel registro 2 è arbitrario, potete metterci il valore ke volete
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi thrantir il 12 gen 2004, 16:16

mi correggo, ho riletto x bene il tuo post e hai capito come procede il programma, rimane il fatto ke mi devi dire cosa fa il programma! sennò tiu bakketto :wink:

Skerzi a parte, se provi a eseguire il programma come l'ho riscritto forse intuisci ke significato hanno alla fine dell'esecuzione il registro 1 e il registro 3!
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi azarius il 12 gen 2004, 16:23

trasformandolo come avevo fatto prima esce...

[reg.1]-->50-->47-->44-->41[....]-->2
[reg.2]-->3
[reg.3]-->0-->1-->2-->3[...]-->16

0->scrivi 50 in reg.1 # operazione fatta nella tabella
1->scrivi 3 in reg.2 # qui sopra... no???
2->scrivi 0 in reg.3 #
3->reg.1<reg.2-->vera->istruzione7;falsa->istruzone4##falsa
4->(reg.1)-(reg.2)=47(in reg.1)
5->(reg.3)+1=1
6->(reg.1)>(reg.2)-->vera->istruzione4;falsa-->istruzione7##vera
7->...
.::Abit_An7_-_XP-M_2400+_-_Thermaltake_Pipe101_&_UFO_-_2*256mb_KingSton_DDR_400mhz_2_3_2_11_-_5900xt_128mb_-_r::. .::ThermalTake Xaser V::.
azarius
Saggio del pianeta
Saggio del pianeta
 
Messaggi: 704
Iscritto il: 31 dic 2003, 10:40
Località: il deserto....

Messaggiodi azarius il 12 gen 2004, 16:27

siiii il reg.3 t'indica quante volte si è dovuto eseguire l'istruzione 4 perchè alla fine il reg.1 si maggoire del reg.2......... oppure signifa qualcos'altro...O.ò
.::Abit_An7_-_XP-M_2400+_-_Thermaltake_Pipe101_&_UFO_-_2*256mb_KingSton_DDR_400mhz_2_3_2_11_-_5900xt_128mb_-_r::. .::ThermalTake Xaser V::.
azarius
Saggio del pianeta
Saggio del pianeta
 
Messaggi: 704
Iscritto il: 31 dic 2003, 10:40
Località: il deserto....

Messaggiodi thrantir il 12 gen 2004, 16:35

ci sei mooooolto vicino, provo a darti una dritta, vediamo se ci arrivi, metti 16 nel primo registro, 2 nel secondo, vedi cosa ottieni alla fine nel terzo
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

Messaggiodi azarius il 12 gen 2004, 16:45

abbiamo fatto una divisione....

alla fine avremo reg.1-->0; reg.2-->2; reg.3-->8
siamo partiti con reg.1 16.... 8*2=16...
e la stessa cosa con 50 solo che avevamo 2 di resti praticamente
(16*3)+2=50

hihihihiihihihihihihihihihihihihihi 8) 8) 8) 8) 8) 8) 8)
.::Abit_An7_-_XP-M_2400+_-_Thermaltake_Pipe101_&_UFO_-_2*256mb_KingSton_DDR_400mhz_2_3_2_11_-_5900xt_128mb_-_r::. .::ThermalTake Xaser V::.
azarius
Saggio del pianeta
Saggio del pianeta
 
Messaggi: 704
Iscritto il: 31 dic 2003, 10:40
Località: il deserto....

Messaggiodi sku il 12 gen 2004, 16:46

io lo so!!! io lo so!!! professore!!! ioioioioioioioioio
se mi fa dare la risposta le dico una battuta:
cosa farebbe il suo cane, morto l'altro ieri, se fosse ancora vivo??
Gratterebbe sul coperchio della bara!!!

uazuazuazuazuazuazuazuaz

DISCLAIMER
Non e' stato ferito alcun cane durante la produzione del post
sku
Cittadino onorario
Cittadino onorario
 
Messaggi: 116
Iscritto il: 07 gen 2004, 16:46
Località: Pisa

Messaggiodi sku il 12 gen 2004, 16:47

azz... battuto sul tempo...
in effetti il mio precedente post doveva andare prima di quello di aza... controllare l'ora di post per credere....
sku
Cittadino onorario
Cittadino onorario
 
Messaggi: 116
Iscritto il: 07 gen 2004, 16:46
Località: Pisa

Messaggiodi azarius il 12 gen 2004, 16:50

hihihihihihihihihihihihihihihihihihihihihihi..............

sku sorry :P :P :P

15:45 contro 15:46 hihihihihihihihihihihihihihihihihi

sku sorry :P :P

devi caxxegiare con il cane....hihihihihi
Ultima modifica di azarius su 12 gen 2004, 16:53, modificato 1 volte in totale.
.::Abit_An7_-_XP-M_2400+_-_Thermaltake_Pipe101_&_UFO_-_2*256mb_KingSton_DDR_400mhz_2_3_2_11_-_5900xt_128mb_-_r::. .::ThermalTake Xaser V::.
azarius
Saggio del pianeta
Saggio del pianeta
 
Messaggi: 704
Iscritto il: 31 dic 2003, 10:40
Località: il deserto....

Messaggiodi thrantir il 12 gen 2004, 16:53

azarius prende un bel 10 e passa l'esame! sku invece ke si fa il grosso e invece di scrivere la tesi fa battute raggelanti si becca una nota e domani viene accompagnato :wink:

visto ke azarius ha abilmente risposto alla mia piccola domanda a breve un nuovo post ke spiegherà l'ultima classe di istruzioni, quelle di accesso in memoria!
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratori
X postare immagini
-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto
Avatar utente
thrantir
Moderatore
Moderatore
 
Messaggi: 8897
Iscritto il: 27 mag 2003, 13:32
Località: Pisa

 
PrecedenteProssimo

Torna a Guide

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron