Apresentação do PowerPoint - bcc / uag

Propaganda
Arquitetura de Computadores
Diogo Lages
Roteiro
• SPIM
• Instruções
• Lista
Arquitetura de Computadores
2
SPIM
SPIM
Instruções
• Simulador do MIPS 32 bits.
• Permite rodar diretamente código
assembly
• Possui depurador
– Registradores
– Permite a utilização de system call.
Arquitetura de Computadores
3
SPIM
Código - .text
Data - .data
SPIM
Instruções
Registradores
Gerais e de Ponto
Flutuante
Mensagens escritas pelo SPIM.
Arquitetura de Computadores
4
SPIM
SPIM
Instruções
Carrega o código
assembly. O
SPIM só suporta
código assembly.
Reinicializa o
simulador e
carrega
novamente o
código assembly.
Arquitetura de Computadores
5
SPIM
SPIM
Instruções
Carrega o código
assembly. O
SPIM só suporta
código assembly.
Reinicializa o
simulador e
carrega
novamente o
código assembly.
Arquitetura de Computadores
6
SPIM
SPIM
Instruções
Limpa os
registradores
Renicializa o
simulador.
Indica o local da
memória a ser
executada a
primeira
instrução e os
parâmetros de
entrada
Voltar a
execução
normal, após ter
encontrado
condição de
parada
Executa uma
instrução por vez.
Arquitetura de Computadores
7
SPIM
SPIM
Instruções
Arquitetura de Computadores
8
SPIM
SPIM
Instruções
[Memória]
Conteúdo de memória
Arquitetura de Computadores
9
SPIM
SPIM
Instruções
[Memória]
Conteúdo de memória
Arquitetura de Computadores
10
SPIM
SPIM
Instruções
Permite
inserir
breakpoint
ou retirar.
Endereço de
memória
Instrução em
código de máquina.
Instruções em
código assembly
Arquitetura de Computadores
11
SPIM
SPIM
Endereçamento
Instruções
• Permite seis endereçamentos (SPIM)
Formato
(registrador)
Conteúdo do registrador
Imm
Immediate
Imm(register)
Immediate + conteúdo registrador
Label
Endereço de um label
Label ±imm
Endereço de um label + ou –
immediate
Label ± imm(register)
Endereço de um label + ou (immediate + conteúdo do
registrador)
Arquitetura de Computadores
12
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
•
Comentários
–
•
#
Diretivas
– .align n
•
Alinha os dados na memória no formato 2^n .
– .ascii
•
Armazena na memória string sem NULL (0x00).
– .asciiz
•
Armazena na memória string com NULL.
– .byte b1, … , bn
•
Armazena na memória valores sucessivos de bytes
– .data
•
Segmento de dados.
– .globl label
•
Declara label como global, ou seja, pode ser visto por outros arquivos.
– .space n
•
Aloca n bytes (segmento de dados)
– .text
•
Instruções
Arquitetura de Computadores
13
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
• Add $1,$2,$3
– $1 = $2 + $3
• Sub $1,$2,$3
– $1 = $2 - $3
• Addi $1,$2,20
– $1 = $2 + 20
Arquitetura de Computadores
14
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
• Load word
– Lw $1, 20($2) -> $1 = Memória ($2 + 20)
• Store word
– Sw $1, 20($2) -> Memória ($2 + 20) = $1
• Load Half
– Lf $1, 20($2) -> $1 = Memória ($2 + 20)
• Store Half
– Sf $1, 20($2) -> Memória ($2 + 20) = $1
Arquitetura de Computadores
15
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
• Load byte
– Lb $1, 20($2) -> $1 = Memória ($2 + 20)
• Store byte
– Sb $1, 20($2) -> Memória ($2 + 20) = $1
• Load Byte Unsigned
– Lbu $1, 20($2) -> $1 = Memória ($2 + 20)
• Store Byte Unsigned
– Sbu $1, 20($2) -> Memória ($2 + 20) = $1
• Carregar constante em registrador (16 bits)
– Lui $1,20
Arquitetura de Computadores
16
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
Instruções
Lógicas
• And
– And $1,$2,$3 - $1 = ($2 & $3)
• Or
– Or $1,$2,$3 - $1 = ($2 | $3)
• Nor
– Nor $1,$2,$3 - $1 = ~($2 | $3)
• And Immediate
– Andi $1,$2,20 - $1 = ($2 & 20)
• Or Immediate
– Ori $1,$2,20 - $1 = ($2 | 20)
• Sll – Shift left logical
– Sll $1,$2,10 - $1 = ($2 << 10)
• Srl
– Srl $1,$2,10 - $1 = ($2 >> 10)
Arquitetura de Computadores
17
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
Instruções
Lógicas
Instruções de
pulo não
condicional
• Jump
– J label
• Jump register
– Jr $ra
• Jump and Link
– [endereço] Jal label
– $ra = endereço +4
Arquitetura de Computadores
18
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
Instruções
Lógicas
Instruções de
pulo
condicional
• Branch on equal
– Beq $1,$2,label
Se ($1 == S2 )
Label
Senão
Execução normal
• Branch not equal
– Bne $1,$2,label
– Se ($1 != $2)
Label
Senão
Execução normal
Arquitetura de Computadores
19
SPIM
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
Instruções
Lógicas
Instruções de
pulo
condicional
•
Seta se menor que
– Slt $1,$2,$3
Se ($2 < $3)
$1 = 1
Senão
$1 = 0
•
Seta se menor que não sinalizado
– Sltu $1,$2,$3
Se ($2 < $3)
$1 = 1
Senão
$1 = 0
•
Seta se menor que immediate
– Slti $1,$2,20
Se ($2 < 20)
$1 = 1
Senão
$1 = 0
Arquitetura de Computadores
20
SPIM - Exercício
SPIM
Endereçamento
Assembler
Sintaxe
Instruções
Aritméticas
Instruções
Transferência
Instruções
Lógicas
Instruções de
pulo
condicional
•
•
•
•
•
Elaborar um programa em assembly capaz de
copiar uma string de um local para outro.
Elaborar um programa capaz de comparar
strings.
Elaborar um programa capaz de encontrar a
primeira ocorrência de uma letra.
Elaborar um programa capaz de encontrar o
tamanho de uma string.
Escrever um programa capaz de inicializar
determinada da memória com um caractere
específico.
Arquitetura de Computadores
21
Download