revisão comp-prog autor: fernando de mesentier silva
TRANSCRIPT
![Page 1: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/1.jpg)
Revisão Comp-Prog
Autor: Fernando de Mesentier Silva
![Page 2: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/2.jpg)
CES
• Barramento de dados: 16 bits
• Barramento de endereços: 14 bits
• Memória: 2^14 * 16 bits = 32Kbytes
![Page 3: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/3.jpg)
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)
![Page 4: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/4.jpg)
Formato da Instrução
![Page 5: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/5.jpg)
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
![Page 6: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/6.jpg)
Codificação das Instruções
![Page 7: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/7.jpg)
Esquema do CES
![Page 8: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/8.jpg)
Ciclos de Instrução
• L/E/S -> 1º ciclo:
Encontra a próxima instruçãoDado é lido(L/S) ou escrito(E) Dado lido/escrito é armazenado em RD
• L/E/S -> 2º ciclo:
Próxima instrução é lida da memóriaAo 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
![Page 9: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/9.jpg)
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.
![Page 10: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/10.jpg)
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
![Page 11: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/11.jpg)
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
![Page 12: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/12.jpg)
Endian
MIPS x Intel
![Page 13: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/13.jpg)
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
![Page 14: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/14.jpg)
Instruções Lógicas
• and Dest, Op1, Op2Dest = Op1 & Op2 *bit a bit
andi Dest, Op1, Imediato
• or Dest, Op1, Op2
• not Dest, Op1
![Page 15: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/15.jpg)
Instruções Lógicas
• sll Dest, Op1, ImediatoDest = Op1 << Imediato => equivalente a
multiplicar por 2^Imediato
• srl Dest, Op1, ImediatoDest = Op1 >> Imediato => equivalente a dividir
por 2^Imediato
![Page 16: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/16.jpg)
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]
![Page 17: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/17.jpg)
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
![Page 18: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/18.jpg)
Instruções de desvio
• beq Reg1, Reg2, LabelDesvia para Label, se Reg1 == Reg2
• bne Reg1, Reg2, LabelDesvia para Label, se Reg1 != Reg2
• j Label *
• jr Registrador **Desvio incondicional
![Page 19: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/19.jpg)
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
![Page 20: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/20.jpg)
Subrotinas
• jal LabelDesvia para a subrotina, e salva o endeço de
retorno em $ra
• jr $raDesvia de volta para o endereço de retorno
![Page 21: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/21.jpg)
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).
![Page 22: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/22.jpg)
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
![Page 23: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/23.jpg)
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.
![Page 24: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/24.jpg)
Tabela dos Registradores
•
![Page 25: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/25.jpg)
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
![Page 26: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/26.jpg)
Formato das Instruções
![Page 27: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/27.jpg)
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
![Page 28: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/28.jpg)
Exemplo
![Page 29: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/29.jpg)
Exemplo
![Page 30: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/30.jpg)
Formato I
• op => código da operação
• rs => valor do operando 1
• rt => valor do operando 2(destino/fonte)
• Constante / Endereço
![Page 31: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/31.jpg)
Exemplo
![Page 32: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/32.jpg)
Formato J
• op => código da operação
• Endereço => endereço do desvio
![Page 33: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/33.jpg)
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).
![Page 34: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/34.jpg)
Exemplo
![Page 35: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/35.jpg)
Instrução lui
![Page 36: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/36.jpg)
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
![Page 37: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/37.jpg)
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
![Page 38: Revisão Comp-Prog Autor: Fernando de Mesentier Silva](https://reader035.vdocuments.mx/reader035/viewer/2022062512/552fc117497959413d8c88b2/html5/thumbnails/38.jpg)
Referência
Slides da professora Silvanna