Istruzioni MIPS per floating point

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

Istruzioni di trasferimento dati

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

Istruzioni assembler Istruzione N Registri

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

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

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

Richiami sull architettura del processore MIPS a 32 bit

Il linguaggio macchina

Richiami sull architettura del processore MIPS a 32 bit

1 Esercizio. 2 Esercizio

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

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

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

Linguaggio Assembly e linguaggio macchina

Architettura degli Elaboratori

Linguaggio Assembly e linguaggio macchina

Il linguaggio macchina

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

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

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

Linguaggio Assembly e linguaggio macchina

Architetture dei Calcolatori

Il Linguaggio Assembly: Gestione della memoria e controllo

Università degli Studi di Cassino

Tipi di dato semplici

Lecture 2: Prime Istruzioni

21 March : ESERCITAZIONE 01 GESTIONE DELLA MEMORIA VETTORI CONTROLLOO O DI FLUSSO DI UN PROGRAMMA. I. Frosio

Università degli Studi di Roma La Sapienza

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

Calcolatori Elettronici

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

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

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

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

ISA e linguaggio macchina

ISA (Instruction Set Architecture) della CPU MIPS

Aritmetica in virgola mobile Algebra di Boole e reti logiche Esercizi. Mercoledì 8 ottobre 2014

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

Passaggio di Parametri per Valore o Indirizzo

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

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Calcolatori Elettronici

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

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

Codifica. Rappresentazione di numeri in memoria

Rappresentazione in virgola mobile. 5 ottobre 2015

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Rappresentazione in virgola mobile

Rappresentazione in virgola mobile Barbara Masucci

Esercizi da esame di Programmazione Assembler MIPS

Rappresentazione di numeri reali. Rappresentazione in virgola mobile. Perché la rappresentazione in virgola mobile. Rappresentazione in virgola mobile

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

Macchina di Riferimento: argomenti

L ambiente di simulazione SPIM

L'architettura del processore MIPS

Astrazione dell implementazione. Il processore: unità di elaborazione e unità di controllo (2) Il controllo della ALU.

Sistema Numerico Decimale

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

Lezione 3. I numeri relativi

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

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Calcolatori Elettronici

MIPS Instruction Set 1

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

Motivazioni. Assembly. Programmazione Assembly. Programmazione Assembly

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

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

L ambiente di simulazione SPIM

Linguaggio Assembler MIPS

