di thrantir il 11 gen 2004, 14:16
Sigaretta accesa, cervello partito... possiamo riprendere!
Allora, da quello ke abbiamo detto prima possiamo cominciare a delineare un po meglio il nostro processore... abbiamo scoperto ke dentro ci stanno dei componenti ke gli permettono di comunicare con la memoria, di capire all'arrivo di una istruzione assembler ke tipo di istruzione è, di eseguire delle operazioni matematike, di memorizzare il risultato (i registri!)
vediamo ora cosa succede quando arriva una istruzione di somma. Vi ricordo ke il processore si accorge ke l'istruzione è di somma xkè i primi 8 bit dell'istruzione sono (secondo le nostre ipotesi) uguali a 00000000, passiamo ora quindi quali sono i numeri ke deve sommare quindi cosa vogliono dire gli altri 24 bit dell'istruzione. Per far questo occorre fare una distinzione: a seconda del tipo di istruzione il processore può lavorare su dati ke sono già al suo interno (nei registri!) oppure su dati ke non stanno al suo interno (ancora) e quidi si trovano in memoria... x ora (x semplicità!) ci limitiamo al primo tipo, quindi il processore ha in qualke registro i dati ke vogliamo sommare, allora dovrebbe apparire kiaro quello ke l'istruzione deve dire al processore: deve dirgli quali sono i due registri ke contengono i due numeri da sommare! Come glielo dice? Pesno ke già qualcuno abbia intuito la soluzione: i registri sono numerati (x ki ha un po di esperienza in programmazione: i registri formano in pratica un array o vettore di dati)! Allora immaginate l'istruzione (ke vi ricordo è di 32 bit) divisa in 4 parti da 8 bit (in pratica in 4 byte) ciascuna. La prima come sappiamo indica a quale istruzione ci stiamo riferendo, la seconda indikerà il numero corrispondente al registro contenente il primo addendo, la terza il numero corrispondente al registro contenente il secondo addendo e la quarta il registro dove salvare il risultato dell'addizione...
per capirci meglio ecco una possibile istruzione:
00000000000000110000010000000001
Se separiamo i 4 gruppi otteniamo
00000000 - 00000011 - 00000100 - 00000001
ke tradotto in numeri decimali (le istruzioni sono kiaramente in binario!) vuol dire:
0 - 3 - 4 - 1
quindi interpretiamolo seguendo quello ke abbiamo detto prima: dal primo 0 il processore capisce ke dovrà eseguire una somma, i dune numeri da sommare sono nel 3° e nel 4° registro e il risultato della somma va memorizzato nel 1° registro...
Utilizzando la stessa tecnica possiamo dirgli di fare sottrazioni, moltiplicazioni e divisioni... siccome abbiamo fino a 8 bit per indicare un registro supporremo ke il processore al suo interno abbia almeno 2 alla 8 registri quindi almeno 256 registri (da 32 bit ciascuno!) quindi il nostro processore comincia ad avere una sua memorietta interna (formata dall'insieme dei registri) di 1Kbyte (4 byte * 256)
Cosa vi sembra? Credo ke il discorso sia stato un po complesso, aspetto x vedere se qualcuno vuole qualke kiarimento
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratoriX 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