.: CALCOLATORI 7 MAGGIO 2015
|
|
- Leone Orsini
- 8 anni fa
- Visualizzazioni
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
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
DettagliSommario 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
DettagliARCHITETTURE 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
DettagliL 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
DettagliArchitettura (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
DettagliArchitettura 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
DettagliMIPS 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
DettagliHazard 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
DettagliCenni 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
Dettagli4 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
DettagliCalcolatori 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:
DettagliTesti 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
DettagliIl 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
DettagliEsempio 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
DettagliGli 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
DettagliFetch Decode Execute Program Counter controllare esegue prossima
Stored Program Istruzioni sono stringhe di bit Programmi: sequenze di istruzioni Programmi (come i dati) memorizzati in memoria La CPU legge le istruzioni dalla memoria (come i dati) Ciclo macchina (ciclo
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliCalcolatori 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
DettagliArduino: 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
DettagliL 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
DettagliLa 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.
DettagliIstruzioni di trasferimento dati
Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:
DettagliCapitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.
Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2
DettagliLezione 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
DettagliAlgebra 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
DettagliQuinto 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
DettagliArchitettura 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
DettagliSISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliIstruzioni di controllo del flusso
Istruzioni di controllo del flusso Il flusso di esecuzione è normalmente sequenziale Le istruzioni di controllo cambiano la prossima istruzione da eseguire Istruzioni di salto condizionato branch if equal
DettagliAritmetica 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
Dettagli4. Operazioni aritmetiche con i numeri binari
I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:
DettagliAXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio
AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio
DettagliArchitettura 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
DettagliArchitettura 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
DettagliESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
DettagliCALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU
Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi
DettagliL 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
DettagliAllocazione 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
DettagliArchitettura hardware
Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione
DettagliGestione dei File in C
Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte
DettagliProf. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:
LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto
DettagliEsercitazione 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é
DettagliJPD132. 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,
DettagliArchitettura 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
DettagliCALCOLATORI ELETTRONICI 29 giugno 2011
CALCOLATORI ELETTRONICI 29 giugno 2011 NOME: COGNOME: MATR: Scrivere chiaramente in caratteri maiuscoli a stampa 1. Si implementi per mezzo di una PLA la funzione combinatoria (a 3 ingressi e due uscite)
DettagliElementi 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:
DettagliCALCOLATORI 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
DettagliManualino minimale MIPS
Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Manualino minimale MIPS Marco Tarini Operazioni aritmetiche Nome Comando completo Esempio Sintassi (es) Significato Semantica
DettagliIntroduzione. 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
DettagliEsercizi per il recupero del debito formativo:
ANNO SCOLASTICO 2005/2006 CLASSE 3 ISC Esercizi per il recupero del debito formativo: Disegnare il diagramma e scrivere la matrice delle transizioni di stato degli automi a stati finiti che rappresentano
DettagliIn 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
DettagliPrelievo 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
DettagliTecniche 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
DettagliUn circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati
Il Livello LogicoDigitale i Blocchi funzionali combinatori Circuiti integrati Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati
Dettagli10 - Programmare con gli Array
10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliI sistemi di numerazione
I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono
DettagliLe funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.
Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni
DettagliUna funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.
Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva
DettagliGestione Risorse Umane Web
La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliInformazione analogica e digitale
L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliOlga Scotti. Basi di Informatica. File e cartelle
Basi di Informatica File e cartelle I file Tutte le informazioni contenute nel disco fisso (memoria permanente del computer che non si perde neanche quando togliamo la corrente) del computer sono raccolte
DettagliSistemi di Numerazione
Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema
DettagliAccess. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database
Microsoft Access Introduzione alle basi di dati Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale limitato Meccanismi di sicurezza, protezione di dati e gestione
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliSistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
DettagliElementi di informatica
Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni
DettagliSend/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.
Implementazione delle primitive di comunicazione Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability. Struttura dati canale {
DettagliMANUALE ESSE3 Gestione Registro delle lezioni
MANUALE ESSE3 Gestione Registro delle lezioni DOCENTI 1 INDICE 1. INTRODUZIONE E ACCESSO... 3 2. GESTIONE DEL REGISTRO... 4 2.1. Informazioni generali... 6 2.2. Stato del Registro... 7 2.2.1. Transizioni
DettagliEsercizi. 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
DettagliLezione 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
DettagliMODELLO 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
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
DettagliInformatica. Rappresentazione dei numeri Numerazione binaria
Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliBARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo
Release 4.90 Manuale Operativo BARCODE Gestione Codici a Barre La gestione Barcode permette di importare i codici degli articoli letti da dispositivi d inserimento (penne ottiche e lettori Barcode) integrandosi
DettagliEXCEL FUNZIONI PRINCIPALI
EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliMANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
DettagliAXO 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
DettagliEsempi di Programmi Assembly. Luigi Palopoli, Luca Abeni
Esempi di Programmi Assembly Luigi Palopoli, Luca Abeni Scopo della lezione In questa lezione vedremo alcuni esempi di programmi (o frammenti di programmi) in vari linguaggi assembly per renderciconto
DettagliLinguaggio 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
DettagliLezione 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!
DettagliArchitettura del calcolatore
Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
DettagliParte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno
Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra
DettagliA intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
DettagliCorso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile
Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione
DettagliAlessandro Pellegrini
Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione
DettagliCalcolatori 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
DettagliEntrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1
Entrare nel sistema Clicca su Entra per entrare nel sistema. PAGINA 1 Entrare nel sistema Compare il box di login in cui inserire il nome utente e la password fornite tramite posta elettronica. PAGINA
DettagliINFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
DettagliIl 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
DettagliIl 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
DettagliASSEMBLER 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
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
Dettagli