.: CALCOLATORI 7 MAGGIO 2015

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download ".: CALCOLATORI 7 MAGGIO 2015"

Transcript

1 .: CALCOLATORI 7 MAGGIO 2015

2 .: AGENDA.: MIPS, X86, ARM.: CARATTERISTICHE DI ARM ( CONFRONTO A MIPS ).: ESEMPIO COPIA_STRINGA SU ARCHITETTURA ARM.: ESEMPIO FATTORIALE SU MIPS, ARM

3 ADVANCED RISC MACHINE.: Architettura più diffusa nel settore sistemi embedded..:: nel 2011 equipaggiava circa di dispositivi.: Lanciata sul mercato nel 1985 (stesso anno del MIPS), progettata seguendo la stessa filosofia, ma adotta meno registri e piu modalita di indirizzamento.: caratteristiche di basso consumo.: design concesso su licenza (ARM Ltd. e fabless).: big.little (always on + demanding)

4 ARM / MIPS SOMIGLIANZE ARM MIPS Introduzione Dimensione istruzioni 32 bit 32 bit Spazio di indirizzamento Modalita di indirizzamento 32 bit 32 bit 9 modalita 3 modalita Registri interni Tipo RISC RISC Input/output Memory mapped Memory mapped

5 ARM: COMPARAZIONI MIPS: utilizza il contenuto di due registri per valutare un confronto associato ai salti condizionati ARM: prevede quattro possibili risultati di un confronto che vengono impostati nella variabile di stato: negativo, zero, riporto, overflow Questi risultati possono essere impostati in seguito all esecuzione di una qualsiasi istruzione aritmetica/logica, ma l impostazione della parola e facoltativa (ad esempio la ADDS lo imposta, mentre ADD non aggiorna il campo)

6 ARM: COMPARAZIONI CMP: sottrae un operando all altro, e setta la parola di stato valutando il risultato della sottrazione CMN (compare negative): Somma i due operandi TST (test): Esegue un AND tra i due operandi TEQ (test equal): Esegue un XOR L esito di un Compare o di Test Logici viene usato per aggiornare il Current Program Status Register (CPSR)

7 ARM: SALTI CONDIZIONATI Ciascuna istruzione puo essere eseguita in modo condizionato: vale a dire che viene o non viene eseguita a seconda del risultato di una confronto. Questo e possibile perche ogni istruzione inizia con un campo (grande 4 bit) che indica se l istruzione deve essere eseguita o in alternativa se essa deve essere trattata come una NOP Pertanto, le istruzioni di salto condizionali possono essere considerate formalmente delle istruzioni di salto INCONDIZIONATO che possono essere eseguite in modo condizionato

8 ARM: BRANCHES/ COMPARE&BRANCH BRANCH B <label> BRANCH WITH LINK PC <= label BL <label> LR <= indirizzo della prossima istruzione PC <= label BRANCH AND EXCHANGE BX Rm PC <= Rm COMPARE, AND BRANCH IF ZERO CBZ Rn, <label> Se Rn == 0 allora PC <= label COMPARE, AND BRANCH IF NOT ZERO CBZN Rn, <label> Se Rn!= 0 allora PC <= label

9 ARM: DIFFERENZE ARM non prevede un registro dedicato per lo 0 (esistono dei codici operativi separati per eseguire quelle operazioni che nel MIPS vengono usate con il registro $zero) ARM supporta operazioni aritmetiche su piu parole, un esempio: In un unica istruzione ARM: ADD Ra, Ra, Rj, LSL #2 Si puo svolgere in un singolo ciclo l equivalente in C dello statement: a += ( j << 2 ); Ne consegue che la pipeline e utilizzata in modo piu efficace

10 ARM: DIFFERENZE Data la presenza del campo da 4 bit usati per rendere condizionali le istruzioni, sugli ARM il campo immediato e stato ridotto a 12 bit Ma viene utilizzato in un modo originale: gli 8 bit meno significativi sono estesi a 32 inserendo degli zeri, poi vengono ruotati a destra un numero di volte pari a quanto specificato nei primi 4 bit e il risultato puo esser moltiplicato per 2, cosi facendo si puo rappresentare tutte le potenze di 2 presenti in una word a 32 bit

11 ARM: DIFFERENZE

12 ARM: DIFFERENZE Il contenuto del secondo registro di una qualsiasi istruzione artimetico/logica puo essere shiftato. Gli shift permessi sono: Shift logico a sinistra, shift logico a destra, shift aritmetico a destra, rotazione a destra ARM consente inoltre di fare block loads and store tramite un unica istruzione si possono salvare o ripristinare il contenuto di un insieme qualsiasi dei 16 registri del microprocessore (vantaggioso in fase di chiamata/termine di una procedura)

13 ARM: MODALITA` DI INDIRIZZAMENTO MIPS -> 3 modalita di indirizzamento supportate: 1. Operandi nei Registri 2. Operandi Immediati 3. Registro + Offset ( base, spiazzamento ) ARM -> Supporta le modalita di MIPS e le estende con: 4. Registro + Registro 5. Registro + Registro Scalato 6. Registro + Offset e Registro di aggiornamento 7. Registro + Registro generico + Registro di aggiornamento 8. incremento/decremento automatico 9. Dati relativi al program counter (PC)

14 ARM: MODALITA` DI INDIRIZZAMENTO MIPS -> 3 modalita di indirizzamento supportate: 1. operandi nei registri 2. operandi immediati 3. registro + offset (base, spiazzamento) ARM -> Supporta le modalita di MIPS e le estende con: 4. Registro + Registro 5. Registro + Registro scalato ESEMPIO: Si puo spostare il contenuto di 6. Registro + Offset un registro e registro di un di aggiornamento numero di posizioni 7. Registro + Registro arbitrarie, generico per poi + sommarlo Registro di a quello aggiornamento di un 8. incremento/decremento altro registro, automatico per formare un indirizzo, ed aggiornare il contenuto di un terzo 9. Dati relativi al registro program con counter il risultato (PC) del calcolo.

