Assembly (del MIPS): piccolo prontuario

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Assembly (del MIPS): piccolo prontuario"

Transcript

1 Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Architetture degli elaboratori: Assembly (del MIPS): piccolo prontuario Marco Tarini Dipartimento di Scienze Teoriche e Applicate marco.tarini@uninsubria.it Linguaggio Assembly Linguaggio molto aderente ad un Instruction Set, Specifico per un Instruction Set Rapporto (quasi) 1:1 fra comandi Assembly e istruzioni binarie Pensato per essere più facile da leggere o scrivere per noi esseri umani, rispetto al linguaggio macchina: add $13, $4, $ VS Assembler: programma che effettua la traduzione. Fa per noi molti lavoretti che sarebbero tediosi ma banali, come: tradurre le operazioni in OP codes (di sei bit) tradurre in base 2 (o in CP2) gli indici dei registri e gli immediate calcolare gli offset delle destinazioni dei salti tenere traccia degli indirizzi a cui sono merizzati dati ed istruzioni altro, come vedremo Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 1

2 Istruzione in Assembly Registri su cui si opera (corrispondono ai campi Rt, Rs e Rd) L immediato (il campo imm16) add $13, $4, $3 le virgole sono opzionali codice mnemonico dell istruzione (corrisponde al campo OP e FUNCT) addi $13, $4, 162 «i» sta per immediate In Assembly, l ordine degli operandi è comodamente fisso: a differenza del MIPS binario, in cui varia fra le istruzioni R e I il PRIMO parametro rappresenta sempre il risultato il registro che viene scritto (se l op prevede di scrivere un reg) $13 in questo esempio Seguono gli operandi (che siano registri o immediate) Architettura degli elaboratori Commenti e indentazione In Assembly, spazi, tab e accapo vengono ignorati (posso indentare il programma come voglio) Per rendere il codice più comprensibile in Assembly posso aggiungere dei commenti Verranno semplicemente ignorati dal compilatore Sintassi: i commenti vanno dal carattere # alla fine della linea # commento add $13, $4, $3 # questo fa $13 <- $4 + $3 (sono questi due semplici ma cruciali elementi che rendono l Assembly molto più comprensibile del linguaggio macchina) Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 2

3 Traduzione delle istruzioni da Assembly a linguaggio macchina Esempio, l istruzione add $8, $17, $18 è tradotta così: add op = 0 = shamt = 0 = funct = 32 = $8 rd = 8 = $17 rs = 17 = $18 rt = 18 = op rs rt rd shamt funct Architettura degli elaboratori per operazioni aritmetiche Nome completo Esempio Significato Commenti. add add $1,$2,$3 $1 = $2 + $3 2 operandi registro; subtract sub $1,$2,$3 $1 = $2 $3 2 operandi registro; add immediate addi $1,$2,100 $1 = $ operandi: registro e costante; add unsigned addu $1,$2,$3 $1 = $2 + $3 2 operandi registro; subtract unsignedsubu $1,$2,$3 $1 = $2 $3 2 operandi registro; add imm. unsign. addiu $1,$2,99 $1 = $ operandi: registro e costante; multiply mult $2,$3 Hi Lo = $2 x $3 prodotto con segno: res in 64 bit multiply unsigned multu $2,$3 Hi Lo = $2 x $3 prodotto senza segno: res in 64 bit divide div $2,$3 Lo = $2 $3, Lo = quoziente, Hi = resto Hi = $2 mod $3 divide unsigned divu $2,$3 Lo = $2 $3, Quoziente e resto senza segno Hi = $2 mod $3 Move from Hi mfhi $1 $1 = Hi Copia Hi in un registro Move from Lo mflo $1 $1 = Lo Copia Lo in un registro Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 3

4 Operazioni aritmetiche «con la U» La «u» nei comandi artimetici (come addu) sta per «unsigned», ma il nome è fuorviante (ricorda: la somma di numeri in CP2, e la somma in binario senza segno sono la stessa operazione, cambia solo la gestione dell overflow) La vera differenza: il comando senza la «u» può generare eccezione di overflow il comando con la «u» semplicemente ignora l overflow In conclusione, si può verificare overflow solo in alcune istruzioni aritmetiche: add, sub, addi nelle altre op matematiche, o non si verifica o viene ignorato (non viene generate alcuna eccezione) nelle op logiche, non si verifica mai Architettura degli elaboratori Moltiplicazione / divisione Moltiplicazione / divisione: (mult e div) scrivono su una coppia di registri speciali: Hi e Lo (non fanno parte dei 32 registri) Ricorda: moltiplicando due numeri da n bit ottengo un numero da 2n bit. Il valore di Hi e Lo si travasa in normali registri con: mfhi rd ( Move From Hi ) mflo rd ( Move From Lo ) Registers Mult/Div Unit HI LO Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 4

