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

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

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

Università degli Studi di Cassino

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

Istruzioni assembler Istruzione N Registri

Calcolatori Elettronici

Il Linguaggio Assembly: Gestione della memoria e controllo

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

Lezione 2 Assembly MIPS (2)

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

Il processore: unità di elaborazione

Richiami sull architettura del processore MIPS a 32 bit

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

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

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Architettura dei calcolatori e sistemi operativi. Il processore Capitolo 4 P&H

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

La programmazione dei calcolatori. Architetture dei Calcolatori (Lettere. Benefici dei linguaggi ad alto livello. Vantaggi e svantaggi dell assembler

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

Progetto CPU (ciclo singolo) Salvatore Orlando

Architettura MIPS (RISC) Architetture dei Calcolatori (Lettere. Principi di Progettazione ISA MIPS MIPS R3000 ISA. Il Set di Istruzioni MIPS

Linguaggio Assembler MIPS

Assembly. Motivazioni. Programmazione Assembly

Calcolatori Elettronici A a.a. 2008/2009

Processore: Datapath & Control. Progetto CPU (ciclo singolo) Rivediamo i formati delle istruzioni. ISA di un MIPS-lite

Architettura degli Elaboratori B Introduzione al corso

LA FAMIGLIA DI PROCESSORI MIPS

Elementi base per la realizzazione dell unità di calcolo

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Il linguaggio assembly

Linguaggio Assembler MIPS

Università degli Studi di Cassino

Architettura di tipo registro-registro (load/store)

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina

Motivazioni. Assembly. Programmazione Assembly. Programmazione Assembly

Lezione 3 Assembly MIPS (2)

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Le costanti Le modalità di indirizzamento L assembly del MIPS

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Il processore: unità di controllo

Assembler MIPS R2000/3000

Implementazione semplificata

Linguaggio Assembler

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

DISPENSE DI CALCOLATORI ELETTRONICI 1

Architetture dei Calcolatori

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

Università degli Studi di Roma La Sapienza

Istruzioni MIPS per floating point

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Materiale didattico. Materiale didattico. Architettura MIPS. Il linguaggio Assembly parte I. Architettura degli Elaboratori e delle Reti

CALCOLATORI ELETTRONICI 15 aprile 2014

Architettura dei calcolatori e sistemi operativi. Set istruzioni e struttura del programma Direttive all Assemblatore.

Come caricare costanti lunghe 32 bits. Caricamento di costanti. Indirizzamento nei salti. Indirizzamento nei salti

Lecture 2: Prime Istruzioni

Architettura di una CPU

Richiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis

Architettura degli Elaboratori Lez. 2 Le istruzioni della CPU. Prof. Andrea Sterbini

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 13 Luglio 2004

Esempio di procedura annidata. L insieme delle istruzioni (5) Esempio di procedura annidata (2) set_array: Esempio di procedura annidata (3)

PROVA SCRITTA DEL MODULO/CORSO DI. 24 novembre 2016

CPU a singolo ciclo: l unità di controllo, istruzioni tipo J

Piccola Introduzione al Linguaggio Assembly e Simili Amenità. Luca Abeni

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Assembler MIPS R2000/R3000 Assembly I

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Architettura degli Elaboratori


Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

La CPU e la Memoria. Sistemi e Tecnologie Informatiche 1. Struttura del computer. Sistemi e Tecnologie Informatiche 2

La macchina programmata Instruction Set Architecture (1)

Architettura degli Elaboratori Modulo 2

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

Fondamenti di Informatica CdL Ingegneria Meccanica A.A. 2013/14

Capitolo 6 Il repertorio delle istruzioni. Parte I

Lezione4: MIPS e Istruzioni (1 Parte)

Esame di Architetture Canale MZ Prof. Sterbini 8/6/15

Il linguaggio Assembly

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

U"lizzo della memoria (Indirizzamento, le2ura, scri2ura) Dire8ve Assembler in SPIM

.: CALCOLATORI 7 MAGGIO 2015

Corso di Laurea in Informatica

Le istruzioni: il linguaggio dei calcolatori. Luigi Palopoli

Hazard sul controllo. Sommario

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica

Architettura dei sistemi di elaborazione: La CPU: Architettura (parte1)

Laboratorio di Architettura degli Elaboratori

Introduzione al MIPS64

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI

Calcolatori Elettronici

Calcolatori Elettronici A a.a. 2008/2009

Tutorato Architettura degli elaboratori

Università degli Studi di Cassino e del Lazio Meridionale

Il processore. Istituzionii di Informatica -- Rossano Gaeta

La programmazione dei calcolatori. L insieme delle istruzioni. Vantaggi e svantaggi dell assembler. Benefici dei linguaggi ad alto livello

Transcript:

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 $t1, $t2 Lo=$t1/$t2; Hi=$t1mod$t2 lw $t0, 100($t1) $t0 = Memory[$t1+100] sw $t0, 100($t1) Memory[$t1+100] = $t0 Istruzioni aritmetiche add, sub, mult, div Esempio: add $t0,$s1,$s2 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct Istruzioni di trasferimento dati lw, sw Esempio: lw $t0,32($s3) 100011 10011 01000 0000000000100000 op rs rt address 37 6 bit 5 bit 5 bit 16 bit 38 Concetto di programma memorizzato Ciclo fetch&execute Le istruzioni sono strighe di bits I programmi sono memorizzati in memoria semplificazione hw/sw dei calcolatori Instruction Fetch Instruction Decode Processore Memoria memoria per dati, programmi, compilatori, editor, etc Operand Fetch Execute Ciclo Fetch & Execute l istruzione corrente viene letta e messa in uno speciale registro interno i bit nel registro controllano le azioni seguenti viene letta la nuova istruzione e cosi via 39 Result Store Next Instruction 40

Programma memorizzato Organizzazione della memoria memory 0x7fffffff stack Segmento stack CPU OS Program 1 unused Program 2 code data 0x10000000 Dati dinamici Dati statici Segmento di dato text Segmento di codice unused 0x400000 Riservata 41 42 Istruzioni per prendere le decisioni alterano il controllo del flusso (sequenziale) cambiano quindi la prossima istruzione da eseguire Istruzioni MIPS di salto condizionato bne $t0, $t1, Label beq $t0, $t1, Label Esempio: if (i==j) h = i + j; # branch if not equal # branch if equal bne $s0, $s1, Label add $s3, $s0, $s1 Label:... Salto non condizionato j label Formato J-Type J op 26 bit address 6 bit 26 bit Esempio (costrutto if...then...else): if (i!= j) h=i+j; beq $s4, $s5, Lab1 else h=i-j; add $s3, $s4, $s5 j Lab2 Lab1: sub $s3, $s4, $s5 Lab2:... 43 44

Esempio costrutto while: while (vett[i] == k) i=i+j; i, j e k sono contenuti nei registri $s3, $s4 e $s5 e l indirizzo base di vett in $s6 ciclo:add $t1, $s3, $s3 add $t1, $t1, $t1 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, esci add $s3, $s3, $s4 j ciclo Esci:... #t1 =2*i #t1 =4*i #t1 = indirizzo di vett[i] #t0 = vett[i] #vai a esci se #vett[i] = k #i=i+j #vai a ciclo Istruzione set on less than: #if $s1 < $s2 then slt $t0, $s1, $s2 # $t0 = 1 # else $t0 = 0 Questa istruzione puo essere utilizzata per creare blt che non e predefinita nel linguaggio MIPS. Per fare questo e necessario l uso del registro $zero. slt $t0,$s0,$s1 <=> blt $s0, $s1, Label bne $t0,$zero, Label 45 46 Comando FOR Comando Case/Switch C code: MIPS: for (i=0; i!= n; i = i+k) a = a+b; add $t0, $zero, $zero # i=$t0=0 Loop: beq $t0, $s0, Exit # if (i==n) goto Exit add $s1, $s1, $s2 # a = a+b; add $t0, $t0, $t1 # i = i+k; j Loop # goto Loop Exit: Comando Case/switch puo essere tradotto in una catena di if-then-else caso peggiore: tempo di esecuzione proporzionale al numero di casi puo essere reso piu veloce con un salto ad una tabella di indirizzi (jump address table) dove si trovano le sequenze di istruzioni = vettore con indirizzi delle etichette Nuova istruzione: salto tramite registro jr $t0 (jump register ) 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; } 47 48

Comando Case/Switch $t4 $t4+4 $t4+8 $t4+12 Assembler code: 1. test se 0 <= k <= 3 2. calcola indirizzo 3. trova indirizzo di salto e salta 4. esegue il codice Data: jump table address L0 address L1 address L2 address L3 $t4 <-> base $t2 <-> 4 $s5 <-> k slt $t3, $s5, $zero bne $t3, $zero, Exit slt $t3, $s5, $t2 beq $t3, $zero, Exit add $t1, $s5, $s5 add $t1, $t1, $t1 add $t1, $t1, $t4 lw $t0, 0($t1) jr $t0 L0: add $s0, $s3, $s4 L1: add $s0, $s1, $s2 L2: sub $s0, $s1, $s2 L3: sub $s0, $s3, $s4 Exit: 49 Istruzioni di confronto Istruzione Esempio Significato Commenti set less than slt $1,$2,$3 if ($2<$3) $1=1; Confronto tra registri (con segno) set less than imm. slti $1,$2,100 if ($2<100)$1=1; Confronto registro-costante (con segno) set less than uns. sltu $1,$2,$3 if ($2<$3) $1=1; Confronto tra registri (senza segno) set l. t. imm. uns. sltiu $1,$2,100 if ($2<100) $1=1; Confronto registro-costante (senza segno) 50 Branch e Branch&Link Istruzione Esempio Significato Commenti Jump branch on equal beq $1,$2,L if ($1 == $2) go to L Test di uguaglianza; PC-rel. branch on not eq. bne $1,$2,L if ($1!= $2) go to L Test di disuguaglinza; PC-rel. branch gr. eq. zero bgez $1, L if ($1>= $0) go to L Test di non negativo; PC-rel. branch gr. th.. zero bgtz $1, L if ($1> $0) go to L Test di positivo; PC-rel. branch less eq. zero blez $1, L if ($1<= $0) go to L Test di non positivo; PC-rel. branch less th. zero bltz $1, L if ($1< $0) go to L Test di negativo; PC-rel. Istruzione Es. Significato Commenti jump j L go to L Salta all istruzione di etichetta L jump register jr $31 go to $31 Per i ritorni da procedura jump and link jal P $31 = PC + 4; Per le chiamate di procedura go to P jump and link jalr $1 $31 = PC + 4; Per le chiamate di procedura reg. go to $1 branch gr. eq. zero bgezal $1, P if ($1>= $0) { Test di non negativo; PC-rel. and link $31 = PC + 4; Per le chiamate a procedura go to P} branch less th. zero bltzal $1, P if ($1< $0) { Test di negativo; PC-rel. and link $31 = PC + 4; Per le chiamate a procedura go to P} 51 52

bne, beq, slt Esempio: beq $t0,$t1, Label Operazioni logiche A volte e utile lavorare sui singoli bit all interno di una parola. Shift (scalamento): sposta tutti i bit di una parola verso sinistra o verso destra riempendo con degli 0 i bit rimasti vuoti 000100 01000 01001 Offset 6 bit 5 bit Esempio: slt $t0,$s1,$s2 000000 10001 10010 01000 000000 101010 Implementazione dei costrutti if then else for 5 bit 16 bit shift left logical (sll) e shift right logical (srl) Esempio: sll $t2, $s0, 3 ($s0) 0000 0000 0000 0000 0000 0000 0000 1010 ($t2) 0000 0000 0000 0000 0000 0000 0101 0000 op rs rt rd shamt funct 0 0 16 10 3 0 53 54 Operazioni logiche AND e OR bit a bit Esempio 1:and $t0, $t1, $t2 0000 0000 0000 0000 0110 1010 1110 0000 0000 0000 0000 1100 0001 1100 0000 0000 0000 0000 0100 0000 1100 Esempio 2: or $t0, $t1, $t2 0000 0000 0000 0000 0110 1010 1110 0000 0000 0000 0000 1100 0001 1100 0000 0000 0000 0000 1110 1011 1110 Istruzioni Logiche Istruzione Esempio Significato Commento and and $1,$2,$3 $1 = $2 & $3 3 reg. operands; Logical AND or or $1,$2,$3 $1 = $2 $3 3 reg. operands; Logical OR xor xor $1,$2,$3 $1 = $2 ^ $3 3 reg. operands; Logical XOR nor nor $1,$2,$3 $1 = ~($2 $3) 3 reg. operands; Logical NOR and immediato andi $1,$2,10 $1 = $2 & 10 Logical AND reg, constant or immediato ori $1,$2,10 $1 = $2 10 Logical OR reg, constant xor immediato xori $1, $2,10 $1 = ~$2 &~10 Logical XOR reg, constant shift left logical sll $1,$2,10 $1 = $2 << 10 Shift left by constant shift right logical srl $1,$2,10 $1 = $2 >> 10 Shift right by constant shift right arithm. sra $1,$2,10 $1 = $2 >> 10 Shift right (sign extend) shift left logical sllv $1,$2,$3 $1 = $2 << $3 Shift left by variable shift right logical srlv $1,$2, $3 $1 = $2 >> $3 Shift right by variable shift right arithm. srav $1,$2, $3 $1 = $2 >> $3 Shift right arith. by variable 55 56