1 / 25

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

Organização e Arquitetura de Computadores I Linguagem de Máquina. Ivan Saraiva Silva. Sumário. Conjunto de Instruções do MIC Programação com o MIP S Simuladores de Arquitetura MIPS Neander. O MIC possui dois formatos de instrução:. 12 bits. 4 bits. Formato 1. CODOP. ENDEREÇO. 8 bits.

john
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Organização e Arquitetura de Computadores ILinguagem 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: 12 bits 4 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

  5. Conjunto de Instruções do MIC

  6. Conjunto de Instruções do MIC

  7. RD WR MAR MBR B C A P C A C S P I R T I R 0 1 -1 A M B M A B C D E F ULA Z N 16

  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 0 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. Operações lógicas Shift à esquerda 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 Programação no MIPS

  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. Exemplo 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: Programação no MIPS

  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 • $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

  24. Estudo de caso 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; } Programação no MIPS

  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 http://www.inf.unilasalle.edu.br/arquitetura2/ • Estudar o Neander e praticar com o simulador • Desenvolver programas com as instruções do MIC • Simulador disponível na página da disciplina

More Related