Il linguaggio assembly

Размер: px
Начинать показ со страницы:

Download "Il linguaggio assembly"

Транскрипт

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

2 Le strutture di controllo Queste istruzioni alterano l'ordine di esecuzione delle istruzioni: La prossima istruzione da eseguire non è l'istruzione successiva all'istruzione corrente Permettono di eseguire cicli e condizioni In assembly le strutture di controllo sono molto semplici e primitive 3 Istruzioni di salto condizionato Istruzioni di salto: viene caricato un nuovo indirizzo nel contatore di programma (PC) ( invece dell'indirizzo dell istruzione seguente) Istruzioni di salto condizionato (conditional branch): il salto viene eseguito solo se una certa condizione risulta soddisfatta Esempi: beq (branch on equal) e bne (branch on not equal) beq r1, r2, L1 # go to L1 if (r1 == r2) bne r1, r2, L1 # go to L1 if (r1!= r2) 4 2

3 Istruzioni di salto incondizionato Istruzioni di salto incondizionato ( unconditional jump): il salto viene sempre eseguito. Esempi: j (jump) e jr (jump register) e jal (jump and link) j L1 # go to L1 jr r31 # go to add. contained in r31 jal L1 # go to L1. Save add. of next # instruction in reg. Ra 5 Esempio if... then Codice C: if (i == j) f=g+h; if if (condition) clausola-1 f in in $s0 $s0 g in in $s1 $s1 if if (( NOTcondition )) goto goto Lendif; h in in $s2 $s2 clausola-1; i i in in $s3 $s3 Lendif: j j in in $s4 $s4 Codice MIPS: bne $s3, $s4, Lendif # go to Lendif if i j add $s0, $s1, $s2 # f=g+h (saltata if i j) Lendif: 6 3

4 Esempio if... then... else (1 a versione) Codice C o Java: if (i==j) f=g+h; else f=g-h; Codice MIPS: if if (condition) clausola-1 else else clausola-2 if if (NOTcondition) goto goto Lelse; clausola-1; go go to tolendif; Lelse: clausola-2; Lendif: bne $s3, $s4, Else # if i j go to Else add $s0, $s1, $s2 # f=g+h (skipped if i j) j Endif # go to Endif Else: sub $s0, $s1, $s2 # f=g-h (skipped if i = j) Endif: 7 if... then... else (2 a versione) Codice C: if (i==j) f=g+h; else f=g-h; Codice MIPS: if if (condition) clausola-1 else else clausola-2 if if (condition) goto goto Ltrue; clausola-2; go go to tolendif; Ltrue: clausola-1; Lendif: beq $s3,$s4,true sub $s0,$s1,$s2 j Endif True: add $s0,$s1,$s2 Endif: # branch i==j # f=g-h(false) # go to Endif # f=g+h (true) f in in $s0 $s0 g in in $s1 $s1 h in in $s2 $s2 i i in in $s3 $s3 j j in in $s4 $s4 8 4

5 Esempio: do while (1) Codice C: do { g = g + A[i]; i = i + j; } while (i!= h) Riformulata con "goto" Loop: g = g + A[i]; i = i + j; if (i!= h) goto Loop; 9 Esempio: do while (2) Codice MIPS: g in in $s1 $s1 h in in $s2 $s2 addr.a in in $s6 $s6 i i in in $s3 $s3 j j in in $s4 $s4 Loop: add $t1, $s3, $s3 # $t1 <- 2 * i add $t1, $t1, $t1 # $t1 <- 4 * i add $t1, $t1, $s6 # $t1 <- addr. of A[i] lw $t0, 0($t1) # $t0 <- A[i] add $s1, $s1, $t0 # g <- g + A[i] add $s3, $s3, $s4 # i <- i + j bne $s3, $s2, Loop # go to Loop if i h 10 5