5 per operazioni logiche Istruzioni Esempio Significato Commento and and $1,$2,$3 $1 = $2 & $3 AND bit a bit or or $1,$2,$3 $1 = $2 v $3 OR bit a bit xor xor $1,$2,$3 $1 = $2 $3 XOR bit a bit nor nor $1,$2,$3 $1 = ~($2 $3) NOR bit a bit and immediate andi $1,$2,10 $1 = $2 & 10 AND tra reg. e costante or immediate ori $1,$2,10 $1 = $2 10 OR tra reg. e costante xor immediate xori $1, $2,10 $1 = $2 10 XOR tra reg. e costante shift left logical sll $1,$2,10 $1 = $2 << 10 Shift a sinistra di una costante shift right logical srl $1,$2,10 $1 = $2 >> 10 Shift a destra di una costante shift right arithm. sra $1,$2,10 $1 = $2 >> 10 Shift a destra (con est. in segno) shift left logical sllv $1,$2,$3 $1 = $2 << $3 Shift a sinistra di una variabile shift right logical srlv $1,$2,$3 $1 = $2 >> $3 Shift a destra di una variabile shift right arithm. srav $1,$2,$3 $1 = $2 >> $3 Shift a destra di una variabile (con est. in segno) Architettura degli elaboratori per operazioni aritmetiche e logiche Il risultato dell op viene sempre memorizzato nel primo registro indicato Eccezione: mult e div, che scrivono invece due apposite registri speciali HI e LOW I due operandi dell op sono: nelle versioni non immediate (e negli shift con variabile): i due registri indicati nelle versioni immediate: (e negli shift senza variabile): un registro dato e un valore dato Il valore nelle istruzioni con immediate: E memorizzato nel campo imm16 di una istruzione I (di16 bit!) E in CP2 nelle op aritmetiche (e quindi viene esteso in segno). Val max =?. Val min =?. Senza segno nelle op logiche (ed quindi viene esteso con 0) Val max =?. Val min =?. Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 5

6 per operazioni logiche Le op logiche lavorano bit a bit Lo shift a sinistra fa apparire 0 da destra Corrisponde a dividere per 2^n Due versioni dello shift a destra: Far apparire 0 a sinistra (vers logica) Far apparire a sinistra il bit più significativo (vers aritmetica) Corrisponde a moltiplicare per 2^n (nella versione aritmetica: questo vale per i numeri in CP2) Lo shift di una costante, il valore di cui si shifta è memorizzato, in linguaggio macchina, nell apposito campo da 5 bit delle istruzioni R (quindi vale da 0 a 31 sempre sufficiente!) Architettura degli elaboratori per trasferire registri da/a la memoria Istruzione Commento sw $3, 500($4) sh $3, 502($2) sb $2, 41($3) Store word Store half Store byte da registro a mem (store) lw $1, 30($2) lh $1, 40($3) lhu $1, 40($3) lb $1, 40($3) lbu $1, 40($3) lui $1, 40($3) Load word Load halfword Load halfword unsigned Load byte Load byte unsigned Load Upper Immediate (16 bits shifted left by 16) da mem a registro (load) Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 6

7 per trasferire registri da/a la memoria L indirizzo a cui si legge o scrive è quello contenuto nel registro indicato fra parentesi, incrementato del valore eventualmente indicato prima della parentesi esempi: ($16) usare l inidirizzo contenuto nel registro ($4) usare l indirizzo contenuto nel registro 4, incrementato di 500 byte (cioè di 500/4 = 125 word) -4($16) usare l inidirizzo contenuto nel registro 16, decrementato di 4 Architettura degli elaboratori per trasferire registri da/a la memoria Store: si leggono 1, 2 o 4 byte dal registro indicato nel 1mo parametro (4 se word. 2 se half. 1 se byte. Se 1 o 2: i meno significativi) li si scrivono in 1, 2, o 4 byte consecutivi in memoria Load: caso word: si leggono 4 byte dalla memoria caso short/byte unsigned: si leggono 2/1 byte e si estendono con 0 caso short/byte: si leggono 2/1 byte e si estendono in segno caso lui: si leggono 2 byte e si shiftano a sinistra di 16 bit in tutti i casi: si scrivono tutti i 4 byte risultanti nel registro indicato Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 7

8 per branch (salti condizionali) Con confronto fra due registri beq rs, rt, dest equal, if R[rs] == R[rt] then jump to dest bne rs, rt, dest not equal, Con confronto fra un registro e zero blez rs, dest less-or-equal zero, if R[rs] <= 0 then jump bgtz rs, dest greater-then zero > bgez rs, dest greater-or-equal zero >= bgezal rs, dest come sopra «and link» (vedi poi) bltz rs, dest less-than zero < bltzal rs, dest come sopra «and link» (vedi poi) Architettura degli elaboratori per branch (salti condizionali) L instruction set MIPS mette a disposizioni molte varianti di branch (b-), diverse per: l operatore del paragone che determina se saltare oppure no: minore uguale (-le-), maggiore (-gt-), etc se il paragone avviene fra due registri, oppure fra un registro e lo zero (-z-) «and link» (-al) : se, in caso di salto, deve essere memorizzato l indirizzo dell istruzione che ha causato il salto, (in modo da poterci tornare con un apposita istruzione di ritorno) (utile quando il salto serve per eseguire una subroutines, vedi poi). ma non tutte le varianti possibili sono previste! (es: R1>R2 non lo è) Per implementare le varianti non previste, saranno necessarie due o più istruzioni: Prima: calcolo della condizione (es: R3 = R1-R2) Poi: salto condizionale (es: R3 > 0 ) (tipico esempio della filosofia RISC in azione!) Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 8

9 per branch (salti condizionali) L istruzione MIPS binaria come sappiamo memorizza la destinazione del salto come un offset rispetto al PC corrente (salto «relativo») L offset è memorizzato nel campo imm16 di una istruzione di tipo I L offset è un numero di 16 bit in CP2 L offset rappresenta il n. di istruzioni da saltare (avanti o indietro) Cioè il numero di words da sommare al PC Cioè il PC+4 va incrementato di Offset x 4 bytes (ext in segno) Il programmatore Assembly indica direttamente la destinaz. del salto L assembler calcola per lui l offset necessario per raggiungerla, e lo riporta nel campo imm16 (comodo!) La destinazione può seguire oppure precedere l istruzione del salto (perché offset ha il segno) Ma non può essere più lontana di 2^15 istruzioni! Altrimenti errore. Generato dall assembler (perché offset ha solo 16 bit in CP2). Sono salti corti! Architettura degli elaboratori per Jump (salti non condizionali) Istruzione Esempi Significato jump j vai all istruzione jump and link jal vai all istruzione and link jump register jr $31 vai all istruzione contenuta nel registro $31 Architettura degli elaboratori Architettura degli elaboratori - Assembly - 1 9

