Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Architettura degli elaboratori e delle reti
 
[ESERCIZIO] Traduzione di pseudoistruzioni
Clicca QUI per vedere il messaggio nel forum
Marcoverga
Premesso che mi sto preparando per l'esame del 25/09 per la prima volta, non mi è ben chiaro come funziona la traduzione...

Un esercizio dice di tradurre le seguenti pseudoistruzioni in Assembly MIPS nativo e in linguaggio macchina:

li $5, 4^12
divi $12, $13, 3
bgei $18, 1, -16 #(branch on greater or equal than - immediate)


"in Assembly MIPS nativo" significa ad esempio che la move $4, $5 deve essere sostituita da add $4, $zero, $5???

E poi come si legge la tabella del MIPS Instruction Set? Perchè ad esempio la bgei non c'è...

guitux
"in Assembly MIPS nativo" significa ad esempio che la move $4, $5 deve essere sostituita da add $4, $zero, $5???

esatto!
E poi come si legge la tabella del MIPS Instruction Set? Perchè ad esempio la bgei non c'è...

bella domanda!

proviamo a fare questo:

divi $12, $13, 3

tipo I

op=6bit --> 26dec
in realtà 26dec si ferisce alla div, non alla divi...quindi?

rs(5bit) --> $13 --> 13dec
13dec è corretto o a quale registro corrisponde?

rt(5bit) --> $12 --> 12dec
12dec è corretto o a quale registro corrisponde?

indirizzo(16bit) --> 3dec


soluzione corretta?

guitux
divi $12, $13, 3
in binary code diventa:
OP=?
RS=13dec
RT=12dec
INDIRIZZO=3dec
ovvero:
......-01101-01100-0000000000000011

campo op?

http://homes.dsi.unimi.it/~pedersin...1_Assembly1.pdf

Marcoverga
ma la divi è una pseudoistruzione...
Quindi non bisogna fare qualcosa tipo

addi $to, $0, 3
div $13, $t1
mflo $12

In questo modo abbiamo l'opcode di tutte le istruzioni!

guitux
si ho scritto una cavolata...
prima si traduce la pseudo-istruzione in istruzione/i assembly nativo, poi quest'ultima in binario...
trovo molto interessante questa pseudo-istruzione:
li $14, 16^5

Marcoverga
Quella è una stupidata... Perchè 16 non è altro che 2^4, e quindi 16^5 diventa (2^4)^5 = 2^20

Usando poi lei due istruzioni lui e ori si risolve il tutto!

lui $14, 1000000000000000 (euivalente a 2^15)
ori $14, $14, 0 (equivalente a 0000)

il gioco è fatto! :D

guitux
:D e se la base non è multiplo di due?

Marcoverga
Bisogna "semplicemente" trasformarlo in binario!

niko_2307
li $25, (2^25 + 35) #load immediate
blei $18, +19, -20 # brench on less than or equal to immadiate


come le trasformate in assembly mips nativo??

PrizeD
Io farei:

lui $25, 0x200
add $25, $0, 0x23 #qui finisce la li
sub $t0, $18, 19
blez $t0, -20 #qui la blei

Praticamenta la li, visto che devo caricare un numero conpiù di 16 bit lo spezzo in due e uso la lui per caricare la parte più significatica del numero, e poi faccio una add per il 35.
La blei mi dice che se $18<= 19 allora salto a -20, e quindi io l'ho vista come se $18-19<=0 allora salto a -20.
Correggetemi se ho sbagliato, perchè se non ricordo male anke nel compito ho fatto così :D

PrizeD
Originally posted by Marcoverga
Quella è una stupidata... Perchè 16 non è altro che 2^4, e quindi 16^5 diventa (2^4)^5 = 2^20

Usando poi lei due istruzioni lui e ori si risolve il tutto!

lui $14, 1000000000000000 (euivalente a 2^15)
ori $14, $14, 0 (equivalente a 0000)

il gioco è fatto! :D



Se fai così tu in $14 ci metti un numero da 16+16 bit, perchè con la lui metti il num dal 16 bit in poi, dovresti fare invece 20-16=4, quindi in $14 metti 2^4 (es lui $14, 0x10 # o anche lui $14, 10000), e poi l'ori è ok

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate