Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Documenti analoghi
Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Manualino minimale MIPS

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Calcolatori Elettronici

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

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

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

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

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

L architettura del calcolatore (Prima parte)

Il linguaggio macchina

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

MIPS! !

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

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

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

Architettura degli Elaboratori

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

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

Il linguaggio macchina

Architettura degli Elaboratori

slt $t1,$t2,$t3 if ($t2<$t3) $t1=1; Confronto tra registri slti $t1,$t2,100 if ($t2<100)$t1=1; Cfr. registro-costante

Assembly. Motivazioni. Programmazione Assembly

Università degli Studi di Cassino

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

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

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

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

ISA (Instruction Set Architecture) della CPU MIPS

Fetch Decode Execute Program Counter controllare esegue prossima

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

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

MIPS Instruction Set 1

Assembly (del MIPS): piccolo prontuario

ISA (Instruction Set Architecture) della CPU MIPS32

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

Lezione 2 Assembly MIPS (2)

Linguaggio Assembler MIPS

Linguaggio Assembly e linguaggio macchina

Istruzioni di trasferimento dati

Calcolatori Elettronici A a.a. 2008/2009

Università degli Studi di Roma La Sapienza Architettura degli elaboratori II

Linguaggio Assembly e linguaggio macchina

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

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

Linguaggio Assembly e linguaggio macchina

La macchina programmata Instruction Set Architecture (1)

Istruzioni assembler Istruzione N Registri

Le costanti Le modalità di indirizzamento L assembly del MIPS

La struttura delle istruzioni elementari: il linguaggio Macchina. Sommario

Lezione 18 Il Set di Istruzioni (4)

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

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

Il Linguaggio Assembly: Controllo del flusso: istruzioni e costrutti

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Istruzioni MIPS per floating point

Calcolatori Elettronici A a.a. 2008/2009

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

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Il linguaggio assembly

CALCOLATORI ELETTRONICI 15 aprile 2014

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

Università degli Studi di Cassino

Instruction Set MIPS: piccolo prontuario

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del COGNOME NOME

Architettura di tipo registro-registro (load/store)

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

Linguaggio macchina e register file

MIPS Instruction Set 1

Linguaggio Assembler

ISA e linguaggio macchina

Il linguaggio assembly

Università degli Studi di Cassino

LA FAMIGLIA DI PROCESSORI MIPS

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

DISPENSE DI CALCOLATORI ELETTRONICI 1

Istruzioni e linguaggio macchina

Rappresentazione dell informazione

Corso di Calcolatori Elettronici

Istruzioni di controllo del flusso

Università degli Studi di Cassino e del Lazio Meridionale

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

Università degli Studi di Cassino

Università degli Studi di Cassino e del Lazio Meridionale

Calcolatori Elettronici

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

Università degli Studi di Roma La Sapienza

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

L unità di controllo di CPU a singolo ciclo

Linguaggio Assembler MIPS

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

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

Un quadro della situazione. Lezione 18 Il Set di Istruzioni (6) Dove siamo nel corso. Le operazioni e gli operandi del MIPS. Cosa abbiamo fatto

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

Transcript:

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: RICHIAMI Periferia (insieme delle periferiche) sottosistema di ingresso-uscita sottosistema unità centrale-memoria interfaccia di ingresso-uscita interfaccia di ingresso-uscita unità centrale memoria centrale bus di sistema Elementi di Informatica e Programmazione Università di Brescia 2

Programma e dati in memoria: rivisitazione Indirizzo 0 1 0101011110011001 1101011110011111 0111000000011001 1101011100011101 0110011110011001 0101000111011000 1010011110011001 0101111110000000 0101010010011001 0111000000011001 0101000111011000 0101111110000000 MEMORIA zona della memoria che contiene le istruzioni zona della memoria che contiene i dati (numeri, caratteri, testi, immagini ) Istruzioni: come sono codificate? Abbiamo già visto come sono codificati Elementi di Informatica e Programmazione Università di Brescia 3