10 per Jump (salti non condizionali) Jump salta ad un indirizzo dato. L istruzione MIPS binaria corrispondente, di tipo J, memorizza la destinazione nel suo campo address E un campo di ben 26 bits (il tipo J esiste apposta per questo) Due zeri finali sono sottointesi (è l indice di un word) = 28 bits Il PC mantiene i primi 4 bits inalterati, e i suoi 28 bits meno significativi vengono sostituiti: salto (quasi) «assoluto» Quindi: l istruzione può saltare anche molto lontano. Salto lungo! L unico vincolo è che non si può uscire dal blocco di 2^26 istruzioni Tipicamente, il programmatore determina la destinazione attraverso un etichetta (vedi poi); address viene calcolato dall assembler. Jump address salta ad un indirizzo memorizzato in un registro dato PC viene sostituito del tutto dai 32 bit del registro: salto «assoluto» Si può saltare assoltamente ovunque nel codice. No limits. Salti lunghissimi! (ma bisogna approntare un registro) Architettura degli elaboratori per assegnamenti condizionali Istruzioni Esempi Significato set on less than slt $1,$2,$3 if ($2 < $3) $1=1; else $1=0 < (complemento a 2) set on less than slti $1,$2,100 if ($2 < 100) $1=1; else $1=0 immediate <costante (complemento a 2) set on less than sltu $1,$2,$3 if ($2 < $3) $1=1; else $1=0 unsigned < (numeri senza segno) set less then sltiu $1,$2,100 if ($2 < 100) $1=1; else $1=0 immediate unsigned <costante (numeri senza segno) Architettura degli elaboratori Architettura degli elaboratori - Assembly

11 Confronto con segno e senza R1= = 1 10 R2= = 2 10 R3= = oppure Esercizio: dopo l esecuzione di queste istruzioni: slt $4,$2,$1 ; slt $5,$3,$1 ; sltu $6,$2,$1 ; sltu $7,$3,$1 ; Quali valori si trovano nei registri r4 - r7? r4 = 0; r5 = 1; r6 = 0; r7 = 0 ; R2==2 non è minore di R1==1 R3==-1 è minore di R1==1 R2==2 non è minore di R1==1 R3== non è minore di R1==1 Architettura degli elaboratori Convenzioni nell'uso dei registri Per compilare una data procedura, il compilatore (o il programmatore umano) deve sapere quali registri può usare e quali sono in uso da parte di altre procedure. Da qui la necessità di regole e convenzioni per l'uso dei registri Non implementate in HW Compilatori e programmatori le devono seguire, pena bugs insidiosi, anche molto difficili da trovare. Architetture Architettura degli elaboratori - Assembly