6 while Codice C: i while (A[i] == k) i in in $s3 $s3 j i = i + j; j in in $s4 $s4 k in in $s5 $s5 addr.a in in $s6 Codice MIPS: $s6 Loop: add $t1, $s3, $s3 # $t1 2 * i add $t1, $t1, $t1 # $t1 4 * i add $t1, $t1, $s6 # $t1 addr. of A[i] lw $t0, 0($t1) # $t0 A[i] bne $t0, $s5, Exit # go to Exit if A[i] k Exit: add $s3, $s3, $s4 j Loop # i i + j # go to Loop 11 Registro $zero Spesso la verifica di uguaglianza richiede il confronto con il valore 0 Per rendere più veloce il confronto, in MIPS il registro $zero contiene sempre il valore 0 Altro tipo d uso di $zero: g = h; // (in C) g in in $s1 $s1 h in in $s2 $s2 add $s1, $s2, $zero # $s1 $s2 pseudoistruzione move $s1, $s2 # $s1 $s2 12 6

7 Confronto su minore/maggiore Spesso è utile condizionare l'esecuzione di una istruzione al fatto che una variabile sia minore (maggiore) di una altra: slt $t0, $s3, $s4 # set on less than se $s3 < $s4 assegna il valore 1 a $t0 altrimenti assegna il valore 0 a $t0 Con slt, beq e bne si possono implementare tutti i test sui valori di due variabili (==,!=, <, <=, >, >=) 13 Esempio (if) if (i < j) k = i + j; else k = i - j; i i in in $s3 $s3 j j in in $s4 $s4 k in in $s5 $s5 slt $t0, $s3, $s4 # $t0=1 se(i<j) beq $t0, $zero, Else # goto se NOT(i<j) add $s5, $s3, $s4 # k = i + j; (i<j) j Exit Else: sub $s5, $s3, $s4 # k = i - j; (i>=j) Exit: 14 7

