A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Organização e Arquitetura de Computadores I Linguagem de Máquina

Apresentações semelhantes


Apresentação em tema: "Organização e Arquitetura de Computadores I Linguagem de Máquina"— Transcrição da apresentação:

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


Carregar ppt "Organização e Arquitetura de Computadores I Linguagem de Máquina"

Apresentações semelhantes


Anúncios Google