Il linguaggio assembly
|
|
|
- Ivo Salvatori
- 8 anni fa
- Просмотров:
Транскрипт
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
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
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
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
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
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
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
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
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 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.
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 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 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.
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 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
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) 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
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 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
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 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
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 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 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
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 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
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
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
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
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 Architetture Avanzate dei Calcolatori Valeria Cardellini Caratteristiche principali dell architettura del processore MIPS E un architettura RISC