12 Convenzioni nell'uso dei registri I registri $at (1), $k0 (26), e $k1 (27) riservati per l'assemblatore ($at) e il sistema operative ($k0-1) NON devono essere usati dai programmatori o dal compilatore I registri $a0 $a3 (4 7) usati per passare i primi 4 argomenti alle routine. (ulteriori eventuali argomenti sono passati sulla pila (molto più lenta!) I registri $v0 e $v1 (2, 3) usati dalle funzioni per restituire valori al chiamante. I registri $t0 $t9 (8 15, 24, 25) usati per memorizzare valori temporanei, quelli che non è necessario preservare tra una chiamata e l'altra. ogni procedura li può usare senza preoccuparsi di sporcarli I registri $s0 $s7 (16 23) usati per valori che devono essere preservati tra una chiamata e l'altra. Il loro significato non è locale alla chiamata corrente. Architetture Convenzioni nell'uso dei registri Il registro $gp (28) è un puntatore globale che punta ad un blocco di memoria da 64K nel segmento dei dati statici. Il registro $sp (29) è lo stack pointer, che indirizza l'ultima posizione dello stack (vedremo) Il registro $fp (30) è il frame pointer (vedremo). Il registro $ra (31) contiene l'indirizzo di rientro dalla chiamata di procedura (vedremo). Architetture Architettura degli elaboratori - Assembly

13 Scrittura di comandi in assembly: gli operandi che sono registri L Assembly ci consente di riferirci ai 32 registri anche attraverso dei sinonimi che riflettono il loro uso convenzionale Registro: $0 $1 $2 $3 $4 $5 $6 $7 Sinonimo: $r0 $at $v0 $v1 $a0 $a1 $a2 $a3 Registro: $8 $9 $10 $11 $12 $13 $14 $15 Sinonimo: $t0 $t1 $t2 $t3 $t4 $t5 $t6 $t7 Registro: $16 $17 $18 $19 $20 $21 $22 $23 Sinonimo: $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 Registro: $24 $25 $26 $27 $28 $29 $30 $31 Sinonimo: $t8 $t9 $k0 $k1 $gp $sp $s8 $ra equivalente a add $s3, $t3, $t4 add $19, $11, $12 Architetture Scrittura di comandi in assembly: gli operandi che sono immediate Il campo immediate può essere scritto: In base 10 In base 16, precedendo le cifre con 0x Come carattere ascii, fra apicetti singoli addi $3, $3, 97 addi $3, $3, 0x61 addi $3, $3, a Sinonimi (il terzo registro viene incrementato di 97, il cui codice ASCII è a ) Architettura degli elaboratori Architettura degli elaboratori - Assembly

14 Pseudo-istruzioni L assembler MIPS supporta diverse pseudo-istruzioni: Non corrispondono ad istruzioni nell Instruction Set (l archiettura HW non le conosce!) Sono implementate mediante una o più istruzioni dell IS Semplificano la programmazione in linguaggio assembly La pseudo-istruzione move $t0, $t1 (copia $t1 in $t0) è implementata come add $t0, $zero, $t1 La pseudo-istruzione blt $s0, $s1, addr (branch less then salta se $s0<$s1) è implementata come due istruzioni: slt $at, $s0, $s1 bne $at, $zero, addr (nota: uso del registo riservato all assembler) Architettura degli elaboratori Pseudo-istruzioni La pseudo-istruzione la $t0, etichetta (load address, copia l indirizzo etichetta in $t0) è implementata calcolando val dall etichetta e ori $t0, $0, val (load unsigned immediate) La pseudo-istruzione li $t0, val (load immediate, copia il valore val in $t0) è implementata come ori $t0, $0, val (or bit a bit fra val e il registro $0 cioè il valore 0) Le pseudo-istruzioni rendono il linguaggio Assembly ancora un po più ad alto livello del linguaggio macchina (Rimane un linguaggio a bassissimo livello, rispetto a, per es, C o, ancor di più, Java) Architettura degli elaboratori Architettura degli elaboratori - Assembly

15 Un programma in assembly Ricorda che un programma è costitutito da due parti Dati, (in assembly: parte data ) Istruzioni (il codice che lavora sui dati), (in assembly: parte text ) memorizzate in due apposite aree della memoria (localizzate secondo alcune convenzioni che non ci interessano) Un programma Assembly non è altro che un file di testo che descrive il contenuto della memoria (in ciascuna delle due aree) Consiste quindi in due sequenza di parole consecutive (e/o mezze parole, e/o bytes) espresse in ASCII Architettura degli elaboratori Un programma in assembly Es un programma potrebbe essere: Questo programma (che non ha senso alcuno!) prescrive 2 words nella parte data e altre 2 words nella parte text Le parole (32 bits!) possono essere espresse in molti modi equivalenti: in decimale, es: 20.word 20 in esadecimale, es: 0x14.word 0x14 utile per la parte data con un carattere ascii, es: a.word 'a' con un comando assembly, es: add $t3, $s1, $s3.data.word 20, 10.text.word 30, 1234 utile per la parte text Architettura degli elaboratori Architettura degli elaboratori - Assembly

16 Direttive Comandi Assembly che spiegano all Assembler come tradurre un programma Non producono istruzioni macchina! Sintassi: cominciano sempre con un punto Il programma precedente usa due direttive:.data «Memorizza gli elementi successivi nel segmento dati».text «Memorizza gli elementi successivi nel segmento testo» Tipica struttura sorgente: dati comandi.data.text Architetture Direttive: dati Alcune direttive spiega il formato in cui tentere, in memoria, i dati successivi:.word «Memorizza i valori successivi in 4 bytes».half «Memorizza i valori successivi come half-word: cioè in coppie di byte».byte «Memorizza i valori successivi in un byte ciascuno».data.half 20, 2, 100.byte 4, 'c'.word 0x40, 300 Nel segmento data sono memorizzati in tutto 16 bytes Architetture Architettura degli elaboratori - Assembly

17 Direttive: dati Un scorciatoia speciale per dati consente di definire con facilità le stringe (intese come sequenze di caratteri, ciascuno reppresentato da un byte).ascii "anna" Equivalente a:.byte 'a', 'n', 'n', 'a Memorizza (in questo esempio): 4 bytes..asciiz "anna" Un byte per carattere, seguiti da un ulteriore byte terminatore zero. Equivalente a:.byte 'a', 'n', 'n', 'a', 0 Equivalente a:.ascii "anna".byte 0 Oppure a (in questo esempio): 5 bytes. Nota l uso del doppio apice. La convenzione di terminare le strighe col byte 0 è comune a molti linguaggi di programmazione ad alto livello (C, Java, C++ ), e dalle procedure di sistema (es quella che scrive stringhe su un monitor). Dette «null terminated strings» Architetture Direttive: dati.space n Lascia uno spazio di n Bytes nel segmento dati. Utile per riservare dei bytes nel segmento data dove memorizzare i dati prodotti dalle istruzioni.align n Lascia alcuni byte di spazio in modo che il dato successivo sia scritto in un indirizzo divisible per 2 n Utile per allineare i dati, ad esempio align 2 fa in modo che il word successive sia scritto ad un indirizzo che termina con 00, anche se i dati scritti in precedenza hanno occupato un numero dispari di bytes. Architetture Architettura degli elaboratori - Assembly

18 Etichette (label) Le etichette sono un altra parte del programma Assembly che l Assembler non traduce in alcuna istruzione macchina E un identificaore qualsiasi, scelto dal programmatore, introdotto come un nome seguito da un due-punti. Es: pippo:.word 19 Un etichetta è un meccanismo che consente al programmatore assembly di riferirsi all indirizzo a cui è stato memorizzato un dato o un istruzione sarebbe complicato per il programmatore ricostruire questo indirizzo, ma è banale per l assemnler. Architettura degli elaboratori Etichette (label): funzionamento Quando un etichetta viene definita (cioè coniata, inventata, introdotta nel programma), l assembler tiene traccia dell indirizzo in cui sta per scrivere il prossimo dato o istruzione Nella definizione, l etichetta appare seguita da due-punti ll programmatore può riferire (usare) un etichetta (definita altrove) usandola al posto di un operando in un comando. L assembler sostituisce l etichetta con l indirizzo corrispondente. Nel riferimento, l etichetta appare senza il due-punti Un etichetta può essere definita in un programma una sola volta, e essere riferita molte volte la definizione dell etichetta può precedere oppure seguire il suo riferimento (questo comporta che l assembler dovrà faticare un po, e leggere il programma due volte) Architettura degli elaboratori Architettura degli elaboratori - Assembly

19 Etichette (label): usi tipici Le etichette definite nella sezione data saranno riferite da comandi tipo load / store come indirizzo a cui leggere /scrivere quei dati.data popolaz:.word # definisco l etichetta.text la $t1, popolaz # carica l address popolaz in t1 lw $t2, 0($t1) # carica in $t1 Le etichette definite nella sezione text saranno riferite da comandi tipo jump / branch come indirizzo a cui saltare.text ite: sub $t2, $t2, 1 # t2 = t2-1 bgtz $t2, ite # if (t2 > 0) goto ite Architettura degli elaboratori Label e direttive per definire dati Tipico uso: Es: label:.tipo valore pippo:.word 19 «nel primo indirizzo libero, al quale io mi riferirò in futuro chiamandolo con pippo (l etichetta), piazza il valore 19 come un word (4 byte)» Somiglia molto al commando Java: int pippo = 19; Anche valori multipli label:.tipo val0, val1, pippo:.word 19, 12, 13 Architetture Architettura degli elaboratori - Assembly

20 Altre direttive.globl pippo L etichetta pippo determina quale sia il PC iniziale ( l esecuzione parte da lì ) Altre direttive sono descritte sul libro Architetture System call MIPS offre semplici servizi mediante chiamate di sistema (system call) predefinite Ogni chiamata è costituita da Codice dell operazione Argomenti (opzionali) Valori di ritorno (opzionali) Architetture Architettura degli elaboratori - Assembly

21 Funzioni di sistema Architetture Come fare una system call 1) Inserire il codice nel registro $v0 2) Inserire gli argomenti nei registri $a0-$a3 ($f12-$f15) 3) Eseguire l istruzione syscall 4) Il valore di ritorno è nel registro $v0 ($f0) Architetture Architettura degli elaboratori - Assembly

