Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Architettura degli elaboratori
Tutorato
Dott. Damiano Braga
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Before we start..
• 22 Marzo h. 14.00-16.00 aula Info2• 30 Marzo h. 11.30-13.30 aula F6• 12 Aprile h. 14.00-16.00 aula Info1• 20 Aprile h. 11.30-13.30 aula F6• 10 Maggio h. 14.00-16.00 aula Info1• 18 Maggio h. 11.30-13.30 aula F6• 26 Maggio h. 11.30-13.30 aula F6• 7 Giugno h. 14.00-16.00 aula Info1
Orario
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Base 10 (dieci)
Il nostro sistema di numerazione è posizionale !
.. ed è decimale, cioè in base 10
1789 = 1*10^3+ 7*10^2+8*10^1+9*10^03 2 1 0
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
.. e le altre ?
Base10 unica base?
- Base2 , usata dai calcolatori
- BaseHex , comoda per raggruppare etc...
- Base8... e altre ..
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Cambi di base
25 : 2 = 12 con resto 1 12 : 2 = 6 con resto 0 6 : 2 = 3 con resto 0 3 : 2 = 1 con resto 11 : 2 = 0 con resto 1
(25)10
(?)2
(25)10 = (11001)2
dal basso verso l’alto!!
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Cambi di base
(11001)2
(?)10
110014 3 2 1 0
1*2^4 +1*2^3+ 0*2^2 + 0*2^1+ 1*2^0
= 25
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Cambi di base
79 : 2 = 39 con resto 1 39: 2 = 19 con resto 1 19 : 2 = 9 con resto 1 9 : 2 = 4 con resto 14 : 2 = 2 con resto 02 : 2 = 1 con resto 01 : 2 = 0 con resto 1
(79)10
(?)2
(79)10 = (100 1111)2
dal basso verso l’alto!!
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Cambi di base
(100 1111)2
(?)hex
01001111
4F
4F
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Cambi di base
27 : 16 = 1 con resto 11 = 0xB 1 : 16 = 0 con resto 1 = 0x1
(27)10
(?)hex
(27)10 = 0x1B =(1B)hex
dal basso verso l’alto!!
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Cambi di base
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Aritmetica binaria
25 + 7 = 32
(25) =(11001)
(7) = (111)
10
10
2
2
Somma
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Aritmetica binaria25 + 7 = 32 (25) =(11001)
(7) = (111)
10
10
2
2
1100100111
+=
100000
1111
(32)10
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Aritmetica binaria
25 - 5 = 20
(25) =(11001)
(5) = (101)
10
10
2
2
Differenza
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
manca qualcosa..
(-5)10
(?)2
Si usa il complemento a 2 !
1) Si prende |-5| = 5
2) (5) = (101)10 2
3)inversione di bit(101) (010)4)si somma 1
010+1 = 011
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Aritmetica binaria
(10011001) * (1011) = ?2 2
Moltiplicazione
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Aritmetica binariaDivisione
Risultato è 1012 (510), con il resto di 102 (210); ovvero 101,12 (5,510).
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 1
Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- Si esprimano entrambi i numeri in rappresentazione binaria in complemento a due su 10 bit
Esercizio 1
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 1
Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- Si esprimano entrambi i numeri in rappresentazione binaria in complemento a due su 10 bit
a=(-44)
b=(074)
10
8
su 10 bit !!
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 1
Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- si utilizzi la rappresentazione binaria di cui sopra per calcolare c = 4*b - 2*a utilizzando l’operatore shift al posto della moltiplicazione quando possibile.. ( su 10 bit )
Detta m la base con cui il numero è espresso, uno spostamento di n posizioni verso destra delle cifre del numero equivale a una sua divisione per m^n. Analogamente, uno spostamento di n posizioni verso sinistra equivale a una sua moltiplicazione per m^n.
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 1
Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- si utilizzi la rappresentazione binaria di cui sopra per calcolare c = 4*b - 2*a utilizzando l’operatore shift al posto della moltiplicazione quando possibile.. ( su 10 bit )
2= 2
4= 2
1
2
L’esponente ci dice di quanto dobbiamo effettuare lo shift
a = (44) = 0000101100010
=(88)10
b = (60) = 0000111100010
=(240)10
0
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 1
Si considerino i due numeri interi a e b. In rappresentazione decimale sia a=-44 e in rappresentazione ottale sia b=074.- si calcoli d= 2*c in binario in complemento a due su 10 bit e si commenti il risultato
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 2
Esercizio 2Nell'instruction set MIPS, l'istruzione addi Rs Rt imm viene codificata in formato binario su una parola di 32 bit (B31 . . . B0) nel modo seguente:B31 . . . B26 opcode B25 . . . B21 Rs B20 . . . B16 RtB15 . . . B0 imm L'opcode relativo alla istruzione addi è 001001. Si scriva esplicitamente la codifica binaria dell'istruzione addi R13 R17 -333.
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 2
addi: addi $t , $s, imm
operazione: $t= $s+imm ; advance_pc(4) ;
cccc ccss ssst tttt iiii iiii iiii iiii
32 bit
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 2
addi: addi $t , $s, imm
cccc ccss ssst tttt iiii iiii iiii iiii
L'opcode relativo alla istruzione addi è 001001.
cccc cc = 0010 01
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 2
addi: addi Rs, Rt, imm
0010 01ss ssst tttt iiii iiii iiii iiii
Rs = R13Rt=R17Imm= -333
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 2
addi: addi Rs, Rt, imm
0010 01ss ssst tttt iiii iiii iiii iiii
Rs = (1101)Rt=(10001)Imm= (1111111010110011)
2
2
2
0010 0101 1011 0001 1111 1110 1011 0011
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 3
Esercizio 3
La codifica binaria di un istruzione è
Si scriva esplicitamente opcode , Rs , Rt , imm e quindi l’istruzione MIPS
0001 0000 1100 1100 1111 1101 1110 1101
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 3
Esercizio 3
s = 6t = 12offset = -531
0001 00ss ssst tttt iiii iiii iiii iiii
if ($s == $t ) advance_pc(offset <<2) ; else advance_pc(4);
0001 0000 1100 1100 1111 1101 1110 1101
beq $s, $t, offset Branch on equal
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 4
Esercizio 4int a[1000];int b[1000];...register int i;for (i=999;i>0;i--){a[i]= 2*b[i-1];
}
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 5
in MIPS le parole iniziano sempre ad indirizzi multipli di 4 (Vincolo di allineamento). Quando abbiamo un indice di un vettore.. per ottenere l’indirizzo corretto in byte, l’offset da sommare al registro di base deve essere 4*indice.
Es: se dobbiamo selezionare A[8] l’offset sarà 4*8= 32
così selezioniamo A[8] e non A[8/4]
ATTENZIONE!
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 4
addi R10,#999,R0inizioloop: beq R10,R0,fineloopaddi R11,#-1,R0sll R11,R11,2lw R15,8000(R11)sll R15,R15,1addi R11,4,R11sw 1200(R11),R15addi R10,-1,R10beq R0,R0,inizioloopfineloop
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 5
Esercizio 5int a[1000];int *b[1000];...register int i;for (i=999;i>-1;i--){b[i]=&(a[i]);
}
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 5
L' operatore & (operatore unario, o monadico) fornisce l'indirizzo di una variabile.
L' operatore * (operatore indiretto, o non referenziato) da' il contenuto dell'oggetto a cui punta un puntatore.
pointer= &x; assegna a pointer l'indirizzo di x
y=*pointer; assegna a y il contenuto di pointer
ATTENZIONE!
Architettura degli elaboratori - Tutorato - Dott. Damiano Braga
Esercizio 5
addi R20,#-1,R0addi R10,#999,R0inizioloop: beq R10,R20,fineloopsll R11,R10,2addi R15,1200,R11sw 8000(R11),R15addi R10,-1,R0beq R0,R0,inizioloopfineloop: