Professional Documents
Culture Documents
Arquitectura de computadores
Linguagem assembly
Sofisticada em relaco a Linguagem de mquina Exemplo: instrues artimetica em MIPS MIPS Instruction Set Architecture (ISA)
Similar a outras arquitecturas desenvolvidas deste os principios dos anos 1980. Usada por companhias como NEC, Nintendo, Silicon Graphics, Sony
Arquitectura de computadores
Arquitectura de computadores
Cont.
Princpio do desenho: simplicidade simplicidade, regularidade
Cdigo em C: Cdigo em MIPS: g A = B + C + D; E=FA; add $ , $ , $ $t0, $s1, $s2 add $s0, $t0, $s3 sub $s4, $s5, $s0 $ ,$ ,$
Os operandos so registradores
Arquitectura de computadores
Registradores vs Mmria
Os operandos so registradores p g
Somente existem 32 registradores disponveis
O compilador associa as variveis aos registradores O que acontece em relaco a programas com t l muitas variaveis?
Arquitectura de computadores
Organizaco da memria
Visto como um enorme array unidimensional com endereos y O endereo um ndice de acesso aos elementos do array O MIPS usa o word ou palavra com 32 bits ou 4 bytes O registrador suporta 32 bit d d d i t d t bits de dados 230 words possuem os seguintes endereos: 0, 4, 8, 232- 4
Arquitectura de computadores
Instrues
Instrues Load e Store Exemplo:
Cdigo em C: A[8] = h + A[8]; Cdigo em MIPS: lw $t0, 32 ($s3) add $t0 $s2 $t0 $t0, $s2, sw $t0, 32 ($s3)
Exemplo
Arquitectura de computadores
Cont.
MIPS
Load ou carregamento uma instruo executada a memria Operaes aritmticas so executadas aos registradores O it ti t d i t d Instruco add $s1, $s2, $s3 sub $s1, $s2, $s3 lw $s1, 100($s2) sw $s1, 100($s2) significado $s1 = $s2 + $s3 $s1 = $s2 - $s3 $s1 = memoria[ $s2 + 100] memoria[ $s2 + 100] = $s1
Arquitectura de computadores
Linguagem de mquina
As instrues so igualmente words de 32 bits de comprimento
Exemplo: add $t1 $ 1 $ 2 E l dd $t1, $s1, $s2 Formato da instruo
Cont.
Considere as instrues load e store
Instruo do tipo I (I-type) Exemplo: lw $t0 32($s2) $t0,
Arquitectura de computadores
11
Conceito de programa
As instrues so formadas bits Os programas so armazenados na memria Ciclo de recuperao e execuo
As instruo so recuperadas e instruduzidas em registradores especiais i i Controlo da aco subsequente Recuperao da instruo seguinte
Arquitectura de computadores
12
Instrues de control
Condio em MIPS
bne $t0, $t1, Label beq $t0, $t1, Label
Exemplo:
if ( i == j) h = i + j;
Cont.
Salto incondicional em MIPS
j label Exemplo:
if ( i != j ) h = i + j; else h=ij; beq $s4, $s5, Lab1 add $s3, $s4, $s5 j Lab2 Lab1: sub $s3, $s4, $s5 , , Lab2: ..
Arquitectura de computadores
14
Cont.
Instrues de controlo e deciso
Slt $t0, $s1, $s2 $t0 $s1 if $s1 < $s2 then $t0 = 1 else $t0 = 0
Arquitectura de computadores
15
Resumo
Instruo
add $s1, $s2 $s3 $s1 $s2, sub $s1, $s2, $s3 lw $s1, 100($s2) sw $s1, 100($s2) bne $s4, $s5, L beq $s4, $s5, L J Label
significado
$s1 = $s2 + $s3 $s1 = $s2 - $s3 $s1 = memoria[ $s2 + 100] memoria[ $s2 + 100] = $s1 proxima instrucao em L se $s4 $s5 proxima instruo em L se $s4 = $s5 proxima instruo em L se
Arquitectura de computadores
16
Convenes
Nome $zero $v0-$v1 $a0 - $a3 $t0-$t7 $s0-$s7 $t8-$t9 $gp $sp $fp $ra 0 2-3 4-7 8-15 16-23 24-25 28 29 30 31 Numero do registrador constante 0 resultados de expressoes parametros variveis temporarias recuperao na memoria variaveis mais temporarias Global pointer Stack pointer Frame pointer Return address Uso
Arquitectura de computadores
17
Constante
As constantes so frequentemente usadas na programao
A = A + 5; B = B + 1; C = C 18;
Instrues do MIPS S
addi slti lti andi ori $29, $8, $8 $29, $29, $29 $29, $18, $18 $29, $29 $29, 4 10 6 4
Arquitectura de computadores 18
Procedimentos em MIPS
Convenes:
$a0-$a3: registradores usados como parametros $v0 $v1: $v0-$v1: registradores usados para guardar resultados retornados pelo procedimento $ra : ponteiro do endereo da origem (g g (guarda o endereco da instrucao a seguir a chamada do procedimento) Jal: instruo de h J l i t d chamada d procedimentos d de di t
Exemplo: jal endereco_procedimento
Arquitectura de computadores
19
Exemplo:
Seja dado o procedimento em C
int funcao_exemplo (int g, int h, int i, int j) { int f; f = (g + h) ( i j); i+ return f; }
Arquitectura de computadores
20
Arquitectura de computadores
21
Stack
A figura ilustra os valores do Stack Pointer ($sp) e do Stack antes da chamada do procedimento (a), durante a execuco (b) e no fi d execucao d procedmento ( ) fim da do d t (c)
Arquitectura de computadores
22
Sempre que tomarmos em considerao a performance deve se optar pelas instruces de base ou primitivas.
Arquitectura de computadores 23
Arquitectura de computadores
24
Arquitectura de computadores
25
Arquitectura de computadores
26