Il linguaggio macchina (richiami) Linguaggio macchina: costituito da istruzioni macchina, eseguite dalla CPU Ogni CPU ha un proprio linguaggio macchina (ISA Instruction Set Architecture): per esempio, le istruzioni dei processori Intel X86 sono diverse da quelle del processore MIPS - esistono CPU di marca diversa con diversa struttura fisica che risultano compatibili (es. Intel e AMD) Le istruzioni del linguaggio macchina sono costituite da stringhe di bit, suddivise in: Codice operativo à tipo istruzione Operandi à indicano i dati su cui l istruzione opera (sorgenti) e dove memorizzare il risultato (destinazione) operandi Elementi di Informatica e Programmazione Università di Brescia 4

Codice operativo Il processore è in grado di eseguire molti tipi di istruzioni: add, sub, lw, sw, j, beq, Ad ogni tipo di istruzione viene assegnato un codice binario operandi 0000 add 0001 sub 0010 addi 1000 lw 1001 sw Quanti bit sono necessari per il? Dipende dal numero delle istruzioni disponibili! Elementi di Informatica e Programmazione Università di Brescia 5

Operandi Ogni istruzione opera su un certo numero di operandi Ciascun operando può essere: - operando sorgente o destinazione e - immediato, operando, operando in memoria ESEMPI add $r1, $r3, $r4 sorgente sorgente destinazione addi $r1, $r3, 7 sorgente sorgente destinazione Il (add, addi, ) determina: - quanti operandi - di che tipo Elementi di Informatica e Programmazione Università di Brescia 6

ESEMPI add $r1, $r3, $r4 0000 Supponiamo indichi istruzione add Destinazione: Sorgente1: Sorgente2: addi $r1, $r3, 7 0010 Supponiamo indichi istruzione addi Destinazione: Sorgente1: Sorgente2: immediato Elementi di Informatica e Programmazione Università di Brescia 7

Ogni operando può essere: 1) Una costante indicata nel campo dell istruzione (immediato) ESEMPIO addi $r1, $r3, 7 Destinazione: Sorgente1: Sorgente2: immediato 0010 0111 Supponiamo indichi istruzione addi Elementi di Informatica e Programmazione Università di Brescia 8

2) Un dell unità centrale (operando ) $r0 $r1 $r2 $r3 $r4 4 3 5 10 2 0 1 2 3 4 Ognuno è indicato da un numero univoco Per indicare un (in un campo): codifica binaria 0010 indica $r2 quanti bit servono? Elementi di Informatica e Programmazione Università di Brescia 9

Un esempio ipotetico di codifica addi $r1, $r3, 7 \\ $r1 = $r3+7 0010 Destinazione: Sorgente1: Sorgente2: immediato 0001 0011 0111 Supponiamo indichi istruzione addi $r1 $r3 7 Elementi di Informatica e Programmazione Università di Brescia 10

Un altro esempio di codifica (con operandi ) sub $r0, $r1, $r7 \\ $r0 = $r1-$r7 0001 operandi destinazione sorgente1 sorgente2 0000 0001 0111 Supponiamo indichi istruzione sub $r0 $r1 $r7 Elementi di Informatica e Programmazione Università di Brescia 11

Ogni operando può essere anche: 3) Una parola della memoria centrale (operando in memoria) Memoria ESEMPIO lw $r1, $r2, 4 1000 0001 0010 0100 lw $r1 $r2 4 Elementi di Informatica e Programmazione Università di Brescia 12