22 Riassumendo L Assembler semplifica la vita al programmatore, rispetto al linguaggio macchina, perché Traduce numeri da decimale, esadec, o ascii in binario Traduce codici mnemonici di op (come «add») in opcode binari Riordina i parametri a seconda che il comando sia di tipo R, o I, permettendoci di fornire i parametri in un ordine consistente (il risultato prima) Rinomina i registri, consentendo di usare nomi più significativi («$t1» invece di «$9») Mette a disposizione alcune utili (Pseudo) Istruzioni ulteriori (traducendole con una o due Istruzioni MIPS) Consente di indentare a piacere il codice (aggiungere accapi, spazi, tabulazioni) per renderlo più leggibile Consente di aggiungere commenti al codice (che semplicemente ignora) Tiene traccia degli indirizzi di dati ed istruzioni, attraverso il meccanismo delle etichette Calcola gli offset degli indirizzi rispetto al PC etc Tuttavia, programmare direttamente in Assembly rimane tremendamente difficile Nella realtà si usano sempre linguaggi più ad alto livello! Complilati e trasformati in Assembly o linguaggio macchina Architettura degli elaboratori Architettura degli elaboratori - Assembly

Manualino minimale MIPS

Manualino minimale MIPS Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Manualino minimale MIPS Marco Tarini Operazioni aritmetiche Nome Comando completo Esempio Sintassi (es) Significato Semantica

Dettagli

Instruction Set MIPS: piccolo prontuario

Instruction Set MIPS: piccolo prontuario Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Instruction Set MIPS: piccolo prontuario MIPS R3000 Instruction Set Architecture Categorie di istruzioni: Computazioni

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Istruzioni Significato add $t1, $t2, $t3 $t1 = $t2 + $t3 sub $t1, $t2, $t3 $t1 = $t2 - $t3 mult $t1, $t2 Hi,Lo = $t1*$t2 div

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin ORGANIZZAZIONE DEL CALCOLATORE:

Dettagli

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F. Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/32 Linguaggio

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Il linguaggio macchina

Il linguaggio macchina Il linguaggio macchina Istruzioni macchina (PH 2.4) Indirizzamento (PH 2.9) Costanti a 32-bit (PH 2.9) 1 Linguaggio macchina Le istruzioni in linguaggio assembly devono essere tradotte in linguaggio macchina

Dettagli

MIPS! !

MIPS! ! MIPS! Sono descritte solamente le istruzioni di MIPS32, le pseudo-istruzioni, System Calls e direttive del linguaggio assembly che sono maggiormente usate.! MIPS è big-endian, cioè, lʼindirizzo di una

Dettagli

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

Dettagli

Il linguaggio macchina

Il linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/33 Linguaggio

Dettagli

Architettura degli elaboratori

Architettura degli elaboratori Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori Programmazione in assembly MIPS Marco Tarini Dipartimento di Scienze Teoriche e Applicate

Dettagli

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 2007/2008 Francesco Tortorella Istruzioni di confronto Istruzione Significato slt $t1,$t2,$t3 if

Dettagli

Fetch Decode Execute Program Counter controllare esegue prossima

Fetch Decode Execute Program Counter controllare esegue prossima Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo

Dettagli

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio

Dettagli

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. di Cassino e del Lazio Meridionale Corso di MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M. Anno Accademico 201/201 Francesco Tortorella Istruzioni di confronto Istruzione

Dettagli

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano L16-20 1/29 Linguaggio

Dettagli

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly

Lezione 12. Assembly II. Set di Istruzioni MIPS Strutture di controllo in Assembly Architettura degli Elaboratori e delle Reti Lezione 12 Assembly II Set di Istruzioni MIPS Strutture di controllo in Assembly Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università

Dettagli

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando

Un altro tipo di indirizzamento. L insieme delle istruzioni (3) Istruz. di somma e scelta con operando (2) Istruzioni di somma e scelta con operando Un altro tipo di indirizzamento L insieme delle istruzioni (3) Architetture dei Calcolatori (lettere A-I) Tipi di indirizzamento visti finora Indirizzamento di un registro Indirizzamento con registro base

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione

Modifiche di orario. Lezione 19 Il Set di Istruzioni (6) Dove siamo nel corso. Un quadro della situazione Modifiche di orario Lezione 19 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Al posto della lezione di domani giovedì 22/5 (12-1)

Dettagli

Istruzioni di controllo del flusso

Istruzioni di controllo del flusso Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal

Dettagli

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento Architetture degli Elaboratori e delle Reti Lezione 17 Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A

ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A ARCHITETTURE DEI CALCOLATORI (canale A-I) - Prima prova in itinere del 16/6/2003 Compito tipo A *** indicano le affermazioni corrette. 1. Con riferimento alle architetture dei calcolatori ed alla valutazione

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Istruzioni assembler Istruzione N Registri

Istruzioni assembler Istruzione N Registri Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e

Dettagli

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario La struttura delle istruzioni elementari: il linguaggio Macchina Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano Riferimento sul

Dettagli

ISA (Instruction Set Architecture) della CPU MIPS

ISA (Instruction Set Architecture) della CPU MIPS Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS Prof. Federico Pedersini Dipartimento di Informatica Uniersità degli Studi di Milano L16-20 1 Linguaggio macchina

Dettagli

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Architettura degli Elaboratori Lezione 20 Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly Prof. F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

ISA (Instruction Set Architecture) della CPU MIPS32

ISA (Instruction Set Architecture) della CPU MIPS32 Architettura degli Elaboratori Lezione 20 ISA (Instruction Set Architecture) della CPU MIPS32 Prof. Federico Pedersini Dipartimento di Informatica Uniersità degli Studi di Milano L16-20 1 Linguaggio macchina

Dettagli

Corso di Architettura (Prof. Scarano) 10/05/2002

Corso di Architettura (Prof. Scarano) 10/05/2002 Lezione 0 Il Set di Istruzioni (6) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Le procedure Prima della chiamata di una procedura In ogni linguaggio di

Dettagli

Laboratorio di Architettura degli Elaboratori LabArch 2007 Terzo Quadimestre, a.a Docente: H. Muccini

Laboratorio di Architettura degli Elaboratori LabArch 2007 Terzo Quadimestre, a.a Docente: H. Muccini [http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2007 Terzo Quadimestre, a.a. 2006-2007 Docente: H. Muccini Lecture 12: - Numeri con segno -Somma e sottrazione

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin ORGANIZZAZIONE DEL CALCOLATORE:

Dettagli

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App. Assembly Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A 1 Linguaggio assembly (App. A) Rappresentazione simbolica del linguaggio macchina Più comprensibile

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Strutture di controllo P.H. cap. 2.6 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Le strutture di controllo Istruzioni di salto if then do...

Dettagli

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I Il linguaggio Assembly Architettura degli Elaboratori e delle Reti Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it 1 Linguaggio

Dettagli

Linguaggio macchina e register file

Linguaggio macchina e register file Linguaggio macchina e register file Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@di.unimi.it Università degli Studi di Milano Riferimento sul Patterson: capitolo 4.2, 4.4,

Dettagli

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Richiamo sull

Dettagli

MIPS Instruction Set 1

MIPS Instruction Set 1 Architettura degli Elaboratori e Laboratorio 20 marzo 2012 Istruzioni Comuni 1/3 Istruzioni Aritmetiche: Instruction Example Meaning Comments add add $1,$2,$3 $1=$2+$3 Always 3 operands subtract sub $1,$2,$3

Dettagli

Le tre famiglie fondamentali. Laboratorio di Architettura. 1. Manipolazione di dati. 1.1 Aritmetica di base. Lezione 3

Le tre famiglie fondamentali. Laboratorio di Architettura. 1. Manipolazione di dati. 1.1 Aritmetica di base. Lezione 3 Le tre famiglie fondamentali Laboratorio di Architettura Lezione 3 Andrea Torsello Dipartimento di Informatica Università Ca Foscari di Venezia Ci sono tre famiglie fondamentali di istruzioni, per: 1.

Dettagli

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Lezione 8 CPU a singolo ciclo Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 8 /33 Sommario! La

Dettagli

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12

Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12 Autilia Vitiello Dip. di Informatica ed Applicazioni Stecca 7, 2 piano, stanza 12 vitiello@dia.unisa.it http://www.dia.unisa.it/~avitiello Presentazione Corso di Architettura matricole congruo a 0: prof.

Dettagli

L insieme delle istruzioni del processore MIPS. Corso Calcolatori Elettronici presso POLITECNICO DI MILANO

L insieme delle istruzioni del processore MIPS. Corso Calcolatori Elettronici presso POLITECNICO DI MILANO L insieme delle istruzioni del processore MIPS Corso Calcolatori Elettronici presso POLITECNICO DI MILANO Cristina Silvano Università degli Studi di Milano Dipartimento di Scienze dell Informazione email:

Dettagli

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini [http://www.di.univaq.it/muccini/labarch] Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a. 2005-2006 Docente: H. Muccini Lecture 09: - Modi di indirizzamento del MIPS

Dettagli

Lezione 17 Il Set di Istruzioni (3)

Lezione 17 Il Set di Istruzioni (3) Lezione 17 Il Set di Istruzioni (3) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Un richiamo su: Operazioni aritmetiche (add

Dettagli

Università degli Studi di Roma La Sapienza

Università degli Studi di Roma La Sapienza Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Introduzione ai concetti ed al simulatore SPIM Indice degli argomenti Introduzione Assembler, compilatore, linker, programma

Dettagli

Informazioni varie. Lezione 18 Il Set di Istruzioni (5) Dove siamo nel corso. Un quadro della situazione

Informazioni varie. Lezione 18 Il Set di Istruzioni (5) Dove siamo nel corso. Un quadro della situazione Informazioni varie Lezione 18 Il Set di Istruzioni (5) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno La lezione di martedì 20 maggio (9-12) non si tiene

Dettagli

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio

15 April LABORATORIO 04 PROCEDURE STACK. CHIAMATA A PROCEDURE I. Frosio 15 April 2011 05 LABORATORIO 04 PROCEDURE STACK CHIAMATA A PROCEDURE I. Frosio 1 SOMMARIO Procedure Stack Chiamata a procedure 2 PERCHÈ LE PROCEDURE? 15 April 2011 Main Proc3 Proc2 Proc1 Programmazione

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Strutture di controllo P.H. cap. 2.6 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Le strutture di controllo Istruzioni di salto if then do...

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata

Dettagli

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti Architettura degli Elaboratori e delle Reti Lezione 18 CPU a singolo ciclo Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 18 1/2 Sommario!

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:

Dettagli

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti Prof. Alberto Borghese Ing. Iuri Frosio Dipartimento di Scienze dell Informazione borghese,frosio@dsi.unimi.it Università degli Studi

Dettagli

Lezione 2 Assembly MIPS (2)

Lezione 2 Assembly MIPS (2) Lezione 2 Assembly MIPS (2) http://www.dii.unisi.it/~giorgi/didattica/arcal1 All figures from Computer Organization and Design: The Hardware/Software Approach, Second Edition, by David Patterson and John

Dettagli

Istruzioni e linguaggio macchina

Istruzioni e linguaggio macchina Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare

Dettagli

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto Un quadro della situazione Lezione 15 Il Set di Istruzioni (3) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Input/Output Sistema di Interconnessione Registri

Dettagli

Assembly IV Le procedure

Assembly IV Le procedure rchitettura degli Elaboratori e delle Reti Lezione 14 ssembly IV Le procedure Proff.. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano (Patterson-Hennessy:

Dettagli

Stringhe di caratteri

Stringhe di caratteri Stringhe di caratteri PH 2.8 1 Gestione dei caratteri Ogni carattere è rappresentato univocamente mediante un codice numerico rappresentabile usando un byte (codice ASCII) MIPS fornisce le istruzioni lb

Dettagli

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I)

Le procedure. L insieme delle istruzioni (4) Prima della chiamata di una procedura. Le procedure (2) Architetture dei Calcolatori (lettere A-I) Le procedure L insieme delle istruzioni (4) Architetture dei Calcolatori (lettere A-I) In ogni linguaggio di programmazione si struttura il proprio codice usando procedure (funzioni, metodi, ) L utilizzo

Dettagli

Università degli Studi di Cassino

Università degli Studi di Cassino Corso di MIPS: modello di programmazione Anno Accademico 2007/2008 Francesco Tortorella CPU Compito della CPU: eseguire istruzioni Le istruzioni costituiscono le operazioni primitiva eseguibili dalla CPU

Dettagli

Ricevimento inviate una e mail a con oggetto [Tutorato Arch] o [Tutorato Prog1]

Ricevimento inviate una e mail a con oggetto [Tutorato Arch] o [Tutorato Prog1] Presentazione LE ISTRUZIONI: IL LINGUAGGIO DEI CALCOLATORI Sarro Federica, Phd Student Facoltà di Scienze MM FF NN Università degli Studi di Salerno fsarro@unisa.itit http://www.dmi.unisa.it/people/sarro/www/

Dettagli

Progetto CPU a singolo ciclo

Progetto CPU a singolo ciclo Architettura degli Elaboratori e delle Reti Progetto CPU a singolo ciclo Proff. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1/60 Sommario v La CPU v Sintesi di

Dettagli

Controllo di flusso. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso

Controllo di flusso. Università degli Studi di Milano Corso di Laurea in Informatica, A.A Homepage del corso Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Controllo di flusso Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135 Milano

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Codifica dei numeri Rappresentazioni in base 2, 8, 10 e 16 Rappresentazioni M+S, C1 e C2 Algoritmi di conversione di base Algoritmi di somma, moltiplicazione e divisione

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria

Dettagli

Modalità di indirizzamento

Modalità di indirizzamento Modalità di Indirizzamento + Programmi Architettura degli Elaboratori e delle Reti Turno I Alberto Borghese Università degli Studi di Milano Dipartimento di Scienze dell Informazione email: borghese@dsi.unimi.it

Dettagli

Progetto CPU a singolo ciclo

Progetto CPU a singolo ciclo Architettura degli Elaboratori e delle Reti Progetto CPU a singolo ciclo Proff. A. Borghese, F. Pedersini Dipartimento di Informatica Università degli Studi di Milano 1/50 Sommario! La CPU! Sintesi di

Dettagli

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC

Dettagli

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler Indice Linguaggio ad alto livello, linguagio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni aritmetiche, di trasferimento dati e di salto Conversione linguaggio assembler in linguaggio

Dettagli

Corso di Calcolatori Elettronici

Corso di Calcolatori Elettronici di Cassino e del Lazio Meridionale Corso di MIPS: modello di programmazione Anno Accademico Francesco Tortorella CPU Compito della CPU: eseguire istruzioni Le istruzioni costituiscono le operazioni primitiva

Dettagli

Università degli Studi di Cassino e del Lazio Meridionale

Università degli Studi di Cassino e del Lazio Meridionale Università degli Studi di Cassino e del Lazio Meridionale di Calcolatori Elettronici MIPS: modello di programmazione Anno Accademico 2012/2013 Alessandra Scotto di Freca Si ringrazia il prof.francesco

Dettagli

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del 03-11-09 COGNOME NOME

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del 03-11-09 COGNOME NOME MATRICOLA COGNOME NOME 1) [28/40] Trovare il codice assembly MIPS corrispondente dei seguenti micro-benchmark (utilizzando solo e unicamente istruzioni dalla tabella sottostante), rispettando le convenzioni

Dettagli

Convenzioni di chiamata a procedure

Convenzioni di chiamata a procedure Università degli Studi di Milano Laboratorio di Architettura degli Elaboratori II Corso di Laurea in Informatica, A.A. 2016-2017 Convenzioni di chiamata a procedure Nicola Basilico Dipartimento di Informatica

Dettagli

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H Architettura dei calcolatori e sistemi operativi Architettura MIPS e set istruzioni Capitolo 2 P&H Instruction Set Architecture ISA Linguaggio assemblatore e linguaggio macchina ISA processore MIPS Modello

Dettagli

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione

Dal sorgente all eseguibile I programmi Assembly. Prof. Alberto Borghese Dipartimento di Scienze dell Informazione Dal sorgente all eseguibile I programmi Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Riferimenti sul Patterson: Cap. 2.10 + Appendice B, tranne B.7

Dettagli

ISA e linguaggio macchina

ISA e linguaggio macchina ISA e linguaggio macchina Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@di.unimi.it Università degli Studi di Milano Riferimento sul Patterson: capitolo 4.2, 4.4, D1, D2. 1/55

Dettagli

Il linguaggio Assembly del MIPS

Il linguaggio Assembly del MIPS Il linguaggio Assembly del MIPS Linguaggio macchina Linguaggio definito da un insieme di istruzioni, codificate come stringhe di bit, che il processore può interpretare ed eseguire direttamente Linguaggio

Dettagli

Linguaggio Assembler

Linguaggio Assembler 1 Linguaggio Assembler Andrea Coccoli A.Coccoli@guest.cnuce.cnr.it aa 2001-2002 1 Indice Linguaggio ad alto livello, linguaggio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni

Dettagli

Motivazioni. Assembly. Programmazione Assembly. Programmazione Assembly

Motivazioni. Assembly. Programmazione Assembly. Programmazione Assembly Assembly Programmazione in linguaggio macchina (o meglio in assembly): programmare utilizzando istruzioni direttamente eseguibili dal processore. Questa parte del corsi si accompagna a lezioni in laboratorio:

Dettagli

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico Architettura degli Elaboratori e Laboratorio Matteo Manzali Università degli Studi di Ferrara Anno Accademico 2016-2017 Rappresentazione dei caratteri Anche i caratteri, come i numeri, sono rappresentati

Dettagli

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME COMPITINO # di CALCOLATORI ELETTRONICI del 03--09 MATRICOLA COGNOME NOME ) [8/40] Trovare il codice assembly MIPS corrispondente dei seguenti micro-benchmark (utilizzando solo e unicamente istruzioni dalla

Dettagli

L'architettura del processore MIPS

L'architettura del processore MIPS L'architettura del processore MIPS Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento

Dettagli

5 April LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE. I. Frosio

5 April LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE. I. Frosio 5 April 2012 04 LABORATORIO 03 CONTROLLO DEL FLUSSO DI UN PROGRAMMA JUMP ADDRESS TABLE I. Frosio 1 SOMMARIO If... Then... If... Then... Else... For... Break... While... Do Do... While Switch (jump address

Dettagli

Architettura degli elaboratori CPU a ciclo singolo

Architettura degli elaboratori CPU a ciclo singolo Architettura degli elaboratori CPU a ciclo singolo Prof. Alberto Borghese Dipartimento di Informatica borghese@di.unimi.it Università degli Studi di Milano iferimento sul Patterson: capitolo 4.2, 4.4,

Dettagli

MIPS Instruction Set 1

MIPS Instruction Set 1 Laboratorio di Architettura 8 aprile 2011 1 SPIM 2 Architettura Mips 3 Esercitazione SPIM emulatore software architettura MIPS R2000/R3000 debugger + servizi base di sistema operativo realizzazione/verifica

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Chiamata a procedura PH cap. 2.7 e app. A.6 1 Chiamata a procedura in C int prod (int x, int y) { int out; out = x * y; return out; } f = f + 1; if (f == g) res = prod(f,g); else

Dettagli

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica

Calcolatori Elettronici Prof. Fabio Roli. Linguaggio Assembly. Capitolo 5. Corso di Laurea di Ingegneria Elettronica Calcolatori Elettronici Prof. Fabio Roli Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto

Dettagli

Tutorato Architettura degli elaboratori

Tutorato Architettura degli elaboratori Tutorato Architettura degli elaboratori Dott. Damiano Braga Before we start.. Orario 22 Marzo h. 14.00-16.00 aula Info2 30 Marzo h. 11.30-13.30 aula F6 12 Aprile h. 14.00-16.00 aula Info1 20 Aprile h.

Dettagli