38
Revisão Comp-Prog Autor: Fernando de Mesentier Silva

Revisão Comp-Prog

  • Upload
    iain

  • View
    18

  • Download
    0

Embed Size (px)

DESCRIPTION

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) - PowerPoint PPT Presentation

Citation preview

Page 1: Revisão Comp-Prog

Revisão Comp-Prog

Autor: Fernando de Mesentier Silva

Page 2: Revisão Comp-Prog

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

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

Formato da Instrução

Page 5: Revisão Comp-Prog

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

Codificação das Instruções

Page 7: Revisão Comp-Prog

Esquema do CES

Page 8: Revisão Comp-Prog

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

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

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

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

Endian

MIPS x Intel

Page 13: Revisão Comp-Prog

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

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

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

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

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

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

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

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

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

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

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

Tabela dos Registradores

Page 25: Revisão Comp-Prog

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

Formato das Instruções

Page 27: Revisão Comp-Prog

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

Exemplo

Page 29: Revisão Comp-Prog

Exemplo

Page 30: Revisão Comp-Prog

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

Exemplo

Page 32: Revisão Comp-Prog

Formato J

• op => código da operação

• Endereço => endereço do desvio

Page 33: Revisão Comp-Prog

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

Exemplo

Page 35: Revisão Comp-Prog

Instrução lui

Page 36: Revisão Comp-Prog

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

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

Referência

Slides da professora Silvanna

GOOGLE