Buscar

Linguagem Assembly MIPS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução aos Sistemas 
Computacionais 
Disciplina: 113468 
 
Prof. Marcus Vinicius Lamar 
 
Linguagem Assembly 
MIPS 
2 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Linguagem Assembly MIPS32 básica 
 Apresentada aqui como a linguagem de programação mais básica de 
uma máquina RISC 
 Baseada na execução sequencial de instruções 
 Desvios explícitos a endereços na memória 
 Sem variáveis ou tipos 
 Sem estruturas de controle elaboradas 
 Sem chamadas automáticas a funções/ou procedimentos 
 Sem bibliotecas 
 
 As instruções mais básicas estão em vermelho 
 Vide manual do MIPS para o conjunto completo de instruções e 
detalhes de implementação 
 
3 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
 Instruções Aritméticas: + - 
 
Obs.: Imm número de 16 bits em complemento de 2 
ExtSinal{Imm} = extensão de sinal para 32 bits 
 
add $t0,$t1,$t2 # $t0=$t1+$t2 
sub $t0,$t1,$t2 # $t0=$t1-$t2 
addu $t0,$t1,$t2 # $t0=$t1+$t2 sem detecção de overflow 
subu $t0,$t1,$t2 # $t0=$t1-$t2 sem detecção de overflow 
addi $t0,$t1,Imm # $t0=$t1+ExtSinal{Imm} 
addiu $t0,$t1,Imm # $t0=$t1+ExtSinal{Imm} sem detecção de overflow 
 
4 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
 Instruções Aritméticas:   
Registradores especiais de 32 bits Hi e Lo fora do banco de registradores 
Formam juntos o registrador de 64 bits {Hi.Lo} 
 
mult $t0,$t1 # {Hi,Lo} = $t0 x $t1 
multu $t0,$t1 # {Hi,Lo} = $t0 x $t1 números sem sinal 
div $t0,$t1 # Lo=Quociente Hi=Resto 
divu $t0,$t1 # Lo=Quociente Hi=Resto sem sinal 
mfhi $t0 # $t0=Hi 
mflo $t0 # $t0=Lo 
mthi $t0 # Hi=$t0 
mtlo $t0 # Lo=$t0 
 
5 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
 Instruções Lógicas 
 bitwise = bit a bit 
6 
and $s3, $s1, $s2 
or $s4, $s1, $s2 
xor $s5, $s1, $s2 
nor $s6, $s1, $s2 
andi $s2, $s1, 0xFA34 
ori $s3, $s1, 0xFA34 
xori $s4, $s1, 0xFA34 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
 Instruções de deslocamento 
 
 
7 
sll $t0, $s1, 4 
srl $s2, $s1, 4 
sra $s3, $s1, 4 
sllv $s3, $s1, $s2 
srlv $s4, $s1, $s2 
srav $s5, $s1, $s2 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
 Instruções acesso à memória: 
Obs.: Imm número de 16 bits em complemento de 2 
 
lw $t0,Imm($t1) # $t0=Memoria[Imm+$t1] 
sw $t0,Imm($t1) # Memoria[Imm+$t1]=$t0 
 
lh $t0,Imm($t1) # $t0=ExtSinal{Memoria[Imm+$t1]} 
lhu $t0,Imm($t1) # $t0=ExtZero{Memoria[Imm+$t1]} 
sh $t0,Imm($t1) # Memoria[Imm+$t1]=$t0[15:0] 
 
lb $t0,Imm($t1) # $t0=ExtSinal{Memoria[Imm+$t1]} 
lbu $t0,Imm($t1) # $t0=ExtZero{Memoria[Imm+$t1]} 
sb $t0,Imm($t1) # Memoria[Imm+$t1]=$t0[7:0] 
 
 
 
8 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
 Instruções diversas: 
lui $t0,Imm # $t0={Imm,0000000000000000} concatenação 
nop # No Operation 
 
 
 Instruções de Comparação 
slt $t0,$t1,$t2 # $t1<$t2 ? $t0=1 : $t0=0 
sltu $t0,$t1,$t2 # $t1<$t2 ? $t0=1 : $t0=0 sem sinal 
slti $t0,$t1,Imm # $t1<Imm ? $t0=1 : $t0=0 
sltiu $t0,$t1,Imm # $t1<Imm ? $t0=1 : $t0=0 sem sinal 
 
 
9 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS32 básico 
Obs.: Label é um endereço de 32 bits 
 Instruções de Salto Incondicional 
j Label # PC=Label 
jal Label # $ra=PC+4 e PC=Label 
jr $t0 # PC=$t0 
jalr $t0 # $ra=PC+4 e PC=$t0 
 
 Instruções de Salto Condicional 
beq $t0,$t1,Label # $t0==$t1 ? PC=Label : PC=PC+4 
bne $t0,$t1,Label # $t0!=$t1 ? PC=Label : PC=PC+4 
bgez $t0,Label # $t0>=0 ? PC=Label : PC=PC+4 
bgtz $t0,Label # $t0>0 ? PC=Label : PC=PC+4 
blez $t0,Label # $t0<=0 ? PC=Label : PC=PC+4 
bltz $t0,Label # $t0<0 ? PC=Label : PC=PC+4 
10 
UnB/CIC 113468– Introdução aos Sistemas Computacionais 
Assembly MIPS 
11 
 Pseudo-Instruções 
 São instrução que não existem na ISA do processador, mas o montador é 
capaz de traduzi-las em instruções reais. 
 O registrador $at é de uso dedicado ao montador para essas tarefas. 
li $t0,0x1234 # $t0=0x1234 
 Ex.: addi $t0,$zero,0x1234 
 
la $t0,0x12345678 # $t0=0x12345678 
 Ex.: lui $t0,0x1234 
 ori $t0,$t0,0x5678 
 
move $t0,$t1 # $t0=$t1 
 Ex.: add $t0,$zero,$t1 
 
blt $t0,$t1,Label # $t0<$t1 ? PC=Label : PC=PC+4 
 Ex.: slt $at,$t0,$t1 
 bne $zero,$at,Label

Outros materiais