Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Architettura Computer - commentare istruzione

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Architettura Computer - commentare istruzione

Messaggioda Foto UtenteMario1947 » 22 feb 2010, 17:23

ciao a tutti! oggi ho fatto l'esame di Architetture degli elaboratori e delle reti I, e ho solo sbagliato un esercizio di cui vorrei chiedervi la correzione dal momento che domani ho l'orale e si basa sulle cose sbagliate nell'esame:
testo:

Considerare una nuova istruzione swap $R0, $R1, $R2 che consiste nello scambiare il contenuto della cella di memoria il cui indirizzo è nel registro R0 con quello della cella di memoria il cui indirizzo è R1 utilizzando R2 come registro di appoggio. Spiegare quali sono i passi che l'unità di controllo deve svolgere per implementare swap $R0, $R1. l'architettura è la MIPS.


io pensavo una cosa di questo tipo: Abilita bit uscita R0, abilita bit entrata MAR.
Legge il contenuto del MAR dalla memoria centrale e lo salva nel MDR. Scrive il contenuto di R2 nel MAR.
Scrive il dato contenuto nel MDR all'indirizzo di memoria contenuto nel MAR nella memoria centrale.
(metto così sostanzialmente R0 in R2).
Abilita ora il bit di uscita di R1 e abilita il bit di entrata del MAR. Legge il contenuto del MAR dalla memoria centrale e lo salva nel MDR. Scrive il contenuto di R0 nel MAR. Scrive il dato contenuto nel MDR all'indirizzo di memoria contenuto nel MAR nella memoria centrale. (metto così R1 in R0). Scrive R0 in R1.
secondo voi può andare o ho sbagliato qualcosa??
Avatar utente
Foto UtenteMario1947
0 2
 
Messaggi: 1
Iscritto il: 22 feb 2010, 17:14

0
voti

[2] Re: Architettura Computer - commentare istruzione

Messaggioda Foto Utenteandrea2453 » 23 feb 2010, 16:10

Va bene spostare R2 in R0, ma dopo aver scritto (il contenuto della cella di memoria il cui indirizzo è contenuto in) R1 in R0 (o meglio nella cella di memoria il cui indirizzo è contenuto in R0), hai scritto che metti R0 in R1, ma così cambi solo l'ìndirizzo puntato dai registri, invece tu devi scambiare il contenuto della cella di memoria, quindi devi leggere (il contenuto della cella di memoria il cui indirizzo è contenuto in) R2 e scriverlo in R1 (o meglio nella cella di memoria il cui indirizzo è contenuto in R1).
Comunque io avrei interpretato diversamente il testo: tu hai usato come registro di appoggio per lo swap la cella di memoria puntata da R2, ma io avrei capito dal testo che dovevo usare il registro R2 stesso come registro di appoggio.. sei sicuro che la tua interpretazione sia quella giusta?
Nel mio caso avresti dovuto leggere dalla memoria il dato il cui indirizzo è in R0, parcheggiarlo direttamente in R2 da MDR, poi leggere il contenuto della cella di memoria contenuto in R1, e dall'MDR scriverlo direttamente all'indirizzo puntato da R0 (portando R0 nel MAR). A questo punto prelevi il dato da R2 per portarlo nell'MDR e effettuare una scrittura all'indirizzo puntato da R1;
quindi:
MAR <- R0
MDR <- M[MAR]
R2 <- MDR
MAR <- R1
MDR <- M[MAR]
MAR <- R0
M[MAR] <- MDR
MAR <- R1
MDR <- R2
M[MAR] <- MDR

E il gioco e fattoo!!
Avatar utente
Foto Utenteandrea2453
0 2
 
Messaggi: 6
Iscritto il: 23 feb 2010, 14:01


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti