Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouBianca Po Alterado mais de 10 anos atrás
1
Organização e Arquitetura de Computadores I Linguagem de Máquina
Ivan Saraiva Silva
2
Sumário Conjunto de Instruções do MIC Programação com o MIPS
Simuladores de Arquitetura MIPS Neander
3
O MIC possui dois formatos de instrução:
4 bits 12 bits Formato 1 CODOP ENDEREÇO 8 bits 8 bits Formato 2 CODOP ENDEREÇO 16 bits Formato 3 CODOP
4
Conjunto de Instruões do MIC
Instrução Mnemônico Significado 0000xxxxxxxxxxxx LODD X AC := M[X] 0001xxxxxxxxxxxx STOD X M[X] := AC 0010xxxxxxxxxxxx ADDD X AC := AC + M[X] 0011xxxxxxxxxxxx SUBD X AC := AC - M[X] 0100xxxxxxxxxxxx JPOS X If AC 0; PC := X 0101xxxxxxxxxxxx JZER X If AC = 0; PC := X 0110xxxxxxxxxxxx JUMP PC := X 0111xxxxxxxxxxxx LOCO AC := X 1000xxxxxxxxxxxx LODL AC := M[SP +X]
5
Conjunto de Instruções do MIC
Instrução Mnemônico Significado 1001xxxxxxxxxxxx STOL M[X + SP] := AC 1010xxxxxxxxxxxx ADDL AC := AC + M[SP + X] 1011xxxxxxxxxxxx SUBL AC := AC - M[SP + X] 1100xxxxxxxxxxxx JNEG if AC < 0; PC := X 1101xxxxxxxxxxxx JNZE if AC 0; PC := X 1110xxxxxxxxxxx CALL SP := SP - 1; M[SP] := PC; PC := X
6
Conjunto de Instruções do MIC
Instrução Mnemônico Significado PSHI SP := SP - 1; M[SP] := M[AC] POPI M[AC] := M[SP] SP := SP + 1; PUSH SP := SP - 1; M[SP] := AC POP AC := M[SP]; SP := SP + 1; RETN PC := M[SP]; SP := SP + 1; SWAP TMP := AC; AC := SP; SP := TMP yyyyyyyyy INSP SP = SP + Y yyyyyyyyy DESP SP := SP - Y
7
MAR MBR P C A S I R T 1 -1 M B F D E Z N ULA 16 RD WR
8
Programação no MIPS Para somar os conteúdos de b, c, d e e
add a, b, c # a = b + c add a, a, d # a = (b+c) + d add a, a, e # a = (b+c+d) + e Cada Linha do programa tem apenas uma instrução Comentários terminam no fim da linha Principio 1: Simplicidade favorece a regularidade
9
Programação no MIPS 32 registradores estão disponíveis no MIPS
$s0, $s1, $s2, … # para variáveis $t0, $t1, $t2, … # para temporários Instruções aritméticas do MIPS usam registradores como operando add $s0, $s1, $s2 sub $s0, $s1, $s2 Princípio 2: Menor significa mais rápido
10
Programação no MIPS A palavra do MIPS é de 32 bits
Endereços precisam começar em endereços que sejam múltiplos de 4 A memória é acessada por instruções de load e store lw $t0, 32 ($s3) sw $t0, 32($s3) O endereço efetivo e formado por 32 + ($s3)
11
Memória do MIPS Computadores podem usar
Endereço do byte mais a esquerda como endereço da palavra Big Endian Endereço do byte mais a direita como endereço da palavra Little Endian O MIPS é Big Endian 12 100 8 10 4 101 1
12
Programação no MIPS Constantes e operandos Imediatos
Utilizar versões de instruções onde um dos operandos é uma constante Aumenta da velocidade de execução addi $s3, $s3, 4 # add imediato Uso de uma constante imediata codificada na instrução Princípio 3: Agilize os casos mais comuns
13
Programação no MIPS Representando Instruções MIPS
Registradores $s0 a $s7 mapeados nos registradores 16 a 23 Registradores $t0 a $t7 mapeados nos registradores 8 a 15 Registrador $zero (sempre igual a zero) mapeado para o endereço zero Formato de instruções MIPS 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits op rs rt rd shamt funct Formato tipo R
14
Formato de Instrução MIPS
op: opcode – operação básica da instrução rs: registrador do primeiro operando de origem rt: registrador do segundo operando de origem rd: registrador do operando destino shamt: Quantidade de deslocamento funct: função – define uma variante da operação 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits op rs rt rd shamt funct Formato tipo R
15
Formato de Instrução MIPS
E se a instrução necessitar de Campos maiores do que o especificado lw $t0, 32 ($s3) ou sw $t0, 32($s3) As constantes podem ser maiores que 5 bits Princípio 4: Um bom projeto exige bons compromissos 6 bits 5 bits 5 bits 16 bits op rs rt constante ou endereço Formato tipo I (imadiato)
16
Programação no MIPS Operações lógicas Shift à esquerda Shift à direita
sll $t2, $s0, 4 # $t2 = shift a esquerda de $s0 de 4 bits O campo shamt indica o “tamanho” do deslocamento Shift à direita srl $t2, $s0, 4 # $t2 = shift a direita de $s0 de 4 bits AND bit-a-bit and $t0, $t1, $t2 ou andi $t0, $t1, 100 OR bit-a-bit or $t0, $t1, $t2 ou ori $t0, $t1, 100 NOR bit-a-bit nor $t0, $t1, $t2
17
Programação no MIPS Instruções de controle de fluxo
Desvios Condicionais beq $s3, $s4, label # salte para label se ($s3 = $s4) bne $s3, $s4, label # salte para label se ($s3 $s4) Desvios Incondicionais j label # salte para label de forma incondicional A instrução jump usa um formato chamado formato j op Endereço de salto 6 bits 26 bits
18
Programação no MIPS Exemplo Supor i e k armazenados em $s3 e $s5
While (save[i] = = k) i += 1; Supor i e k armazenados em $s3 e $s5 Supor a base do array save armazenada em $s6. Precisamos do endereço de do array save Loop: sll $t1, $s3, 2 # $t1=4*i add $t1, $t1, $s6 # save = (4*i) + $s6 lw $t0, 0($t1) # $t0 = save(i) bne $t0, $s5, Exit # sai se i k addi $s3, $s3, 1 # i = i + 1 j Loop # vá para Loop Exit:
19
Programação no MIPS Testes de igualdade ou desigualdade
Normalmente comparam dois registradores e indicam o resultado em um terceiro slt $t0, $s3, $s4 # $t0 = 1 se $s3 < $s4; cc $t0 = 0 slti $t0, $s2, 10 # $t0 = 1 se $s2 < 10; cc $t0 = 0
20
Programação no MIPS Procedimentos: para a execução de um procedimento é necessário: Colocar parâmetros em um local conhecido do procedimento Transferir o controle para o procedimento Adquirir recursos de armazenamento para o procedimento Realizar a tarefa desejada Colocar o valor de retorno em um valor conhecido por quem chamou o procedimento Retornar ao ponto de origem
21
Programação no MIPS Registradores e procedimentos Mais registradores
$a0 a $a3 - Registradores de argumentos para passar parâmetros $v0 e $v17 – Registradores de valor para valores de retorno $ra – Registrador de endereço de retorno para retornar ao ponto de origem Mais registradores Para usar mais registradores para parâmetros ou valores de retorno usa-se o $sp (apontador de pilha)
22
Programação no MIPS Instruções para procedimento
jal EndereçoProcedimento Salta para EndereçoProcedimento e salva endereço de retorno em $ra (PC = PC + 4) jr $ra Instrução de salto incondicional para o endereço armazenado em $ra Esta instrução é usada coma a última instrução de um procedimento
23
Programação no MIPS Registrador Número Uso Preservado na chamada?
$zero Valor 0 n.a. $v0-$v1 2-3 Resultados N $a0-$a3 4-7 Argumentos $t0-$t7 8-15 Temporários $s0-$s7 16-23 Valores salvos S $t8-$t9 24-25 $gp 28 Ponteiro global $sp 29 pilha Sfp 30 quadro $ra 31 retorno
24
Programação no MIPS Estudo de caso int X, S = 4, D = 2, R = 1, T = 0;
Com o que foi visto até agora tente escrever em assembly do MIPS o algoritmo ao lado Identifique o que o algoritmo faz int X, S = 4, D = 2, R = 1, T = 0; cin >> X; While (T >= 0) { R = R+1; D = D+2; S = S+D+1; T = X – S; }
25
Atividades Recomendadas
Procurar documentação sobre simulador MIPS em ftp://ftp.cs.wisc.edu/pub/spim/ Caso não encontre procure o professor Estudar o capítulo 2 do livro: até a seção 2.8. Exercitar-se no uso do simulador do MIPS Baixar o simulador do Neander em Estudar o Neander e praticar com o simulador Desenvolver programas com as instruções do MIC Simulador disponível na página da disciplina
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.