Newsgroup: it.comp.lang.c++
Titolo: REGISTRI & VARIABILI!!!!!

Ho letto su un manuale di C++ (premetto che sono un neofita) che i registri
sono aree di memorizzazione che si trovano sul chip della CPU, ma non ho
capito bene a che cosa servono!!!
Ho inoltre letto che tali registri sono utilizzati per contenere delle copie
di lavoro di dati chiamati variabili. Che cosa sono e a cosa servono tali
variabili?
Grazie in anticipo Aw.

Le variabili e i registri sono il pane quotidiano del programmatore ;)
Una variabile è il nome che il programmatore da ad una o più locazioni di
memoria, adesso tu ti domanderai, perchè un programmatore deve dare un nome
ad una o più locazioni di memoria? ed io ti rispondo che: un programmatore
da un nome ad una o più locazioni di memoria per gestire i dati da elaborare
presenti in memoria centrale. Comunque senza le variabili non ci sarebbe
l'elaborazione dei dati ci sarebbe il caos, la disinformazione insomma
l'informatica andrebbe a farsi fot..ere.
I registri sono locazioni di memmoria interne alla CPU, ogni registro ha un
nome e quindi sono variabili a tutti gli effetti, con la differenza che tale
nome non gli è stato dato dal programmatore ma dal costruttore di CPU.
Un'altro concetto importante è che la CPU elabora unicamente i dati presenti
nei registri, o per meglio dire, i dati per  essere elaborati devono essere
presenti nei registri.
Spero di essere stato chiaro, ad ogni modo se ho detto stro...ate gli amici
del NG provvederanno subito a corregermi.
Mr_G_

- SNIP -
Aggiungo solo che i registri sono mostruosamente pių veloci della memoria
centrale, ed č per questo che i bravi programmatori sfruttano l'assembly
language per ottimizzare alcune operazioni.
San Vegeta from Hell
http://www.geocities.com/Area51/Dungeon/8436
(da visitare con un browser della Netscape)

...


...


 presenti nei registri.
Non è vero: il processore è in grado di elaborare dati anche
direttamente dalla memoria centrale.
EMG

variabili?
Celle di memoria in cui vengono memorizzati valori. Sono molto simili ai
registri, la differenza e` che le variabili risiedono in memoria centrale
(la ram), i registri invece sono delle aree di memoria private della cpu.
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  G: Per concludere, possiamo chiedervi di commentare
     l'attuale panorama informatico?
  I: /* l'attuale panorama informatico */
------------------------------------------------------------------

presenti in memoria centrale.
Non e` proprio cosi`... il concetto di variabile e` stato introdotto proprio per
evitare di pensare in termini di locazioni di memoria (indirizzi). Molto piu`
semplice ricordare "Pippo" che 0xA57F201BC...



Lascia perdere il discorso "se il registro ha un nome allora e` una variabile" e` molto
impreciso e un po' superficiale. I registri hanno un nome solo per facilitarne l'accesso,
come per le variabili, e` molto piu` facile ricordare un nome che un indirizzo. Il fatto che
il nome di un registro sia "predefinito" e` solo una comodita` per programmatori e assemblatori.
Pensa ai registri come al foglio di carta che usi quando fai dei calcoli a mano, essi sono centenitori
di valori, niente di piu`. Lo scopo dei registri e` quello di permettere (tra le altre cose) alla cpu di
lavorare a forte velocita`, alcuni registri poi sono delle vere e proprie "unita` di calcolo" (termine improprio,
ma non trovo niente di piu` preciso) capaci di eseguire velocemente certe operazioni (incremento,
shift di bit...).



Si hai perfettamente raggione, mediante il DMA, Infatti la CPU comunica con
la memoria centrale in modo diretto con la logica DMA ed in modo indiretto
mediante i registri.
Sai non ho voluto parlare di DMA per non confondere troppo le idee al nostro
amico.
Mr_G_

 mediante i registri.
La CPU accede direttamente alla memoria senza usare il DMA.
Il DMA serve per trasferire dati fra memoria e I/O senza impegnare
la CPU.
Quello che intendeva EMG probabilemnte e' che molti processori hanno
istruzioni che leggono i dati e/o scrivono il risultato in memoria
centrale anziche' nei registri interni.
	Mauro

 Si hai perfettamente ragione, mediante il DMA,
Scusami ma non c'è bisogno del DMA. Ci sono istruzioni che permettono di
modificare direttamente le locazioni di memoria tramite indirizzo. E poi
il DMA non c'entra per niente: quello permette semmai di scavalcare il
processore e far comunicare direttamente le periferiche con la memoria
centrale.
EMG


Vediamo se riesco a spiegare il tutto da un'altra prospettiva (che comunque
riassume quanto detto finora, non lo contraddice).
Tutte le informazioni elaborate da un computer vengono gestite usando una
gerarchia di memoria. Questa gerarchia è composta da livelli ordinati a
seconda del tempo di accesso: più breve è tale tempo, più velocemente si
riesce a reperire un'informazione e più velocemente si può elaborarla. Di
solito si dice che una memoria è più veloce di un'altra tenendo presente
tale schema.
Ora, sappiamo che l'unità di elaborazione in un computer è il
microprocessore, quindi tutti i dati devono essere trasferiti in luoghi dove
lui possa accedervi. Più lontano da esso si troveranno le informazioni, più
strada queste dovranno fare per giungere a destinazione. L'elemento più
penalizzante, comunque, non è tanto il trasporto quanto il tempo di accesso
al livello di memoria che le contiene. Quindi qualora ce ne sia la necessità
o la possibilità, le informazioni necessarie vengono trasferite da livelli
più lenti a livelli più veloci, in modo da poter diminuire il collo di
bottiglia presente tra CPU e memorie (la CPU lavora a velocità nettamente
superiore rispetto ad ogni altro componente). Partendo dal basso, la
gerarchia potrebbe essere così definita: unità a nastro, dischi floppy,
unità CD-ROM, dischi rigidi, memoria virtuale, RAM, cache memory (di primo o
secondo livello a seconda della distanza che la separa dalla CPU - distanza
in termini di locazione fisica (dentro o fuori dalla CPU), ma anche in
relazione alla frequenza di lavoro (la stessa o una frazione di quella della
CPU)) - registri. Generalmente, da un livello a quello superiore le
prestazioni aumentano, ma aumentano anche i costi e, quindi, diminuiscono le
dimensioni. In caso contrario, si trasferirebbe tutta l'informazione in un
unico livello (il più veloce) e tutta la gerarchia perderebbe di senso.
In conclusione, quando viene elaborata dell'informazione, puoi tenere sempre
presente questa organizzazione delle memorie.Tutte le volte che si presenta
la necessità o la convenienza di spostare dei dati dal loro corrente livello
ad uno più veloce lo si fa. In cima alla gerarchia ci stanno proprio i
registri che sono interni alla CPU e lavorano alla stessa frequenza della
CPU. Un' informazione  contenuta qui viene elaborata subito senza tempi
d'attesa.
Ci sarebbe dell'altro da dire sulle gerarchie di memoria, ma non mi sembra
utile proseguire, visto che si parlava più di registri che d'altro. Spero di
non avere detto delle inesattezze (tanto meno delle stupidaggini) e magari
di aver contribuito alla discussione.
Salve a tutti.
Andrea