Rappresentazione di numeri reali. Architetture dei Calcolatori (Lettere. Perché la rappresentazione in virgola mobile

Implementazione semplificata

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

La codifica binaria. Informatica B. Daniele Loiacono

Esercitazione n. 5. Rappresentazione dei numeri

MIPS! !

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

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

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Calcolatori Elettronici A a.a. 2008/2009

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

Codifica dati e istruzioni. Lezione 9. Codifica dati e istruzioni. Codifica dati e istruzioni. Codifica binaria dell informazione

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo

L insieme delle istruzioni (6)

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

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

La codifica. dell informazione

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

Rappresentazione dell informazione. Argomenti trattati: Codifica: Teoria generale. Proprietà di una codifica:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Argomenti trattati: Rappresentazione dell informazione. Proprietà di una codifica: Codifica: Teoria generale

La codifica binaria. Informatica B. Daniele Loiacono

Il processore: unità di elaborazione

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Sistemi di Numerazione Binaria

Aritmetica dei Calcolatori

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Assembly. Motivazioni. Programmazione Assembly

Assembly III SPIM: un ambiente di simulazione MIPS

Transcript:

Istruzioni MIPS per floating point Architetture dei Calcolatori (lettere A-I) Coprocessore per floating point L architettura MIPS ha un coprocessore (indicato con il numero 1) che opera sui numeri in virgola a mobile a singola e doppia precisione 32 registri $f0 $f31 (ciascuno da 32 bit) che sono dedicati per la rappresentazione in virgola mobile Problema: i registri $f0 $f31 hanno dimensione pari a 32 bit: come fare per rappresentare i numeri a precisione doppia che richiedono 64 bit? Convenzione: si usano i registri a coppie pari/dispari Esempio: la coppia di registri $f0 $f1 è usata per contenere il valore di un numero a precisione doppia Per le operazioni a singola precisione si possono usare soltanto i registri pari $f0, $f2,, $f30 Valeria Cardellini 1

Istruzioni aritmetiche in virgola mobile Doppia versione delle istruzioni in virgola mobile a precisione singola: rappresentazione a 32 bit Nome_istruzione.s a precisione doppia: rappresentazione a 64 bit Nome_istruzione.d Addizione floating point add.s e add.d Esempio: add.s $f2, $f4, $f6 Sottrazione floating point sub.s e sub.d Esempio: sub.d $f2, $f4, $f6 Moltiplicazione floating point mul.s e mul.d Esempio: mul.s $f2, $f4, $f6 Divisione floating point div.s e div.d Valeria Cardellini 2 Istruzioni di confronto e branch in virgola mobile Istruzioni di confronto Precisione singola: c.x.s Precisione doppia: c.x.d x può essere pari a eq (equal), neq (not equal) lt (less than), le (less than or equal) gt (greater than), ge (greater than or equal) L istruzione di confronto pone un flag di condizione (bit) pari a vero o falso; una successiva istruzione di branch permette di saltare in base al valore del flag Istruzioni di branch branch true: bc1t branch false: bc1f Esempio: c.lt.s $f2, $f4 bc1t L1 # salta a L1 se $f2 < $f4 Valeria Cardellini 3

Istruzioni di load/store Per caricare un valore dalla memoria in un registro floating point e memorizzare il valore di un registro floating point in memoria Per load: istruzione lwc1 Per store: istruzione swc1 Esempio Frammento di codice assembler per caricare dalla memoria due numeri a precisione singola (quindi 32 bit), sommarli e memorizzare il risultato lwc1 $f4, 0($t0) lwc1 $f6, 4($t0) add.s $f2, $f4, $f6 swc1 $f2, 8($t0) Valeria Cardellini 4 Esempio 1 Procedura per la conversione da gradi Fahrenheit a gradi Celsius Codice C: float f2c (float fahr) { return ((5.0/9.0) * (fahr - 32.0)); } Per passare parametri floating point si usano i registri $f12-$f15 Per passare il risultato della procedura si usano i registri $f0-$f1 I registri $f0-$f31 devono essere salvati dalla procedura chiamata (stessa convenzione usata per $s0-$s7) Valeria Cardellini 5

Esempio 1 (2) fahr in $f12, celsius in $f0 Costante 5.0 in const5, 9.0 in const9, 32.0 in const32 Codice assembler MIPS: f2c: l.s $f16, const5 l.s $f18, const9 div.s $f16, $f16, $f18 # $f16=5.0/9.0 l.s $f18, const32 sub.s $f18, $f12, $f18 # $f18=fahr-32.0 mul.s $f0, $f16, $f18 jr $ra Valeria Cardellini 6 Esempio 2 Procedura per calcolare il prodotto scalare tra due vettori float a e b di dimensione n Codice C: float DotProd(int n, float *a, float *b) { int i; float result=0.; for (i=0; i<n; i++) result += a[i]*b[i]; return result; } Assunzioni: n in $a0, indirizzo base dei vettori a e b in $a1 e $a2 rispettivamente (attenzione: l indirizzo di memoria è un intero!) Valeria Cardellini 7

Esempio 2 (2) Codice assembler MIPS: DotProd: mtc1 $zero, $f0 # Trasferisce $zero in $f0 slt $t0, $a0, $zero # if (n <= 0) endloop beq $t0, $zero, endloop sll $a0, $a0, 2 # $a0 = $a0 * 4 add $a0, $a1, $a0 loop: lwc1 $f2, 0($a1) # Carica a[i] lwc1 $f4, 0($a2) # Carica b[i] mul.s $f6, $f2, $f4 # Moltiplica a[i] per b[i] add.s $f0, $f0, $f6 # Aggiungi a[i]*b[i] a result ($f0) addi $a1, $a1, 4 # Elemento successivo di a addi $a2, $a2, 4 # Elemento successivo di b bne $a1, $a0, loop endloop: jr $ra # Ritorna al chiamante Valeria Cardellini 8 Istruzioni di conversione Istruzioni per la conversione da valori interi a valori floating point (casting) Tipo di dato in cui convertire Registro destinazione cvt.s.w $f4, $f2 Esempio Tipo di dato da cui convertire (w per interi) Registro sorgente addi $t0, $zero, 32 # $t0 = 32 mtc1 $t0, $f2 # $f2 = 32 intero cvt.s.w $f4, $f2 # $f4 = 32.0 Valeria Cardellini 9