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