Selezione di domande proposte 1/15
Si descrivano i problemi relativi al passaggio dei parametri nel
caso di richiamo di sottoprogrammi e le convenzioni previste per
le funzioni realizzate dai registri del processore MIPS, anche in
considerazione della necessità di preservare/non preservare le
informazioni. In particolare, nel caso di richiamo di
sottoprogrammi, si presenti e si commenti il coinvolgimento dello
stack e dei registri ra, sp.
Si descriva il funzionamento dell’istruzione lui. Le pseudoistruzioni
li (load immediate) e la (load address) fruiscono dell’istruzione
lui.
Si discuta la differenza nel modo in cui vengono tradotte
dall’assemblatore nelle vere istruzioni del processore MIPS le 3
pseudoistruzioni seguenti:
la $a0, itinere2
li $s4, 0x8b12cd12
li $t6, 37421
1
Università di Pavia - corso di Calcolatori Elettronici
Selezione di domande proposte 2/15
Si descriva il formato I previsto dal processore MIPS e utilizzato
dalle istruzioni lw e bne. Si presenti e si commenti l’intervallo di
spostamento reso possibile da queste istruzioni.
Si spieghi in cosa consiste l’operazione denominata “estensione
del segno”. Si illustrino le motivazioni che portano a questa
operazione, anche riferendosi a istruzioni che ne fanno uso.
Si presenti il problema della generazione dell’overflow a seguito
dell’esecuzione di istruzioni di somma e sottrazione del
processore MIPS.
Si discuta la differenza fra le 3 istruzioni di somma:
add, addi, addu
2
Università di Pavia - corso di Calcolatori Elettronici
Selezione di domande proposte 3/15
Per la rappresentazione in virgola mobile lo standard IEEE754
permette di rappresentare oltre ai numeri normalizzati anche i
numeri denormalizzati (sub-number). Se ne presenti la
rappresentazione e la relativa utilità.
I 2 numeri seguenti sono rappresentati in virgola mobile in singola
precisione, secondo lo standard IEEE 754. Si indichi nella tabella
seguente a quali numeri decimali essi corrispondano
commentando il risultato ottenuto.
.
Numero in virgola mobile
Numero decimale corrispondente
0xEF600000
1 | 110 1111 0 | 110 0000 0000 0000 … 0
-1.112 x 2 222-127 = -1.7510 x 2 95
0x00005000
0 | 000 0000 0 | 000 0000 0101 0 … 0
0.000000001012 x 2 -126 =0.1012 x 2 -134 = 0.62510 x 2 -134
Università di Pavia - corso di Calcolatori Elettronici
3
Selezione di domande proposte 4/15
Si descriva l’utilità delle direttive per l’assemblatore. Si
descriva in particolare il significato delle direttive
seguenti:
.word
.double
Si descriva il principio di funzionamento dell’unità di
carry look-ahead (anticipazione di riporto) a 5 bit
stimando il tempo necessario a produrre il riporto c5
d’uscita. Se si volesse realizzare un sommatore a 15 bit
collegando 3 blocchi di somma proposti in serie (e
quindi con propagazione del riporto fra i sommatori a 5
bit) quanto tempo si richiederebbe per produrre il carry
in uscita dall’ultimo sommatore (c15)? Motivare la
risposta.
4
Università di Pavia - corso di Calcolatori Elettronici
Selezione di domande proposte 5/15
Il simulatore SPIM per il processore MIPS mette a
disposizione le chiamate di sistema, richiamabili tramite
lo statement syscall. Si descrivano le modalità d’uso e la
loro utilità. Si motivi perché negli emulatori un tale
strumento non ha motivo di esistere.
Si presenti e si descriva l’architettura e il principio di
funzionamento dell’ALU a 1 bit che esegue le operazioni
di AND, OR, somma, sottrazione e la funzione Less. Si
evidenzi e si descriva come tale architettura si modifichi
per rendere possibile l’esecuzione delle istruzioni slt.
Università di Pavia - corso di Calcolatori Elettronici
5
Selezione di domande proposte 6/15
• Dato il breve sottoprogramma seguente scritto nel
linguaggio assemblativo del processore MIPS,
tenendo conto che il parametro passato attraverso
$a1 è un intero positivo:
– si presenti sinteticamente il significato di ogni
statement;
– si commenti l’evoluzione del contenuto dei
registri utilizzati, durante l’esecuzione del
sottoprogramma, e il loro ruolo;
– si identifichino i valori che sono contenuti nei
registri al momento dell’uscita dal
sottoprogramma;
– si presenti il problema che viene risolto
dall’algoritmo implementato dal
sottoprogramma.
Università di Pavia - corso di Calcolatori Elettronici
6
Selezione di domande proposte 7/15
sub3:
c_3b:
c_3a:
c_3c:
dati3:
.byte
f_dati3:
.text
addu
$v1, $zero, $zero
la
$t8, dati3
la
$t7, f_dati3
addiu
$t6, $t7, -1
addiu
$t4, $t8, 1
lbu
$t5, 0 ($t8)
lbu
$t3, 0 ($t4)
mul
$t2, $t3, $t5
bne
$a1, $t2, c_3c
addi
$v1, $v1, 1
addiu
$t4, $t4, 1
bne
$t4, $t7, c_3a
addiu
$t8, $t8, 1
bne
$t6, $t8, c_3b
jr $ra
.data
0x10003000
.byte
0xa, 200, 0x1e, 40
0x32, 44, 0x7c, 10
Università di Pavia - corso di Calcolatori Elettronici
7
Selezione di domande proposte 8/15
• Dato il breve sottoprogramma scritto nel linguaggio
assemblativo del processore MIPS seguente:
– si presenti sinteticamente il significato di ogni
statement;
– si commenti l’evoluzione del contenuto dei
registri utilizzati, durante l’esecuzione del
sottoprogramma, e il loro ruolo;
– si identifichino i valori che sono contenuti nei
registri e in memoria al momento dell’uscita dal
sottoprogramma;
– si presenti il problema che viene risolto
dall’algoritmo implementato dal
sottoprogramma.
Università di Pavia - corso di Calcolatori Elettronici
8
Selezione di domande proposte 9/15
.data
dati3:
.byte
fdati3:
0x10010040
.byte
0xff, 0x27, 0xff, 0xc8
0x32, 0x6a, 0x99, 0xd7
.data
risul3: .space
.text
sub3:
la
la
la
add
addiu
read3: lb
srl
beq
add
dopo3: addiu
blt
xor
addiu
sw
jr
0x10010240
4
0x400200
$t5, dati3
$t4, fdati3
$t6, risul3
$t3, $0, $0
$t1, $t3, -1
$t7, 0($t5)
$t2, $t7, 31
$t2, $zero, dopo3
$t3, $t7, $t3
$t5, $t5, 1
$t5, $t4, read3
$t3, $t3, $t1
$t3, $t3, 1
$t3, 0($t6)
$ra
Università di Pavia - corso di Calcolatori Elettronici
9
Selezione di domande proposte 10/15
• Dato il breve sottoprogramma scritto nel linguaggio
assemblativo del processore MIPS seguente:
– si presenti sinteticamente il significato di ogni
statement;
– si commenti il ruolo dei registri utilizzati e
l’evoluzione del loro contenuto, durante
l’esecuzione del sottoprogramma;
– si identifichino le condizioni di uscita dal
sottoprogramma;
– si presenti il problema che viene risolto
dall’algoritmo implementato dal
sottoprogramma (opzionale).
Università di Pavia - corso di Calcolatori Elettronici
10
Selezione di domande proposte 11/15
sub2: li
ori
li
move
ciclo: sb
addi
beq
addi
andi
slt
beq
addi
j
ret: jr
$t0, 0x10000010
$t2, $zero, 0x9a
$t3, 9
$t1, $zero
$t1, 0 ($t0)
$t1, $t1, 1
$t1, $t2, ret
$t0, $t0, 1
$t4, $t1, 0xf
$t5, $t3, $t4
$t5, $zero, ciclo
$t1, $t1, 6
ciclo
$ra
Università di Pavia - corso di Calcolatori Elettronici
11
Selezione di domande proposte 12/15
sub3: lb
andi
li
move
ciclo: and
beq
addi
dopo: srl
bne
andi
sll
or
sb
jr
$t0, 0 ($t5)
$t0, $t0, 0x7f
$t1, 0x40
$t4, $zero
$t3, $t0, $t1
$t3, $zero, dopo
$t4, $t4, 1
$t1, $t1, 1
$t1, $zero, ciclo
$t4, $t4, 1
$t4, $t4, 7
$t0, $t4, $t0
$t0, 0 ($t5)
$ra
Università di Pavia - corso di Calcolatori Elettronici
12
Selezione di domande proposte 13/15
sub4:
ciclo4a:
dopo4:
ciclo4b:
move
lb
beq
add
j
sub
add
lb
add
sb
addi
bne
jr
$t1, $a3
$t2, 0 ($t1)
$t2, $0, dopo4
$t1, $t1, 1
ciclo4a
$t0, $t1, $a3
$t4, $zero, $a3
$t2, 0 ($t4)
$t2, $t2, $t0
$t2, 0 ($t4)
$t4, $t4, 1
$t4, $t1, ciclo4b
$ra
Università di Pavia - corso di Calcolatori Elettronici
13
Selezione di domande proposte 14/15
• Dato il breve sottoprogramma scritto nel linguaggio
assemblativo del processore MIPS seguente:
– si presenti sinteticamente il significato di ogni
statement;
– si commenti il ruolo dei registri utilizzati e
l’evoluzione del loro contenuto, durante
l’esecuzione del sottoprogramma;
– si identifichi il valore assunto dal registro $t4 al
momento dell’uscita dal sottoprogramma nel
caso in cui il dato nel secondo statement
assuma valore 64;
– si identifichi il valore assunto dal registro $t4 al
momento dell’uscita dal sottoprogramma nel
caso in cui il dato nel secondo statement
assuma valore 128 .
Università di Pavia - corso di Calcolatori Elettronici
14
Selezione di domande proposte 15/15
.data
dati1: .byte
.text
sub1: li
move
la
lb
ciclo1:
addi
slt
beq
jr
64
# due test: con 64 e 128
$t2, 0x400
$t4, $zero
$t0, dati1
$t1, 0 ($t0)
addi $t1, $t1, 64
$t4, $t4, 1
$t3, $t2, $t1
$t3, $zero, ciclo1
$ra
Università di Pavia - corso di Calcolatori Elettronici
15
Scarica

Lez-pre-Esame