8 Esempio (for) Codice C Codice MIPS for for (i=0; i<n; i++) { //CORPO DEL DEL CICLO } i i in in $s0 $s0 n in in $s1 $s1 move $s0, $zero # i=0 for: slt $t0, $s0, $s1 # $t0=0 se i >= n beq $t0, $zero, endfor # esce se i >= n # CORPO DEL CICLO addi $s0, $s0, 1 # i++ j for endfor: # istruz. succ. 15 switch Può essere implementata mediante una serie di if-then-else Alternativa: uso di una jump address table cioè di una tabella che contiene una serie di indirizzi di istruzioni alternative switch(k) { case 0: f = i + j; break; case 1: f = g + h; break case 2: f = g - h; break; case 3: f = i - j; break; } 16 8

9 Switch (if.. elseif ) if(k==0) f=i+j; else if(k==1) f=g+h; else if(k==2) f=g h; bne $s5,$0,l1 # branch k!=0 else if(k==3) f=i j; add $s0,$s3,$s4 # k==0 so f=i+j j Exit # end of case so Exit L1: addi $t0,$s5,-1 # $t0=k-1 bne $t0,$0,l2 # branch k!=1 f in in $s0 $s0 add $s0,$s1,$s2 # k==1 so f=g+h g in in $s1 $s1 j Exit # end of case so Exit h in in $s2 $s2 L2: addi $t0,$s5,-2 # $t0=k-2 i i in in $s3 $s3 bne $t0,$0,l3 # branch k!=2 j j in in $s4 $s4 sub $s0,$s1,$s2 # k==2 so f=g-h k in in $s5 $s5 j Exit # end of case so Exit L3: addi $t0,$s5,-3 # $t0=k-3 bne $t0,$0,exit # branch k!=3 sub $s0,$s3,$s4 # k==3 so f=i-j Exit: 17 Argomenti Le strutture di controllo Istruzioni di salto if then do... while while switch Pseudoistruzioni 18 9

10 Pseudoistruzioni Per semplificare la programmazione, MIPS fornisce un insieme di pseudoistruzioni Le pseudoistruzioni sono un modo compatto ed intuitivo di specificare un insieme di istruzioni Non hanno un corrispondente 1 a 1 con le istruzioni dell'isa La traduzione della pseudoistruzione nelle istruzioni equivalenti è attuata automaticamente dall'assemblatore 19 Esempio pseudo istruzioni move $t0, $t1 add $t0, $zero, $t1 mul $s0, $t1, $t2 mult $t1, $t2 mflo $s0 div $s0, $t1, $t2 div $t1, $t2 mflo $s

11 Pseudo istruzione load address la $t0, jtab la $s3, vet la $t4, vet($s5) se $s5 = 12 = 3*4 $t4 = addr. vet[3] $S3 + 0 $S3 + 4 $S3 + 8 $S vet[0] vet[1] vet[2] vet[3] 21 Branch vari (pseudoistruzioni) bge rs, rt, target Branch to instruction at target if rs >= rt bgt rs, rt, target Branch to instruction at target if rs > rt ble rs, rt, target Branch to instruction at target if rs <= rt blt rs, rt, target Branch to instruction at target if rs < rt es. blt $s1, $s2, label equiv. slt $at, $s1, $s2 bne $at, $zero, label es. ble $s1, $s2, label equiv. slt $at, $s2, $s1 #$at = 1 se $s2<$s1 beq $at, $zero, label #branch se $s1<=$s

12 Branch vari beq rs, rt, target Branch to instruction at target if rs = rt bne rs, rt, target Branch to instruction at target if rs!= rt bgez rs, target Branch to instruction at target if rs >= 0 bgtz rs, target Branch to instruction at target if rs > 0 blez rs, target Branch to instruction at target if rs <= 0 bltz rs, target Branch to instruction at target if rs < 0 beqz rs, target Branch to instruction at target if rs = 0 bnez rs, target Branch to instruction at target if rs!= 0 23 Branch vari bge rs, rt, target Branch to instruction at target if rs >= rt bgeu rs, rt, target Branch to instruction at target if rs >= rt (unsigned) bgt rs, rt, target Branch to instruction at target if rs > rt bgtu rs, rt, target Branch to instruction at target if rs > rt (unsigned) ble rs, rt, target Branch to instruction at target if rs <= rt bleu rs, rt, target Branch to instruction at target if rs <= rt (unsigned) blt rs, rt, target Branch to instruction at target if rs < rt bltu rs, rt, target Branch to instruction at target if rs < rt (unsigned) 24 12

13 25 13

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à

Подробнее

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

Подробнее

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):

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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:

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly Esercitazione di Calcolatori Elettronici Ing. Battista Biggio Corso di Laurea in Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Richiami: v[i] e &v[i] v[i] è il valore dell elemento i nel vettore

Подробнее

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

Подробнее

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

Подробнее

Programmi in Assembly

Programmi in Assembly Programmi in Assembly Prof. Alberto Borghese Dipartimento di Scienze dell Informazione [email protected] Università degli Studi di Milano 1/23 Esempio Numeri positivi # Programma che copia tramite

Подробнее

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali

Sommario Introduzione al linguaggio Assembly. Calcolatori Elettronici Prof. Gian Luca Marcialis. Le operazioni fondamentali Prof. Gian Luca Marcialis Corso di Laurea di Ingegneria Elettronica Capitolo 5 Linguaggio Assembly Fonti principali: Patterson, A.D., Hennessy, J., "Struttura, organizzazione e progetto dei calcolatori

Подробнее

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

Подробнее

Architettura degli Elaboratori B Introduzione al corso

Architettura degli Elaboratori B Introduzione al corso Componenti di un calcolatore convenzionale Architettura degli Elaboratori B Introduzione al corso Salvatore Orlando http://www.dsi.unive.it/~arcb Studieremo il progetto e le prestazioni delle varie componenti

Подробнее

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register Corso di Calcolatori Elettronici I A.A. 2010-2011 Strutture di controllo del flusso di esecuzione in assembler Lezione 25 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di

Подробнее

Richiami sull architettura del processore MIPS a 32 bit

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

Подробнее