Sunteți pe pagina 1din 28

Limbajul calculatorului

• Operatii si operanzi in hardware (MIPS)


• Instructiuni
• Tratarea procedurilor (functiilor) in hardware
• Traducerea si executia unui program

ACSO3 - 1
Operatii in hardware
• Operatii aritmetice
• Operatii logice
• Operatii de decizie
• Operatii de transfer de date
• Operatii de salt

ACSO3 - 2
Operatii aritmetice

add a,b,c
b+c+d
add a,a,d

In C: In limbajul de asamblare MIPS:


add $t0,$s1,$s2
x=(a+b)-(c+d);
add $t1,$s3,$s4
sub $s0,$t0,$t1

ACSO3 - 3
Operanzi in hardware
• se afla in registre (32 registre a cate 32 biti)
– cuvant (word) = 32 biti = 4 bytes

• in memorie – un tablou unidimensional


: :
3 1000
2 25
1 1
0 153
adresa datele
procesor memorie

ACSO3 - 4
Operanzi in hardware
• Restrictie de aliniere (alignment restriction) – cuvintele
trebuie sa inceapa la adrese multiplu de 4
• Se pot accesa pana la 230 cuvinte in memorie (4294967292
bytes)
: :
12 1000
8 25
4 1
0 153
adresa datele
procesor memorie

ACSO3 - 5
Operatii de transfer de date
In C: In limbajul de asamblare MIPS:

A[10]=x+A[5]; lw $t0,20($s2)
add $t0,$s1,$t0
sw $t0,40($s2)

S-a presupus ca:


- adresa de inceput a tabloului e in $s2
-valoarea lui x este in $s1

ACSO3 - 6
Registri in MIPS
Nume Numarul registrului Utilizare
$zero 0 valoarea constanta 0
$at 1 rezervat pentru asamblor
$v0-$v1 2-3 valoarea rezultatelor si evaluarea expr.
$a0-$a3 4-7 argumente
$t0-$t7 8-15 temporare
$s0-$s7 16-23 salvare
$t8-$t9 24-25 temporare
$k0-$k1 26-27 sistemul de operare
$gp 28 pointer-ul global
$sp 29 pointer-ul stivei
$fp 30 pointer-ul cadrului
$ra 31 adresa de intoarcere
ACSO3 - 7
Limbajul masina MIPS

Nume Campuri Comentarii

Dimensiunea 6 biti 5 biti 5 biti 5 biti 5 biti 6 biti Toate instructiunile


campului MIPS au 32 de biti
R-format op rs rt rd shamt funct Instr. aritmetice

I-format op rs rt adresa/imediat Instr. de transfer, de


decizie, imediate
J-format op adresa Instructiuni de salt

ACSO3 - 8
Exemplu
In C: In limbajul de asamblare MIPS:

A[10]=x+A[5]; lw $t0,20($t1)
add $t0,$s2,$t0
sw $t0,40($t1)

op rs rt rd shamt funct
35 9 8 20
0 18 8 8 0 32
43 9 8 40

ACSO3 - 9
Limbajul de asamblare MIPS(1)
Categoria Instructiunea Exemplu Sensul
Aritmetica add add $s1,$s2,$s3 $s1=$s2+$s3
subtract sub $s1,$s2,$s3 $s1=$s2-$s3
add imediat addi $s1,$s2,50 $s1=$s2+50
Transfer de incarca cuvant lw $s1, 30($s2) $s1=memorie[$s2+30]
date salveaza cuvant sw $s1, 30($s2) memorie[$s2+30]= $s1
incarca jumatate lh $s1, 30($s2) $s1=memorie[$s2+30]
salveaza jumatate sh $s1, 30($s2) memorie[$s2+30]= $s1
incarca un byte lb $s1, 30($s2) $s1=memorie[$s2+30]
salveaza un byte sb $s1, 30($s2) memorie[$s2+30]= $s1
inc. partea sup. im. lui $s1, 30 $s1=30*216