15 ARM: MODALITA` DI INDIRIZZAMENTO [Rn, #±imm] Immediate offset Accedo all indirizzo +\- una quantita immediata rispetto all indirizzo puntato Rn. Rn non cambia. [Rn] Register Accedo al valore trovato in Rn. Come a dire [Rn, 0]. [Rn, ±Rm, shift] Scaled register offset L indirizzo cui accedo e il risultato della somma/differenza del valore in Rn e il valore in Rm shiftato tanto quanto specificato. Rn e Rm non cambiano il loro valore.

16 ARM: MODALITA` DI INDIRIZZAMENTO [Rn, ±Rm] Register offset Accedo l indirizzo somma/differenza tra il valore in Rn e il valore in Rm. Rn and Rm non cambiano il loro valore. Come a dire [Rn, ±Rm, LSL #0]. [Rn, #±imm]! Immediate pre-indexed Accedo all indirizzo che ha un offset immediato, MA aggiorno il contenuto di Rn con il valore dell indirizzo cui accedo. [Rn, ±Rm, shift]! Scaled register pre-indexed Accedo all indirizzo scalando uno shift ad Rm, MA in seguito Rn puntera all indirizzo cui accedo.

17 ARM: MODALITA` DI INDIRIZZAMENTO [Rn, ±Rm]! Register pre-indexed Accedo l indirizzo come offset tra Rn +/- Rm, MA in seguito Rn conterra l indirizzo di dove ho effettuato accesso. [Rn], #±imm Immediate post-indexed Accedo al valore trovato in Rn, in seguito Rn verra incrementato/decrementato di un valore immediate. [Rn], ±Rm, shift Scaled register post-indexed Accedo ad Rn, in seguito Rn conterra il valore Rn incrementato/decrementato di Rm e shiftato secondo il valore shift.

18 ARM: MODALITA` DI INDIRIZZAMENTO [Rn], ±Rm Register post-indexed L indirizzo cui accedo e quello trovato alla locazione Rn, in seguito il valore di Rn sara incrementato/decrementato di Rm. E l equivalente a [Rn], ±Rm, LSL #0.

19 ARM: OPERAZIONI REGISTRO-REGISTRO Istruzione ARM MIPS Addizione ADD ADDU, ADDIU Sottrazion SUB SUBU Moltiplicazione MUL MULT, MULTU Divisione - DIV, DIVU And AND AND Or ORR OR Xor EOR XOR Scor. Logico a SX LSL SLLV, SLL Scor. Artim. A DX ASR SRAV, SRA Sugli ARM esiste anche ADDS, SUBS: la S specifica che va aggiornato il campo di controllo (per fare il trap dell overflow)

20 ARM: LETTURA/ SCRITTURA IN MEMORIA LETTURA DI UN VALORE LDSRB LDRB LDRSH LDRH lettura di un Byte con Segno lettura di un Byte senza Segno lettura di una mezza parola con Segno lettura di una mezza parola senza Segno LDR Lettura di una parola SCRITTURA IN MEMORIA STRB STRH per un Byte per una mezza parola (Half word) STR scrittura in memoria di una parola (Word)

21 ARM INTEL MIPS Arm Intel Mips Bits 32/ /64 Max. # operandi Design RISC CISC RISC Type Reg-reg Mem-reg Reg-reg Branch evaluation Condition code Condition code Condition register Endianess Bi-endian Little endian Bi-endian

22 RECENTI APPLICAZIONI MIPS Imagination technologies MIPS Warrior P-Class P5600 Multiprocessor Core

23 RECENTI APPLICAZIONI INTEL

24 RECENTI APPLICAZIONI ARM

25 ! ESEMPIO ASSEMBLY COPIA STRINGA La procedura copia_stringa copia la stringa y nella stringa x, utilizzando il byte NULL come carattere di fine stringa void copia_stringa(char x[], char y[]) { int i = 0; } while ( ( x[i] = y[i] )!= \0 ) { } i += 1;

26 ESEMPIO ASSEMBLY Cosa otteniamo se usiamo il compilatore per ottenere il codice Assembly MIPS à strcpy.s Anziche riferirci ai registri con il numero, rinominiamoli secondo con O32 à strcpy_regs.s Togliamo le direttive generate e le NOP instructions à strcpy_simplified.s Ora usiamo il sorgente come presentato da Patterson/ Hennessy (cioe semplificato, senza istruzioni fuori ordine, usando nomi e non numeri per riferirci ai registri)!

27 ABI O32

28 ESEMPIO ASSEMBLY Cosa otteniamo se usiamo il compilatore per ottenere il codice Assembly MIPS à strcpy.s Anziche riferirci ai registri con il numero, rinominiamoli secondo con O32 à strcpy_regs.s Togliamo le direttive generate e le NOP instructions à strcpy_simplified.s Ora usiamo il sorgente come presentato da Patterson/ Hennessy (cioe semplificato, senza istruzioni fuori ordine, usando nomi e non numeri per riferirci ai registri)!

29 ABI O32 Il compilatore puo usare un registro temporaneo piuttosto che salvare $s0. $t0 $t7 sono registri che le procedure usano a loro piacimento fino ad esaurimento prima di usare quelli di cui deve salvare il contenuto

30 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. I registri che contengono il riferimento a y[0] e x[0] son rispettivamente $a0 e $a1 2. L istruzione ADDi aggiorna lo stack per inserire UN elemento (di quattro byte) e muove quindi lo stack pointer 3. Salva il registro da preservare $s0 nello stack, questo registro conterra` s0

31 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Per inizializzare i a 0 l istruzione imposta il registro $s0 a 0 tramite un ADD

32 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. L1 e la label che identifica l inizio del while loop 2. Come prima cosa carichiamo l indirizzo di y[0] nel registro $t1 aggiungendo 3. Non serve moltiplicare i per 4 perche y e un vettore di byte a differenza dello stack pointer

33 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Ora carico in $t2 il valore corrispondente all indirizzo di y[i] tramite una LOADBYTE 2. Carico in $t3 l indirizzo di x[i]

34 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Poniamo ora in $t2 il carattere che si trova nell indirizzo di memoria puntato da $t2, ossia effettuiamo la copia del byte contenuto in y[i] nell array x in posizione i

35 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Con questa operazione di confronto possiamo capire se il carattere letto sia il carattere di fine stringa (zero) 2. Se cosi fosse faro un JUMP all etichetta L2 3. In caso contrario continuo a seguire la sequenza di istruzioni

36 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Addi serve ad incrementare il nostro iteratore i contenuto in $s0 2. Jump incondizionato ci riporta alla prima istruzione contenuta nel while-loop

37 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Se l esecuzione e arrivata qui significa che la procedura e terminata (la copia e stata portata a termine) 2. Bisogna innanzitutto ripristinare il valore di $s0 nello stack pointer

38 MIPS:COPIA STRINGA.text.globl copia_stringa: L1: L2: copia_stringa addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Se l esecuzione e arrivata qui significa che la procedura e terminata (la copia e stata portata a termine) 2. Bisogna innanzitutto ripristinare il valore di $s0 nello stack pointer, reciprocamente a quanto fatto all inizio della procedura

39 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. Lo stack-pointer va poi aggiornato rimuovendo un elemento in modo da ripristinare quanto conteneva prima di eseguire la procedura di copia, ossia aggiungendovi quattro

40 MIPS:COPIA STRINGA.text.globl copia_stringa copia_stringa: addi $sp, $sp, -4 sw $s0, 0($sp) add $s0, $zero, $zero L1: add $t1, $s0, $a1 lb $t2, 0($t1) add $t3, $s0, $a0 sb $t2, 0($t3) beq $t2, $zero, L2 addi $s0, $s0, 1 j L1 L2: lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra 1. A questo punto si puo restituire l esecuzione al chiamante

41 ARM:COPIA STRINGA args = 0, pretend = 0, frame = frame_needed = 0, uses_anonymous_args = link register save eliminated..l3: ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #0] cbz r3,.l1 ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #1]! cmp r3, #0 bne.l3 1. LDR{B}: Load Byte Carica in R3 il valore contenuto in R1, usa la modalita immediate offset: R3 <= R1[spiazzamento 0] 2. STR{B}: SToRe Byte Salva il valore utilizzando la modalita usata sopra R0[spiazzamento 0] <= R3 3. CBZ:Compare and Branch if Zero, se R3 contiene 0 la prossima istruzione e.l1, altrimenti procede sequenzialmente.l1: bx lr

42 ARM:COPIA STRINGA args = 0, pretend = 0, frame = frame_needed = 0, uses_anonymous_args = link register save eliminated..l3:.l1: ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #0] cbz r3,.l1 ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #1]! cmp r3, #0 bne.l3 bx lr 1. Carica in R3 il valore contenuto in R1[1] (x) e lo carica in R0[1] (y) 2. Il punto escalamativo indica che il contenuto del registro di indirizzo (R1 o R0) sara alterato dallo spiazzamento imposto. Questa modalita e detta immediate offset con pre-indexing 3. Poi confronta con lo 0 per capire se si tratta del carattere di fine stringa, il risultato viene impostato nella parola di stato settando opportunamente le flags del registro CPSR (current program status register)

43 ARM:COPIA STRINGA args = 0, pretend = 0, frame = frame_needed = 0, uses_anonymous_args = link register save eliminated..l3:.l1: ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #0] cbz r3,.l1 ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #1]! cmp r3, #0 bne.l3 bx lr 1. BNE: Branch if Not Equal riporta all inizio del while-loop nel caso la flag sia stata settata Al contrario si prosegue sequenzialmente 2. Per prendere una decisione sul salto ci si basa sul contenuto del CPSR che era stato configurato dall ultimo compare 3. Restituisce l esecuzione (BX:Branch and exchange) al chiamante e chiude passando il Link Register che e un registro special-purpose dedicato a salvare l indirizzo da ritornare quando una chiamata a funzione termina

44 ARM:COPIA STRINGA args = 0, pretend = 0, frame = frame_needed = 0, uses_anonymous_args = link register save eliminated..l3: ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #0] cbz r3,.l1 ldrb r3, [r1, zero_extendqisi2 strb r3, [r0, #1]! cmp r3, #0 1. R3 e gestito come una locazione temporanea, R1 indirizza la stringa da copiare (sorgente) mentre R0 indirizza la destinazione della copia 2. Pre-indexing permette di rinunciare all uso dell iteratore ( i nel sorgente C) che scandisce la locazione di memoria in esame, in quanto le istruzioni di load/store permettono di includere lo spiazzamento/aggiornamento della locazione puntata in modo immediato ad ogni loop bne.l3.l1: bx lr

45 X86:COPIA STRINGA copia_stringa:.lfb0: pushl movl movl movzbl movb testb %ebx 8(%esp), %ecx 12(%esp), %ebx (%ebx), %eax %al, (%ecx) %al, %al je.l1 movl $0, %eax.l3: addl movzbl movb testb $1, %eax (%ebx,%eax), %edx %dl, (%ecx,%eax) %dl, %dl jne.l3.l1: popl %ebx ret

46 ESEMPIO ASSEMBLY FATTORIALE La procedura fattoriale calcola (ricorsivamente) il fattoriale di un intero! int fattoriale(int n) { } if ( n < 1 ) return ( 1 ); else return ( n * fattoriale( n - 1 ) );

47 FATTORIALE:MIPS fattoriale: addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) slti $t0, $a0,1 beq $t0, $zero, L1 addi $v0, $zero, 1 addi $sp, $sp, 8 jr $ra L1: addi $a0, $a0, -1 jal fattoriale 1. Le prime istruzioni servono per fare spazio nello stack pointer per 2 elementi, salvare l indirizzo di ritorno (ra) e il registro di argomento $a0 (che contiene il parametro n 2. La prima volta che viene chiamata la procedura l istruzione SW salva in stack l indirizzo del programma chiamante. lw $a0, 0($sp) lw $ra, 4($sp) addi $sp, $sp, 8 mul $v0, $a0, $v0 jr $ra

48 FATTORIALE:MIPS fattoriale: addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) slti $t0, $a0,1 beq $t0, $zero, L1 addi $v0, $zero, 1 addi $sp, $sp, 8 jr $ra L1: addi $a0, $a0, -1 jal fattoriale lw $a0, 0($sp) lw $ra, 4($sp) addi $sp, $sp, 8 mul $v0, $a0, $v0 jr $ra Queste 2 istruzioni verificano se n e minore di 1, se così non fosse la sequenza di istruzioni proseguirà con L1 Se n e minore di uno invece la sequenza prosegue ordinatamente: la funzione salva il valore 1 mettendolo in un registro (sommando 0 a 1) e memorizza il risultato in $v0. Elimina i dati dallo stack rilasciando i due registri e salta all indirizzo di ritorno Prima di eliminare i due elementi dallo stack avremmo potuto caricare $a0 e $ra. tuttavia dato che $a0 e $ra non cambiano quando n e minore di 1 possiamo evitare di scrivere queste due istruzioni

49 FATTORIALE:MIPS fattoriale: addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) slti $t0, $a0,1 beq $t0, $zero, L1 addi $v0, $zero, 1 addi $sp, $sp, 8 jr $ra L1: addi $a0, $a0, -1 jal fattoriale lw $a0, 0($sp) Se n non e minore di 1 il parametro (n) viene decrementato di 1 e viene nuovamente invocata la procedura fattoriale passandole il nuovo valore (ricorsivita`) l istruzione successiva e quella a cui la procedura fattoriale ritornera` al termine della sua esecuzione. Occorre quindi ripristinare il vecchio indirizzo di ritorno e il vecchio valore del parametro, poi e possibile aggiornare lo stack pointer. lw $ra, 4($sp) addi $sp, $sp, 8 mul $v0, $a0, $v0 jr $ra

50 FATTORIALE:MIPS fattoriale: addi $sp,$sp,-8 sw $ra,4($sp) sw $a0,0($sp) slti $t0, $a0,1 beq $t0, $zero, L1 addi $v0, $zero, 1 addi $sp, $sp, 8 jr $ra successivamente, nel registro $v0 viene memorizzato il prodotto del valore corrente in $v0 con il valore $a0 ossia il fattoriale! tramite moltiplicazione Infine la procedura salva nuovamente all indirizzo di ritorno per tornare al chiamante L1: addi $a0, $a0, -1 jal lw fattoriale $a0, 0($sp) lw $ra, 4($sp) addi $sp, $sp, 8 mul $v0, $a0, $v0 jr $ra

51 FATTORIALE:ARM fattoriale: push {r4, lr} subs r4, r0, #0 ble.l3 subs r0, r4, #1 bl fattoriale mul r0, r4, r0 pop {r4, pc}.l3: movs r0, #1 pop {r4, pc} 1. Push <lista di registri> equivale a scrivere: STMDB SP!, <lista di registri> STM: store multiple DB: data blocks SP ossia copia e salva la lista di registri nello stack pointer usando preindexing (Ricorda:! Significa che il baseregister viene aggiornato dopo che il dato e stato trasferito) 2. LR e il Link Register 3. R0 contiene il riferimento dove scrivere il valore che verra restituito dalla funzione fattoriale (risultato) 4. R4 e il valore del quale vogliamo sapere il fattoriale (parametro)

52 FATTORIALE:ARM fattoriale: push {r4, lr} subs r4, r0, #0 ble.l3 subs r0, r4, #1 bl fattoriale mul r0, r4, r0 pop {r4, pc}.l3: movs r0, #1 pop {r4, pc} 1. SUB sottrazione S: aggiorna la condition-flag S r4 <= r0 - operando(=0) 2. BL: branch with link E: equal salta a.l3 se I precedenti sono uguali, conosce l esito del compare perche la SUBS ha settato il condition field corrispondente ( Z ) 3. SE effettua il salto (r4 < 1) 4. MOV: muovi S: aggiorna la condition-flag S R0 <= 1 5. POP <lista di registri> equivale a dire LDM SP! <lista di registri> ossia Load Multiple Data blocks carica quindi una lista di registri nello stackpointer ( nota il! )

53 FATTORIALE:ARM fattoriale: push {r4, lr} subs r4, r0, #0 ble.l3 subs r0, r4, #1 bl fattoriale mul r0, r4, r0 pop {r4, pc}.l3: movs r0, #1 pop {r4, pc} 1. SUBS R0 <= r4 1 e setta cond.flag 2. BL branch with link al.fattoriale, quindi mi rappresenta la ricorsivita mentre r0 il parametro del quale vogliamo calcolare il fattoriale (aggiorna PC & LR) 3. MUL moltiplicazione reg-reg R0 <= R0 * R4 4. POP come da precedente slide, restituisce R4 e il PC con aggiornamento PC, LR NOTA: Branch and Link modifica sia il PC che il LR

54 FATTORIALE:X86 fattoriale:.lfb0: pushl %ebx subl $24, %esp movl 32(%esp), %ebx movl $1, %eax testl %ebx, %ebx jle.l2 leal -1(%ebx), %eax.l2: movl call imull addl popl ret %eax, (%esp) fattoriale %ebx, %eax $24, %esp %ebx

55

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

Dettagli

Cenni ad Assembly Intel

Cenni ad Assembly Intel Cenni ad Assembly Intel Luca Abeni April 17, 2015 Architerrura Intel Utilizzata sulla maggior parte dei laptop, desktop e server moderni Lunga storia Dagli anni 70 (Intel 8080-8 bit!)......fino ad oggi

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici ISA di riferimento: MIPS Massimiliano Giacomin 1 DOVE CI TROVIAMO Livello funzionale Livello logico Livello circuitale Livello del layout istruzioni macchina, ISA Reti logiche:

Dettagli

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

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

Architettura di tipo registro-registro (load/store)

Architettura di tipo registro-registro (load/store) Caratteristiche principali dell architettura del processore MIPS E un architettura RISC (Reduced Instruction Set Computer) Esegue soltanto istruzioni con un ciclo base ridotto, cioè costituito da poche

Dettagli

Linguaggio Assembler MIPS

Linguaggio Assembler MIPS Linguaggio Assembler MIPS Corso di Calcolatori Elettronici Corso di Calcolatori Elettronici A A.A. 2000/2001 Dr. Daniela Fogli Notazione Operazioni aritmetiche: Somma add a, b, c fa la somma di b e c e

Dettagli

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler

Introduzione. Indice. Linguaggio macchina. Linguaggio assembler Indice Linguaggio ad alto livello, linguagio assembler e linguaggio macchina Il linguaggio assembler MIPS: istruzioni aritmetiche, di trasferimento dati e di salto Conversione linguaggio assembler in linguaggio

Dettagli

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

Elementi di Informatica e Programmazione. # Memoria di massa. Problema: comprare un PC. Architettura del calcolatore. Architettura di Von Neumann Elementi di Informatica e Programmazione Architettura del calcolatore (prima parte) Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Problema:

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad Principi di architetture dei calcolatori: l architettura ARM. Mariagiovanna Sami Che cosa è ARM In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline

Dettagli

Lezione E12. Sistemi operativi open-source, embedded e real-time

Lezione E12. Sistemi operativi open-source, embedded e real-time Lezione E12 Sistemi operativi open-source, embedded e real-time 17 dicembre 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SOSERT 13 E12.1 Di

Dettagli

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32

Dettagli

Le costanti Le modalità di indirizzamento L assembly del MIPS

Le costanti Le modalità di indirizzamento L assembly del MIPS Le costanti Le modalità di indirizzamento L assembly del MIPS Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@dsi.unimi.it Università degli Studi di Milano 1/45 Sommario Le costanti

Dettagli

Linguaggio Assembler MIPS

Linguaggio Assembler MIPS Linguaggio Assembler MIPS Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Architettura MIPS Architettura RISC sviluppata

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS ESERCIZI Massimiliano Giacomin ESERCIZIO Utilizzando la green card, tradurre in linguaggio macchina le due istruzioni in assembly

Dettagli

Esempio di moltiplicazione come somma e spostamento

Esempio di moltiplicazione come somma e spostamento Esempio di moltiplicazione come somma e spostamento Implementare una moltiplicazione coinvolge algoritmi di shift e somma Istruzioni di Shift:movimento di bit: ROL Rd ROR Rd LSL Rd LSR ASR Rd Rd 22 x 35

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS Massimiliano Giacomin 1 Architettura MIPS Architettura RISC e load-store sviluppata da John Hennessy nel 1981 Usata da NEC, Nintendo,

Dettagli

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

Dettagli

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore Il processore Architettura dell elaboratore Il processore La esegue istruzioni in linguaggio macchina In modo sequenziale e ciclico (ciclo macchina o ciclo ) Effettuando operazioni di lettura delle istruzioni

Dettagli

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del 03-11-09 COGNOME NOME

COMPITINO #1 di CALCOLATORI ELETTRONICI 1 del 03-11-09 COGNOME NOME MATRICOLA COGNOME NOME 1) [28/40] Trovare il codice assembly MIPS corrispondente dei seguenti micro-benchmark (utilizzando solo e unicamente istruzioni dalla tabella sottostante), rispettando le convenzioni

Dettagli

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000 AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono

Dettagli

Istruzioni di modifica della sequenza di elaborazione

Istruzioni di modifica della sequenza di elaborazione Istruzioni di modifica della sequenza di elaborazione Permettono di modificare la sequenza di esecuzione delle istruzioni di un programma, normalmente controllata dal meccanismo automatico di avanzamento

Dettagli

Lezione E3. Architettura ARM - I. Sistemi embedded e real-time

Lezione E3. Architettura ARM - I. Sistemi embedded e real-time Lezione E3 Sistemi embedded e real-time 11 ottobre 2012 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 E3.1 Di cosa parliamo in questa lezione?

Dettagli

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello): Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande

Dettagli

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086.

Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. I processori Intel Tutta la famiglia dei processori Intel (x86) si basa ed e' compatibile con il primo processore di questo tipo: l'8086. L'8086 e' un processore a 16 bit quindi i suoi registri potranno

Dettagli

Programmazione dello Z80

Programmazione dello Z80 Il microprocessore si incarica di: gestire il programma e i suoi dati di eseguire i calcoli richiesti. Le azioni appena elencate rendono necessario che il microprocessore abbia da qualche parte, al suo

Dettagli

Assembly. Motivazioni. Programmazione Assembly

Assembly. Motivazioni. Programmazione Assembly Assembly Programmazione in linguaggio macchina (o meglio in assembly): programmare utilizzando istruzioni direttamente eseguibili dal processore. Questa parte del corsi si accompagna a lezioni in laboratorio:

Dettagli

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

Dettagli

Architettura del Set di Istruzioni (ISA)

Architettura del Set di Istruzioni (ISA) Architettura del Set di Istruzioni (ISA) Maurizio Palesi Maurizio Palesi 1 Instruction Set Architecture (ISA) Software instruction set Hardware Maurizio Palesi 2 1 Instruction Set Architecture (ISA) Applicazioni

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

Hazard sul controllo. Sommario

Hazard sul controllo. Sommario Hazard sul controllo Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Università degli Studi di Milano Riferimento al Patterson: 4.7, 4.8 1/28 Sommario Riorganizzazione

Dettagli

AMBIENTE DI SIMULAZIONE ASIM

AMBIENTE DI SIMULAZIONE ASIM LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 10 Prof. Rosario Cerbone rosario.cerbone@uniparthenope.it http://digilander.libero.it/rosario.cerbone a.a. 2008-2009 AMBIENTE DI SIMULAZIONE ASIM Digitazione

Dettagli

Esercitazione sulle CPU pipeline

Esercitazione sulle CPU pipeline Esercitazione sulle CPU pipeline Una CPU a ciclo singolo come pure una CPU multi ciclo eseguono una sola istruzione alla volta. Durante l esecuzione parte dell hardware della CPU rimane inutilizzato perché

Dettagli

Lezione 16: L architettura LC-3

Lezione 16: L architettura LC-3 Lezione 16: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 15 Maggio 2013 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Dettagli

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET

STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack STACK, istruzioni PUSH e POP; PROCEDURE, istruzioni CALL e RET Lo stack (tradotto talvolta in italiano con pila o catasta) è un'area di memoria privilegiata, dove il microprocessore può salvare

Dettagli

L architettura del calcolatore (Prima parte)

L architettura del calcolatore (Prima parte) L architettura del calcolatore (Prima parte) Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Calcolatore astratto e reale Concetto astratto

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

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

Dettagli

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

Architettura MIPS (RISC) Architetture dei Calcolatori (Lettere. Principi di Progettazione ISA MIPS MIPS R3000 ISA. Il Set di Istruzioni MIPS Architettura MIPS (RISC) Architetture dei Calcolatori (Lettere A-I) Il Set di Istruzioni MIPS Ing.. Francesco Lo Presti Sviluppata e progettata a Stanford (USA) Progettata nei primi anni 80 Prodotta e

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli

Il livello architettura e set di istruzioni

Il livello architettura e set di istruzioni Corso di Informatica 2 Prof. Sciuto Il livello architettura e set di istruzioni Daniele Paolo Scarpazza Dipartimento di Elettronica e Informazione Politecnico di Milano 7 Giugno 2004 Daniele Paolo Scarpazza

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

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

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica SPIM Architetture dei Calcolatori (Lettere A-I) SPIM Ing.. Francesco Lo Presti Simulatore che esegue programmi assembler per architetture RISC MIPS R2000/R3000 Legge programmi in assembler MIPS e li traduce

Dettagli

Architetture dei Calcolatori

Architetture dei Calcolatori Architetture dei Calcolatori Lezione 11 -- 10/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Fattoriale: risparmiamo sull uso dei registri q Rispetto alla soluzione precedente

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Corso di Laurea Triennale in Informatica Università degli Studi di Bari Anno Accademico 2009-2010 Laboratorio lez1: il processore 8086/88 Prof. S.Pizzutilo I processori Intel

Dettagli

Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina

Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina Anno Accademico 2013/2014 Calcolatori Elettronici Parte VII: il Livello delle Istruzioni Macchina Prof. Riccardo Torlone Universita Roma Tre Instruction Set Architecture Il livello ISA è l interfaccia

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Lezione n.19 Processori RISC e CISC

Lezione n.19 Processori RISC e CISC Lezione n.19 Processori RISC e CISC 1 Processori RISC e Superscalari Motivazioni che hanno portato alla realizzazione di queste architetture Sommario: Confronto tra le architetture CISC e RISC Prestazioni

Dettagli

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI 1 RICHIAMI SUL MIPS UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI L ARCHITETTURA DI RIFERIMENTO: LA MACCHINA MIPS INSTRUCTION SET MIPS R2000 ISTRUCTION SET SEMPLIFICATO: emips ESEMPI DI PROGRAMMAZIONE

Dettagli

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Architettura dei calcolatori e sistemi operativi Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H Sommario Il processo di assemblaggio Il collegatore (linker) 2 Assemblatore: traduzione

Dettagli

JPD132. Microprocessore e assembly

JPD132. Microprocessore e assembly JPD132 Microprocessore e assembly Il processore JPD132 Il JPD132 è un ipotetico processore che estende le possibilità del PD32 principalmente con un linguaggio assembly comprendente nuovi metodi di indirizzamento,

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata Lezione n.6 Unità di controllo microprogrammata 1 Sommario Unità di controllo microprogrammata Ottimizzazione, per ottimizzare lo spazio di memoria occupato Il moltiplicatore binario Esempio di architettura

Dettagli

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

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Tecniche di traduzione da C ad assembly 68000. Note generali

Tecniche di traduzione da C ad assembly 68000. Note generali Tecniche di traduzione da C ad assembly 68000 Note generali Schema di compilazione da C ad assembly 68K Ispirato a GCC Fa uso di: banco di registri classi d istruzioni modi d indirizzamento e organizzazione

Dettagli

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

Dettagli

Linguaggio macchina. 73.1 Organizzazione della memoria. 73.1.1 Pila per salvare i dati. 73.1 Organizzazione della memoria... 37

Linguaggio macchina. 73.1 Organizzazione della memoria. 73.1.1 Pila per salvare i dati. 73.1 Organizzazione della memoria... 37 37 Linguaggio macchina Capitolo 73 73.1 Organizzazione della memoria.............................................. 37 73.1.1 Pila per salvare i dati............................................... 37 73.1.2

Dettagli

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086

I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi. Elementi di Assembly 8086 I.T.I. A. RIGHI e VIII Napoli Specializzazione Informatica Tradizionale Corso D Materia: Sistemi Elementi di Assembly 8086 1 Assembly 8086 I registri Per poter elaborare le informazioni ricevute dall esterno,

Dettagli

Lezione 7 Sommatori e Moltiplicatori

Lezione 7 Sommatori e Moltiplicatori Architettura degli Elaboratori e delle Reti Lezione 7 Sommatori e Moltiplicatori Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 1/36 Sommario!

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

MODELLO DLX IN UNISIM

MODELLO DLX IN UNISIM Architettura e descrizione del modello MODELLO DLX IN UNISIM RINGRAZIAMENTI : I materiali per questa presentazione sono tratti dal tutorial ufficiale di UNISIM - https://unisim.org/site/tutorials/start

Dettagli

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

Dettagli

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

Dettagli

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

Dettagli

Il linguaggio macchina

Il linguaggio macchina 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/33 Linguaggio

Dettagli

Cenni ad Assembly ARM

Cenni ad Assembly ARM Cenni ad Assembly ARM Luca Abeni March 3, 2017 Architettura ARM Utilizzata sulla maggior parte di tablet, smartphone ed in molti sistemi embedded Architettura nata negli anni 80 1987: Acorn Archimedes

Dettagli

Strutture dati in C e loro traduzione in assembler MIPS 1 Direttive assembler per l'allocazione dei dati Prima di iniziare a trattare il problema dell'allocazione delle varie strutture dati, introduciamo

Dettagli

Motivazioni. Assembly

Motivazioni. Assembly Assembly Programmazione in linguaggio macchina (o meglio in assembly): programmare utilizzando istruzioni direttamente eseguibili dal processore. Questa parte del corsi si accompagna a lezioni in laboratorio:

Dettagli

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI

UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI 1 RICHIAMI SUL MIPS UN PO DI STORIA, CONCETTI BASE e DEFINIZIONI GENERALI L ARCHITETTURA DI RIFERIMENTO: LA MACCHINA MIPS INSTRUCTION SET MIPS R2000 ISTRUCTION SET SEMPLIFICATO: emips ESEMPI DI PROGRAMMAZIONE

Dettagli

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Aggiornato il 18 giugno 2015. 1 Questa affermazione richiede una precisazione. A parità di altre condizioni, l eliminazione dello stadio ME allunga la

Aggiornato il 18 giugno 2015. 1 Questa affermazione richiede una precisazione. A parità di altre condizioni, l eliminazione dello stadio ME allunga la 8 Questo documento contiene le soluzioni ad un numero selezionato di esercizi del Capitolo 8 del libro Calcolatori Elettronici - Architettura e organizzazione, Mc-Graw Hill 2009. Sarò grato a coloro che

Dettagli

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006 Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006 Esercizio 1 - Heapsort Si consideri la seguente struttura dati, chiamata heap. Essa è un albero binario semi-completo (ossia un

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI

ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI PROGETTO DELLA CPU MEMORIZZAZIONE DEGLI OPERANDI DOVE SONO MEMORIZZATI GLI OPERANDI NELLA CPU? ARCHITETTURA DELLE CPU come ARCHITETTURA DEL SET DI ISTRUZIONI SCELTE PROGETTUALI: 1. DOVE SONO MEMORIZZATI

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Introduzione all'architettura dei Calcolatori

Introduzione all'architettura dei Calcolatori Introduzione all'architettura dei Calcolatori Introduzione Che cos è un calcolatore? Come funziona un calcolatore? è possibile rispondere a queste domande in molti modi, ciascuno relativo a un diverso

Dettagli

ASSEMBLER 68K parte 2

ASSEMBLER 68K parte 2 ASSEMBLER 68K parte 2 CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Classi di istruzioni Un calcolatore deve avere istruzioni in grado

Dettagli

Calcolatori Elettronici. La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo

Calcolatori Elettronici. La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo Calcolatori Elettronici La Pipeline Criticità sui dati Criticità sul controllo Cenni sull unità di controllo La pipeline CRITICITÀ SUI DATI Calcolatori Elettronici - Pipeline (2) - Slide 2 L. Tarantino

Dettagli

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly 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:

Dettagli

Parte II.2 Elaboratore

Parte II.2 Elaboratore Parte II.2 Elaboratore Elisabetta Ronchieri Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Dicembre 1, 2015 Elisabetta Elisabetta Ronchieri II Software Argomenti

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

La macchina programmata Instruction Set Architecture (1)

La macchina programmata Instruction Set Architecture (1) Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione Istruzioni macchina Outline Componenti di un

Dettagli

Prelievo di un istruzione. Istruzioni macchina. Tipi di istruzioni. Registri principali della CPU e loro ruolo

Prelievo di un istruzione. Istruzioni macchina. Tipi di istruzioni. Registri principali della CPU e loro ruolo Registri principali della CPU e loro ruolo CPU e linguaggio macchina domande ed esercizi PC: indirizzo prossima IR: corrente MAR: indirizzo cella di M da leggere/scrivere MBR: contenuto cella di M letta

Dettagli

ARCHITETTURA DEI CALCOLATORI VOLUME I

ARCHITETTURA DEI CALCOLATORI VOLUME I Graziano Frosini ARCHITETTURA DEI CALCOLATORI VOLUME I ASSEMBLER E CORRISPONDENZA FRA C++ E ASSEMBLER CON RIFERIMENTO AL PERSONAL COMPUTER E ALL AMBIENTE DI PROGRAMMAZIONE DJGPP Copyright MMIX ARACNE editrice

Dettagli

PROGRAMMAZIONE MISTA. G. Frosini Programmazione mista Slide 1

PROGRAMMAZIONE MISTA. G. Frosini Programmazione mista Slide 1 PROGRAMMAZIONE MISTA G. Frosini Programmazione mista Slide 1 Caratteristiche del processore PC Processore PC (Processore Completo): processore didattico; schematizzazione (software compatibile) dei processori

Dettagli

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

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica prof. ing. Corrado Santoro Schema a blocchi di una CPU Arithmetic Logic Unit Control Unit Register File BUS Control

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

ASSEMBLY MIPS GUIDA RAPIDA ALLA COMPRENSIONE

ASSEMBLY MIPS GUIDA RAPIDA ALLA COMPRENSIONE ASSEMBLY MIPS GUIDA RAPIDA ALLA COMPRENSIONE Autore: Borsato Claudio Bibliografia: Strutture e progetto dei calcolatori Patterson, Hennessy Programmare in Assembly in GNU/Linux con sintassi AT&T Ferroni

Dettagli

Von Neumann. John Von Neumann (1903-1957)

Von Neumann. John Von Neumann (1903-1957) Linguaggio macchina Von Neumann John Von Neumann (1903-1957) Inventore dell EDVAC (Electronic Discrete Variables AutomaFc Computer), la prima macchina digitale programmabile tramite un soiware basata su

Dettagli

La Macchina RAM Shepherdson e Sturgis (1963)

La Macchina RAM Shepherdson e Sturgis (1963) La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni

Dettagli

DISPENSE DI CALCOLATORI ELETTRONICI 1

DISPENSE DI CALCOLATORI ELETTRONICI 1 UNIVERSITÀ DEGLI STUDI DI SIENA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA MODULO PROFESSIONALIZZANTE "TECNOLOGIE PER IL KNOWLEDGE MANAGEMENT" A.A. 2005/2006 DISPENSE DI CALCOLATORI

Dettagli

Introduzione. Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi:

Introduzione. Le istruzioni del livello della macchina standard (livello 2) si possono dividere, con buona approssimazione, in due gruppi: Appunti di Informatica Appendice 3 Istruzioni e flusso di controllo TIPI DI ISTRUZIONI. 1 Introduzione.. 1 Istruzioni per il movimento dei dati. 2 Istruzioni per operazioni diadiche... 2 Istruzioni per

Dettagli