Você está na página 1de 26

Linguagem Assembly - MIPS

Arquitectura de computadores

Linguagem do baixo nvel


Linguagem de mquina
Bastante primitiva

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

Princpio do desenho: M i i Pi i d d h Maximizar a performance, f minimizar os custos e acelerar o desenvolvimento

Arquitectura de computadores

Operaces aritmticas em MIPS


As instrues possuem 3 operandos A ordem dos operandos fixa ( destino primeiro)
Exemplo: Cdigo em C: A= B+C; Cdigo em MIPS: add $s0, $s1, $s2 (o compilador associa variveis do programa aos registradores)

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)

Lembre-se Lembre se que os operandos so registradores, e no memria!!!


Arquitectura de computadores 7

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

Operaes do tipo R (R- type) (R


op: tipo de operao rs: registrador do primeiro operando rt: registrador do segundo operando rd: registrador destino (resultado) shamt: deslocamento funct: variante da operao
Arquitectura de computadores 10

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;

bne $s0, $s1, Label add $s3, $s0, $s1 Label: ..


Arquitectura de computadores 13

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: ..

Usando instrues do MIPS crie um loop !!!! Instruo do tipo J (J-type)

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; }

Traduza-o em cdigo Assembly - MIPS

Arquitectura de computadores

20

Cdigo em Assembly - MIPS


Os parametros g, h, i e j correspondem aos registradores $a0, $a1, $a2 e a $a3 respectivamente e f a $s0 $s0. Procedimento:
funcao_exemplo:
addi $sp, $sp, -12 sw $ 1 8($ ) $t1, 8($sp) sw $t0, 4($sp) sw $s0, 0($sp) add $t0, $a0, $a1 add $t1 $a2, $a3 $t1, $a2 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) lw $t0, 4($sp) lw $t1, 8($sp) addi $sp, $sp, 12 jr $ra # ajusta o stack para tres enderecos # salva o valor d $ 1 p uso posterior l l de $t1 i # salva o valor de $t0 p uso posterior # salva o valor de $s0 p uso posterior # g+h # i+j # (g + h) (i + j) # retorna f ($v0= $s0 + 0 ) # recupera o valor de $s0 # recupera o valor de $t0 # recupera o valor de $t1 # ajusta o stack eliminando os tres enderecos # salto ao programa principal

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

Languagem Assembly vs linguagem de mquina


Assembly apresenta representaes convenientes e y p p simblicas
Fcil desenvolvimento de programas

Linguagem de mquina possui a essencia da realidade da mquina Assembly providencia-ns pseudo-instrues yp p


Ex: move $t0, $t1 pode ser implementada da seguinte forma: add $t0, $t1, $zero

Sempre que tomarmos em considerao a performance deve se optar pelas instruces de base ou primitivas.
Arquitectura de computadores 23

Linguagem assembly- MIPS

Arquitectura de computadores

24

MIPS & Linguagem de mquina

Arquitectura de computadores

25

Fases de converso da linguagem do alto nvel ( C ) em linguagem de mquina

Arquitectura de computadores

26