ACSO3 - 10
Limbajul de asamblare MIPS(2)
Categoria Instructiunea Exemplu Sensul
Salt necon- jump j 2500 go to 10000
ditionat jump register jr $ra go to $ra
jump and link jal 2500 $ra =PC+4; go to 10000
Logica and and $s1,$s2,$s3 $s1=$s2 & $s3
or or $s1,$s2,$s3 $s1=$s2 | $s3
nor nor $s1,$s2,$s3 $s1=~($s2 | $s3)
and imediat andi $s1,$s2,50 $s1=$s2 & 50
or imediat ori $s1,$s2,50 $s1=$s2 | 50
deplasare la stanga sll $s1,$s2,10 $s1=$s2 << 10
deplasare la dreapta srl $s1,$s2,10 $s1=$s2 >> 10

ACSO3 - 11
Limbajul de asamblare MIPS(3)
Categoria Instructiunea Exemplu Sensul
conditionale ramnificare la beq $s1,$s2,25 if($s1==$s2)go to
egalitate PC+4+100
ramnificare la bne $s1,$s2,25 if($s1!=$s2)go to
inegalitate PC+4+100
Seteaza la mai mic slt $s1,$s2,$s3 if($s2<$s3) $s1=1;
decat else $s1=0
Seteaza la mai mic slti $s1,$s2,10 if($s2<10) $s1=1;
decat imediat else $s1=0

ACSO3 - 12
Tratarea unei proceduri
• plaseaza parametri intr-un loc de unde pot fi accesati
• transfera controlul procedurii
• achizitioneaza resursele de stocare necesare procedurii
• executa operatiile dorite
• plaseaza rezultatul intr-un loc accesibil programului
apelant
• inapoiaza controlul punctului de origine (de apel)

ACSO3 - 13
Tratare unei proceduri
adunare: addi $sp, $sp, -12
int adunare(int a, int b, int c, int d) sw $t1,8($sp)
{ int r; sw $t0,4($sp)
r = (a + b) – (c + d); sw $s0,0($sp)
return r; add $t0,$a0,$a1
} add $t1,$a2,$a3
sub $s0,$t0,$t1
add $v0,$s0,$zero
$sp $sp lw $s0,0($sp)
Cont.reg.$t1 lw $t0,4($sp)
Cont.reg.$t0 lw $t1,8($sp)
$sp Cont.reg.$s0 addi $sp, $sp, 12
jr $ra

ACSO3 - 14
Tratare unei proceduri
int adunare(int a, int b, int c, int d) adunare: addi $sp, $sp, -4
{ int r; sw $s0,0($sp)
r = (a + b) – (c + d); add $t0,$a0,$a1
return r; add $t1,$a2,$a3
} sub $s0,$t0,$t1
add $v0,$s0,$zero
lw $s0,0($sp)
$sp $sp addi $sp, $sp, 4
$sp Cont.reg.$s0 jr $ra

ACSO3 - 15
Salvarea registrilor la apelul unei proceduri
Nume Numarul registrului Utilizare Pastrarea valorii
$zero 0 valoarea constanta 0
$at 1 rezervat pentru asamblor nu
$v0-$v1 2-3 valoarea rezultatelor si evaluarea expr. nu
$a0-$a3 4-7 argumente nu
$t0-$t7 8-15 temporare nu
$s0-$s7 16-23 salvare da
$t8-$t9 24-25 temporare nu
$k0-$k1 26-27 sistemul de operare nu
$gp 28 pointer-ul global da
$sp 29 pointer-ul stivei da
$fp 30 pointer-ul cadrului da
$ra 31 adresa de intoarcere da
ACSO3 - 16
Tratare unei proceduri imbricate
fact: addi $sp, $sp, -8
sw $ra,4($sp)
sw $a0,0($sp)
slti $t0,$a0, 1
int fact(int n) beq $t0,$zero,L1
{ addi $v0,$zero,1
if(n < 1) return (1); addi $sp,$sp,8
else return (n * fact(n-1)); jr $ra
} L1: add $a0,$a0,-1
jal fact
lw $a0,0($sp)
lw $ra,4($sp)
addi $sp, $sp, 8
mul $v0,$a0,$v0
jr $ra
ACSO3 - 17
Alocarea spatiului pentru date pe stiva
adresa mare adresa mare adresa mare

$fp $fp
$sp $sp
$fp Registri argu-
ment salvati
Adresa de in-
toarcere salvata
Registri saved
salvati
Tablouri locale
$sp si structuri