Linguaggio macchina vs. Linguaggio assembly Codice macchina di una procedura che calcola e stampa la somma dei quadrati degli interi fra 0 e 100 00100111101111011111111111100000 10101111101111110000000000010100 10101111101001000000000000100000 10101111101001010000000000100100 10101111101000000000000000011000 10101111101000000000000000011100 10001111101011100000000000011100 10001111101110000000000000011000 00000001110011100000000000011001 00100101110010000000000000000001 00101001000000010000000001100101 10101111101010000000000000011100 00000000000000000111100000010010 00000011000011111100100000100001 00010100001000001111111111110111 10101111101110010000000000011000 00111100000001000001000000000000 10001111101001010000000000011000 00001100000100000000000011101100 00100100100001000000010000110000 10001111101111110000000000010100 00100111101111010000000000100000 00000011111000000000000000001000 00000000000000000001000000100001 Traduzione: programma chiamato assemblatore Codice assembly di una procedura che calcola e stampa la somma dei quadrati degli interi fra 0 e 100 addiu $sp, $sp, -32 sw $ra, 20($sp) sw $a0, 32($sp) sw $zero, 24($sp) sw $zero, 28($sp) Ciclo: lw $t6, 28($sp) lw $t8, 24($sp) mul $t7, $t6, $t6 addiu $t0, $t6, 1 slti $at, $t0, 101 sw $t0, 28($sp) mflo $t7 addu $t9, $t8, $ta3 bne $at, $zero, Ciclo sw $t9, t8($sp) lui $a0,4096 lw $a1, 24($sp) jal Proc addiu $a0, $a0, 1072 lw $ra, 20($sp) addiu $sp, $sp, 32 jr $ra move $2, $0 Elementi di Informatica e Programmazione Università di Brescia 13

Il linguaggio assembly Usare direttamente il formato binario per scrivere (e leggere) programmi sarebbe impraticabile si usa il linguaggio assembly (o assembler) Il linguaggio assembly è la rappresentazione simbolica della codifica binaria usata dal calcolatore (linguaggio macchina) L assembly è più leggibile: utilizza codici operativi simbolici (anziché bit) che richiamano direttamente il significato di una istruzione (p.es. ADD al posto di 0001) permette l utilizzo di etichette per identificare gli indirizzi di parole di memoria che contengono istruzioni (e anche dati) Assemblatore: traduce linguaggio assembler in linguaggio macchina Elementi di Informatica e Programmazione Università di Brescia 14

1. Pull along perforation to separate card 2. Fold bottom side (columns 3 and 4) together Jump Register jr R PC=R[rs] 0 / 08 hex R[rt]={24 b0,m[r[rs] Load Byte Unsigned lbu I 24 +SignExtImm](7:0)} (2) hex Load Halfword R[rt]={16 b0,m[r[rs] lhu I 25 Unsigned +SignExtImm](15:0)} (2) hex 1 ARITHMETIC Load Linked CORE ll INSTRUCTION I R[rt] = SET M[R[rs]+SignExtImm] (2,7) 2 OPCODE 30 hex Load Upper Imm. lui I R[rt] = {imm, 16 b0} / FMT f M I P S hex /FT Reference Data FOR- / FUNCT Load Word lw I R[rt] = M[R[rs]+SignExtImm] (2) 23 NAME, MNEMONIC MAT OPERATION (Hex) hex CORE INSTRUCTION SET OPCODE Branch Nor On FP True bc1t nor FIRif(FPcond)PC=PC+4+BranchAddr R[rd] = ~ (R[rs] R[rt]) (4) 011/8/1/-- / 27 UN ESEMPIO hex FOR- / FUNCT Branch Or On FP False bc1f or FIRif(!FPcond)PC=PC+4+BranchAddr(4) R[rd] = R[rs] R[rt] 011/8/0/-- / 25 hex NAME, MNEMONIC MAT OPERATION (in Verilog) (Hex) Divide Or Immediate div ori R I Lo=R[rs]/R[rt]; R[rt] = ZeroExtImm Hi=R[rs]%R[rt] (3) 0/--/--/1a d hex Add add R R[rd] = R[rs] + R[rt] (1) 0 / 20 Divide Unsigned divu R Lo=R[rs]/R[rt]; Hi=R[rs]%R[rt] (6) 0/--/--/1b hex Set Less Than slt R R[rd] = (R[rs] < R[rt])? 1 : 0 0 / 2a FP Add Single add.s FR F[fd ]= F[fs] + F[ft] 11/10/--/0 hex Add Immediate addi I R[rt] = R[rs] + SignExtImm (1,2) 8 hex FP Set Add Less Than Imm. slti I {F[fd],F[fd+1]} R[rt] = (R[rs] < = SignExtImm)? {F[fs],F[fs+1]} 1 : + 0 (2) a hex Add Imm. Unsigned addiu I R[rt] = R[rs] + SignExtImm (2) 9 hex Double Set Less Than Imm. add.d FR R[rt] = (R[rs] < SignExtImm) 11/11/--/0 sltiu I {F[ft],F[ft+1]} b Add Unsigned addu R R[rd] = R[rs] + R[rt] 0 / 21 hex FP Compare Unsigned Single c.x.s* FR FPcond = (F[fs]? 1 op : 0 F[ft])? 1 : 0 (2,6) hex 11/10/--/y FP Set Compare Less Than Unsig. sltu R And and R R[rd] = R[rs] & R[rt] 0 / 24 FPcond R[rd] = (R[rs] ({F[fs],F[fs+1]} < R[rt])? 1 op : 0 (6) 0 / 2b hex hex c.x.d* FR 11/11/--/y Double Shift Left Logical sll R R[rd] = R[rt] {F[ft],F[ft+1]}) << shamt? 1 : 0 0 / 00 hex And Immediate andi I R[rt] = R[rs] & ZeroExtImm (3) c hex * (x is eq, lt, or le) (op is ==, <, or <=) ( y is 32, 3c, or 3e) Shift Right Logical srl R R[rd] = R[rt] >> shamt 0 / 02 if(r[rs]==r[rt]) FP Divide Single div.s FR F[fd] = F[fs] / F[ft] 11/10/--/3 hex Branch On Equal beq I 4 PC=PC+4+BranchAddr (4) hex FP Divide {F[fd],F[fd+1]} M[R[rs]+SignExtImm](7:0) = {F[fs],F[fs+1]} = Store Byte sb / div.d FR I 28 R[rt](7:0) (2) 11/11/--/3 hex if(r[rs]!=r[rt]) Double {F[ft],F[ft+1]} Branch On Not Equal bne I 5 PC=PC+4+BranchAddr (4) hex FP Multiply Single mul.s FR F[fd] M[R[rs]+SignExtImm] = F[fs] * F[ft] = R[rt]; Store Conditional sc I 11/10/--/2 38 R[rt] = (atomic)? 1 : 0 (2,7) hex Jump j J PC=JumpAddr (5) 2 FP Multiply {F[fd],F[fd+1]} = {F[fs],F[fs+1]} * hex mul.d FR 11/11/--/2 Double M[R[rs]+SignExtImm](15:0) {F[ft],F[ft+1]} = Store Halfword sh I 29 Jump And Link jal J R[31]=PC+8;PC=JumpAddr (5) 3 hex R[rt](15:0) (2) hex FP Subtract Single sub.s FR F[fd]=F[fs] - F[ft] 11/10/--/1 Jump Register jr R PC=R[rs] 0 / 08 hex FP Store Subtract Word sw I {F[fd],F[fd+1]} M[R[rs]+SignExtImm] = {F[fs],F[fs+1]} = R[rt] - (2) 2b hex sub.d FR 11/11/--/1 R[rt]={24 b0,m[r[rs] Double Subtract sub R R[rd] = R[rs] - R[rt] {F[ft],F[ft+1]} (1) 0 / 22 hex Load Byte Unsigned lbu I 24 +SignExtImm](7:0)} (2) hex Load Subtract FP Single Unsigned lwc1 subu I RF[rt]=M[R[rs]+SignExtImm] R[rd] = - R[rt] (2) 31/--/--/-- 0 / 23 hex Load Halfword R[rt]={16 b0,m[r[rs] Load FP F[rt]=M[R[rs]+SignExtImm]; (2) lhu I 25 ldc1 (1) May I cause overflow exception 35/--/--/-- Unsigned +SignExtImm](15:0)} (2) hex Double (2) SignExtImm F[rt+1]=M[R[rs]+SignExtImm+4] = { 16{immediate[15]}, immediate } Move From Hi mfhi (3) ZeroExtImm R R[rd] = { Hi 16{1b 0}, immediate } 0 /--/--/10 Load Linked ll I R[rt] = M[R[rs]+SignExtImm] (2,7) 30 hex Move From Lo mflo (4) BranchAddr R R[rd] = { Lo 14{immediate[15]}, immediate, 2 b0 0 /--/--/12 } Load Upper Imm. lui I R[rt] = {imm, 16 b0} f hex Move From Control mfc0 (5) JumpAddr R R[rd] = = { CR[rs] PC+4[31:28], address, 2 b0 } 10 /0/--/0 Load Word lw I R[rt] = M[R[rs]+SignExtImm] (2) 23 hex Multiply mult (6) Operands R {Hi,Lo} considered = R[rs] unsigned * R[rt] numbers (vs. 2 s comp.) 0/--/--/18 (7) Atomic test&set pair; R[rt] = 1 if pair atomic, 0 if not atomic Nor nor R R[rd] = ~ (R[rs] R[rt]) 0 / 27 Multiply Unsigned multu R {Hi,Lo} = R[rs] * R[rt] (6) 0/--/--/19 hex Shift BASIC Right INSTRUCTION Arith. sra FORMATS R R[rd] = R[rt] >>> shamt 0/--/--/3 Or or R R[rd] = R[rs] R[rt] 0 / 25 hex Store FP RSingle opcodeswc1 rsi M[R[rs]+SignExtImm] rt rd = F[rt] shamt (2) 39/--/--/-- funct Or Immediate ori I R[rt] = R[rs] ZeroExtImm (3) d hex Store FP 31 26 25 21 M[R[rs]+SignExtImm] 20 16 15 11 = 10 F[rt]; 6(2) 5 0 sdc1 I 3d/--/--/-- Set Less Than slt R R[rd] = (R[rs] < R[rt])? 1 : 0 0 / 2a hex Double I opcode rs M[R[rs]+SignExtImm+4] rt = immediate F[rt+1] Set Less Than Imm. slti I R[rt] = (R[rs] < SignExtImm)? 1 : 0 (2) a hex Set Less Than Imm. R[rt] = (R[rs] < SignExtImm) sltiu I b Unsigned? 1 : 0 (2,6) hex Set Less Than Unsig. sltu R R[rd] = (R[rs] < R[rt])? 1 : 0 (6) 0 / 2b hex Shift Left Logical sll R R[rd] = R[rt] << shamt 0 / 00 hex MIPS Reference Data Card ( Green Card ) 1. Pull along perforation to separate card 2. F Shift Right Logical srl R R[rd] = R[rt] >> shamt 0 / 02 hex Store Byte sb I M[R[rs]+SignExtImm](7:0) = R[rt](7:0) (2) 28 hex 31 26 25 21 20 16 15 0 Elementi di Informatica e Programmazione Università di Brescia 15 PSEUDOINSTRUCTION SET NAME MNEMONIC OPERATION Branch Less Than blt if(r[rs]<r[rt]) PC = Label FP Subtract Double Load FP Single Load FP Double Move From Hi Move From Lo Move From Con Multiply Multiply Unsign Shift Right Arith Store FP Single Store FP Double FLOATING-PO FR FI 31 31 opc opc PSEUDOINST N Branch Les Branch Gre Branch Les Branch Gre Load Imme Move REGISTER NA NAME $zero $at $v0-$v1 $a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $k0-$k1 $gp $sp 31 26 25 21 20 16 15 0 FLOATING-POINT INSTRUCTION FORMATS $fp J opcode address $ra FR 31 opcode 26 25 fmt ft fs fd funct 0 Copyright 31 2009 by 26 Elsevier, 25 Inc., 21 All 20 rights reserved. 16 15 From 11Patterson 10 and 6 5Hennessy, Computer 0 Organizat FI opcode fmt ft immediate