1 / 38

Revisão Comp-Prog

Revisão Comp-Prog. Autor: Fernando de Mesentier Silva. CES. Barramento de dados: 16 bits Barramento de endereços: 14 bits Memória: 2^14 * 16 bits = 32Kbytes. Registradores do CES. RD -> Registrador de Dados (16 bits) RE -> Registrador de Endereço (14 bits)

iain
Download Presentation

Revisão Comp-Prog

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. Revisão Comp-Prog Autor: Fernando de Mesentier Silva

  2. CES • Barramento de dados: 16 bits • Barramento de endereços: 14 bits • Memória: 2^14 * 16 bits = 32Kbytes

  3. Registradores do CES • RD -> Registrador de Dados (16 bits) • RE -> Registrador de Endereço (14 bits) • RI -> Registrador de Instrução (2 bits) • RP -> Registrador apontador de programa (14 bits) • RT -> Registrador de Trabalho (16 bits) • RC* -> Registrador de Condição (1 bit) *(armazena o vai-um do somador)

  4. Formato da Instrução

  5. Instruções • Lê “End” -> Lê da Memória / Cód 00 • Esc “End” -> Escreve na Memória / Cód 01 • Sub “End” -> Subtrai (RT = [End] - RT) / Cód 10 • Task “End” -> Desvio condicional em relação ao valor de RC / Cód 11

  6. Codificação das Instruções

  7. Esquema do CES

  8. Ciclos de Instrução • L/E/S -> 1º ciclo: Encontra a próxima instrução Dado é lido(L/S) ou escrito(E) Dado lido/escrito é armazenado em RD • L/E/S -> 2º ciclo: Próxima instrução é lida da memória Ao final do ciclo a instrução é copiada para RD, seu operando é copiado para RE e o cód. Instrução é colocado em RI *L/S -> valor produzido é armazenado em RT no final do ciclo. *S -> vai-um é armazenado no RC no final do ciclo

  9. Ciclos de Instrução • No caso da instrução T, se o valor armazenando no RC for um, essa instrução também será executada em dois ciclos de relógio: No primeiro é carregado o endereço de desvio para RP, e no segundo ciclo segue como as outras instruções • Se o valor armazenado no RC for zero, a instrução T será executada em apenas um ciclo de relógio.

  10. MIPS • 32 registradores de 32 bits cada • 32 bits de endereço • 8 bits por posição de memória • Instruções de 32 bits

  11. Tipos de palavras • Byte = 8 bits • Halfword = 2 bytes • Word = 4 bytes • Um caractere ocupa 1 byte na memória • Um inteiro ocupa 1 word(4 bytes) na memória

  12. Endian MIPS x Intel

  13. Instruções Aritméticas • add Dest, Op1, Op2 Dest = Op1 + Op2 Ex: add $s1, $s2, $s3 => $s1 = $s2 + $s3 addi $t0, $t1, 1 => $t0 = $t1 + 1 addu $s1, $t1, $t2 => $s1 = $t1 + $t2 *sem sinal* • sub Dest, Op1, Op2

  14. Instruções Lógicas • and Dest, Op1, Op2 Dest = Op1 & Op2 *bit a bit andi Dest, Op1, Imediato • or Dest, Op1, Op2 • not Dest, Op1

  15. Instruções Lógicas • sll Dest, Op1, Imediato Dest = Op1 << Imediato => equivalente a multiplicar por 2^Imediato • srl Dest, Op1, Imediato Dest = Op1 >> Imediato => equivalente a dividir por 2^Imediato

  16. Instruções de carga • lw Dest, Imediato(registrador) Carrega o dado endereçado por [reg+imed], e salva em Dest • sw Fonte, Imediato(registrador) Salva o valor dado por fonte na posição de memória endereçada por [reg+imed]

  17. Instruções de comparação • slt Dest, Op1, Op2 *set on less than* Dest = 0, Op1 >= Op2 Dest = 1, Op1 < Op2 • slti Dest, Op1, Imediato • sltu Dest, Op1, Op2 • sltiu Dest, Op1, Imediato

  18. Instruções de desvio • beq Reg1, Reg2, Label Desvia para Label, se Reg1 == Reg2 • bne Reg1, Reg2, Label Desvia para Label, se Reg1 != Reg2 • j Label * • jr Registrador * *Desvio incondicional

  19. Subrotinas • $a0 - $a3 => registradores usados na passagem de parâmetros • $v0 e $v1 => registradores para os valores de retorno • $ra => registrador de endereço de retorno

  20. Subrotinas • jal Label Desvia para a subrotina, e salva o endeço de retorno em $ra • jr $ra Desvia de volta para o endereço de retorno

  21. Subrotinas • Cuidado! Quando temos subrotinas aninhadas, o valor de retorno($ra) será perdido a cada chamada de subrotina feita em seqüência, por isso é importante que o valor de retorno seja preservado(Melhor solução é empilhar o mesmo).

  22. Pilha • $sp => registrador que aponta para o topo da pilha • $fp => frame pointer (serve ao mesmo uso do EBP no intel) • Manipulando o valor do registrador $sp é possível simular as instruções PUSH e POP

  23. Codificação de Instruções • Instruções costumam ser representadas em binário ou hexadecimal • Os nomes dos registradores são convertidos pela tabela de registradores • Cada instrução é mapeada conforme o código dado na tabela de instruções • Endereço de memória e constantes se mantêm.

  24. Tabela dos Registradores

  25. Formato das Instruções • Formato R => Instruções aritméticas • Formato I => Instruções de transferências de dados ou com valores imediatos • Formato J => Instruções de desvio

  26. Formato das Instruções

  27. Formato R • op => código da operação (em R = 000000) • rs => código do operador 1 (00000 em srl/sll) • rt => código do operador 2 • shamt => quantidade de shift (00000 exceto para srl/sll) • funct => código da função

  28. Exemplo

  29. Exemplo

  30. Formato I • op => código da operação • rs => valor do operando 1 • rt => valor do operando 2(destino/fonte) • Constante / Endereço

  31. Exemplo

  32. Formato J • op => código da operação • Endereço => endereço do desvio

  33. Endereçamento nas Instruções • Instruções de formato J usam o endereçamento absoluto. • Instruções de formato I usam o endereçamento relativo (a partir de PC) • Cuidado! O MIPS multiplica por 4 o valor de endereço da instrução, uma vez que cada instrução ocupa 32 bits (4 posições de memória) • Cuidado! A contagem do endereço relativo começa a partir da instrução abaixo da atual(porque o PC já está carregado com o endereço da próxima instrução).

  34. Exemplo

  35. Instrução lui

  36. Caracteres • São representados pela tabela ASCII • Ocupam 8 bits (1 espaço de memória) • Variações de lw e sw para bytes: lb e sb - Trabalham com os 8 bits mais a direita

  37. Strings • São cadeias de caracteres • Costumam ser representados em uma das 3 formas: 1) A primeira posição da string indica o tamanho dela 2) Uma variável que a acompanha guarda o tamanho da string 3) Ultima posição da string é ocupada por um caractere especial que marca o fim da string

  38. Referência Slides da professora Silvanna GOOGLE

More Related