adresa mica adresa mica adresa mica


a. b. c.
ACSO3 - 18
Alocarea spatiului pentru date in heap
$sp 7 f f f f f f chex Stiva

Date dinamice

Date statice
$gp 1000 8000hex
1000 0000hex
Text

pc 0040 0000hex
Rezervat
0
ACSO3 - 19
Moduri de adresare(1)

ACSO3 - 20
Moduri de adresare(2)

ACSO3 - 21
Obtinerea unui program executabil

ACSO3 - 22
Partile unui fisier obiect (sistem UNIX)
• Capul fisierului obiect
• Segmentul text
• Segmentul datelor statice
• Informatii de relocare
• Tabelul simbolurilor
• Informatii de depanare

ACSO3 - 23
Link-editorul

• Plaseaza modulul codului si cel al datelor simbolic in


memorie
• Determina adresele datelor si etichetelor instructiunilor
• Complecteaza referintele interne si externe

ACSO3 - 24
Fisierul obiect pentru procedura A

ACSO3 - 25
Fisierul obiect pentru procedura B

ACSO3 - 26
Fisierul executabil obtinut prin
linkeditarea fisierelor obiect anterioare

ACSO3 - 27
Programele in Java

ACSO3 - 28

S-ar putea să vă placă și

  • Cantece de Voie Buna
    Cantece de Voie Buna
    Document83 pagini
    Cantece de Voie Buna
    Codrin Dițu
    86% (7)
  • Aparatul de Anestezie
    Aparatul de Anestezie
    Document24 pagini
    Aparatul de Anestezie
    Pintea Amalia
    Încă nu există evaluări
  • Ob Acso 4p
    Ob Acso 4p
    Document2 pagini
    Ob Acso 4p
    silviumaria
    Încă nu există evaluări
  • Sisteme Electrice
    Sisteme Electrice
    Document33 pagini
    Sisteme Electrice
    silviumaria
    Încă nu există evaluări
  • Rolurile Manageriale Ale Cadrului Didactic
    Rolurile Manageriale Ale Cadrului Didactic
    Document13 pagini
    Rolurile Manageriale Ale Cadrului Didactic
    Valeria
    Încă nu există evaluări
  • Acso8 4p
    Acso8 4p
    Document7 pagini
    Acso8 4p
    silviumaria
    Încă nu există evaluări
  • Acso10 4p
    Acso10 4p
    Document5 pagini
    Acso10 4p
    silviumaria
    Încă nu există evaluări
  • Ob Acso
    Ob Acso
    Document8 pagini
    Ob Acso
    silviumaria
    Încă nu există evaluări
  • Acso7 4p
    Acso7 4p
    Document7 pagini
    Acso7 4p
    silviumaria
    Încă nu există evaluări
  • Acso 5
    Acso 5
    Document22 pagini
    Acso 5
    silviumaria
    Încă nu există evaluări
  • Acso 7
    Acso 7
    Document25 pagini
    Acso 7
    silviumaria
    Încă nu există evaluări
  • Acso6 4p
    Acso6 4p
    Document5 pagini
    Acso6 4p
    silviumaria
    Încă nu există evaluări
  • Acso 6
    Acso 6
    Document18 pagini
    Acso 6
    silviumaria
    Încă nu există evaluări
  • Acso5 4p
    Acso5 4p
    Document6 pagini
    Acso5 4p
    silviumaria
    Încă nu există evaluări
  • Acso4 4p
    Acso4 4p
    Document6 pagini
    Acso4 4p
    silviumaria
    Încă nu există evaluări
  • Performanta Calculatorului
    Performanta Calculatorului
    Document21 pagini
    Performanta Calculatorului
    Hodis Cristian
    Încă nu există evaluări
  • Acso 3
    Acso 3
    Document28 pagini
    Acso 3
    silviumaria
    Încă nu există evaluări
  • Acso 1
    Acso 1
    Document43 pagini
    Acso 1
    silviumaria
    Încă nu există evaluări
  • Acso1 4p
    Acso1 4p
    Document11 pagini
    Acso1 4p
    silviumaria
    Încă nu există evaluări