Arquitectura de Computadores(ACom)
MEAer
Acetatos das Aulas Teoricas
Versao 4.0 - Portugues
Aula No 03:
Tıtulo: Operandos
Sumario: Pilha. Instrucoes de acesso a memoria. Codificacao das in-strucoes.
2014/2015
Operandos
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 1 / 30
Arquitectura de Computadores(ACom)
Aula Anterior
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 2 / 30
Na aula anterior...
� Tipos de computadores� Arquitectura basica de um computador� Nıveis de abstraccao� Codigo maquina vs linguagem Assembly� Instrucoes Assembly
Road Map
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 3 / 30
Planeamento
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 4 / 30
� PlaneamentoSemana Teórica 1 Teórica 2 Problemas (P) / Laboratório (L)
16-fev a 20-fevCARNAVAL Apresentação da cadeira; Introdução P0: Revisões SD
23-fev a 27-fevL1: Modos de endereçamento
02-mar a 06-marOperações lógicas e aritméticas ISA do P3 P1: Assembly do P3
09-mar a 13-marL2: Instruções Aritméticas e Salto
16-mar a 20-marTécnicas de programação em Assembly Geração do código objecto. L3: Rotinas; Passagem parâmetros
23-mar a 27-marEstrutura de um processador Unidade de processamento
30-mar a 03-abrUnidade de controlo PÁSCOA PÁSCOA
06-abr a 10-abrPÁSCOA L4: IO; Interrupções
13-abr a 17-abrOrganização interna do P3: circuito de controlo Organização interna do P3: microprogramação P3: Micro-programação
20-abr a 24-abrL5: Micro-programação
27-abr a 01-maiDependências dados e de controlo; Conflitos L6: Arduino
04-mai a 08-maiSistema de memória Memórias cache: políticas de substituição L7: Pipelines
11-mai a 15-maiMemórias cache: políticas de escrita P4: Pipeline; Caches
18-mai a 22-maiMemória virtual: TLB L8: Caches
25-mai a 29-maiModos de transferência de dados DMA e Processadores IO P5: Mem. Virtual; Comunicação; IO.
Instruções Assembly; Operandos e modos de endereçamento; Processador P3
Operandos; Pilha; Instruções de acesso à memória; Codificação das instruções.
Periféricos do P3; Interrupções e contagemdotempo no P3
Tradução de linguagemde alto nível paraAssembly
P2: Interrupções; Codificação de Instruções
Controlo microprogramado; Organização interna do P3: circuito de dados
Família Intel x86; Arquitecturas de processadores em pipeline
Arquitecturas de processadores em pipeline; Dependências
Tópicos avançados de arquitectura de computadores
Memória virtual: definições, tabela de páginas hierárquica
Espaços de endereçamento: memória e entradas/saídas
Sumario
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 5 / 30
Hoje:
� Pilha� Instrucoes de acesso a memoria� Codificacao das instrucoes
Bibliografia:
• Seccoes 10.3 e 10.4
Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 6 / 30
Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 7 / 30
� Pilha (Stack): conjunto contıguo de posicoes de memoria cujoacesso e gerido por um registo especial: SP (Stack-Pointer).
◮ Apenas e possıvel aceder ao topo deste conjunto de posicoes:
• Colocar um valor (Push);• Retirar um valor (Pop);
� O registo SP aponta para o topo da pilha.
Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 8 / 30
� O registo SP aponta para o topo da pilha.
◮ Quando um novo valor e guardado na pilha (Push), ovalor do registo SP e incrementado;
◮ Quando um valor e retirado da pilha (Pop), o valor doregisto SP e decrementado.
FF00h
FF01h
FF02h
FF03h
PUSH R1 POP R3
00AAh
00BBh
00CCh
0055h
00CCh
00BBh
00AAh
FF02h FF03h FF02h
00AAh
00BBh
00CCh
SP SP SP
Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 9 / 30
� Para que serve a pilha?
◮ Espaco de armazenamento temporario;◮ Passagem de parametros para sub-rotinas (veremos depois).
Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 9 / 30
� Para que serve a pilha?
◮ Espaco de armazenamento temporario;◮ Passagem de parametros para sub-rotinas (veremos depois).
� Restricoes:
◮ Deve utilizar uma zona de memoria que nao sejautilizada por mais nenhum programa/sub-rotina;Como? → Definicao conveniente do valor inicial doregisto SP (definindo assim a base da pilha).
FF00h
FF01h
FF02h
FF03h
PUSH R1 POP R3
00AAh
00BBh
00CCh
0055h
00CCh
00BBh
00AAh
FF02h FF03h FF02h
00AAh
00BBh
00CCh
SP SP SP
Implementacao da Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 10 / 30
� Existem varias formas de implementar a pilha, dependendoda arquitectura do processador adoptada;
Implementacao da Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 10 / 30
� Existem varias formas de implementar a pilha, dependendoda arquitectura do processador adoptada;
� Direccao de crescimento da pilha:
◮ PUSH: incrementa o SP◮ POP: decrementa o SP
ou ...◮ PUSH: decrementa o SP [P3]◮ POP: incrementa o SP [P3]
Implementacao da Pilha
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 10 / 30
� Existem varias formas de implementar a pilha, dependendoda arquitectura do processador adoptada;
� Direccao de crescimento da pilha:
◮ PUSH: incrementa o SP◮ POP: decrementa o SP
ou ...◮ PUSH: decrementa o SP [P3]◮ POP: incrementa o SP [P3]
� Actualizacao do registo SP:
◮ Antes da execucao do PUSH◮ Aponta para a ultima posicao do stack
ou ...◮ Apos a execucao do PUSH [P3]◮ Aponta para a proxima posicao livre [P3]
Instrucoes de Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 11 / 30
Tipos de Instrucoes Assembly (revisoes)
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 12 / 30
� Transferencia de Dados
◮ Transferem informacao de um local (registo, posicao dememoria ou porto de entrada/saıda) para outro, sem alterar ainformacao original.
• Exemplo: MOV R1,M[0040h]
� Manipulacao de Dados
◮ Aplicam um operador aritmetico ou logico ao(s) operando(s),especificado(s) pela sua localizacao, e guardam o resultado damesma.
• Exemplos: ADD R1,M[00B0h] ; SHL R3,2
� Controlo
◮ Permitem alterar a sequencia normal de instrucoes e definirqual a proxima instrucao a ser executada.
• Exemplo: JMP 00CCh
Campos de uma Instrucao Assembly (revisoes)
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 13 / 30
� Codigo de Operacao (Opcode):
◮ Especifica a instrucao a executar;
� Localizacao dos Operandos:
◮ Indicacao sobre onde (registo ou memoria) ir buscar osdados de entrada e guardar o resultado(modo de enderecamento);
� Especificacao dos Operandos:
◮ Indice do registo a usar ou endereco de memoria aaceder.
Localizacao dos Operandos (revisoes)
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 14 / 30
� Localizacao dos Operandos:
◮ Registos internos do processador:
• PC - Program Counter• SP - Stack Pointer• R0-R7 - Registos de uso geral (Rx)
◮ Constante (W), especificada na propria instrucao.◮ Posicao de memoria (M[W]).◮ Porto de entrada/saıda.
Definida pelo modo de enderecamento.
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Idade R1 = ?
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Idade R1 = 00A1h
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Idade R1 = 00A1h
MOV R2, M[Idade] R2 = ?
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Idade R1 = 00A1h
MOV R2, M[Idade] R2 = 23h
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Nome R1 = ?
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Nome R1 = 00A2h
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Nome R1 = 00A2h
MOV R2, M[Nome] R2 = ?
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, Nome R1 = 00A2h
MOV R2, M[Nome] R2 = 41h = ’A’
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, R0
MOV R2, M[R1+Nome] R2 = ?
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, R0
MOV R2, M[R1+Nome] R2 = 41h = ’A’
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, R0
MOV R2, M[R1+Nome] R2 = 41h = ’A’
INC R1
MOV R2, M[R1+Nome] R2 = ?
Acesso a Memoria
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 15 / 30
� Exemplo:
Idade WORD 23h
Nome STR ’Antonio’
Numero WORD 321h
· · · 00AAh
Numero 0321h 00A9h
o 00A8h
i 00A7h
n 00A6h
o 00A5h
t 00A4h
n 00A3h
Nome A 00A2h
Idade 0023h 00A1h
· · · 00A0h
� Qual o resultado das seguintes instrucoes?
MOV R1, R0
MOV R2, M[R1+Nome] R2 = 41h = ’A’
INC R1
MOV R2, M[R1+Nome] R2 = 6Eh = ’n’
Modos de Enderecamento
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 16 / 30
Modo de enderecamento Operacao
Por registo op ← Rx
Indirecto por registo op ← M[Rx]
Imediato op ← W
Directo op ← M[W]
Indexado op ← M[Rx+W]
Relativo op ← M[PC+W]
Baseado op ← M[SP+W]
Indirecto op ← M[M[W]]
Duplamente indirecto por registo op ← M[M[Rx]]
Implıcito
ATENCAO: No P3, apenas um dos operandos pode estarlocalizado em memoria.
Codificacao das Instrucoes
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 17 / 30
Especificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 18 / 30
� Uma instrucao e definida por:
◮ Tipo de operacao (opcode);◮ Operandos;◮ Localizacao do resultado.
Especificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 18 / 30
� Uma instrucao e definida por:
◮ Tipo de operacao (opcode);◮ Operandos;◮ Localizacao do resultado.
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 19 / 30
� Exemplo de um processador:
◮ 8 registos de 16 bits: R0 a R7◮ Memoria com 216 palavras de 16 bits◮ Portos de entrada/saıda mapeados em memoria
(memory-mapped IO)◮ 40 instrucoes
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 19 / 30
� Exemplo de um processador:
◮ 8 registos de 16 bits: R0 a R7◮ Memoria com 216 palavras de 16 bits◮ Portos de entrada/saıda mapeados em memoria
(memory-mapped IO)◮ 40 instrucoes
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 19 / 30
� Exemplo de um processador:
◮ 8 registos de 16 bits: R0 a R7◮ Memoria com 216 palavras de 16 bits◮ Portos de entrada/saıda mapeados em memoria
(memory-mapped IO)◮ 40 instrucoes
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
◮ Codigo da operacao: ⌈log2 40⌉ = 6 bits
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 19 / 30
� Exemplo de um processador:
◮ 8 registos de 16 bits: R0 a R7◮ Memoria com 216 palavras de 16 bits◮ Portos de entrada/saıda mapeados em memoria
(memory-mapped IO)◮ 40 instrucoes
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
◮ Modo de enderecamento: 2 bits(os primeiros 4 modos da tabela...)
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 19 / 30
� Exemplo de um processador:
◮ 8 registos de 16 bits: R0 a R7◮ Memoria com 216 palavras de 16 bits◮ Portos de entrada/saıda mapeados em memoria
(memory-mapped IO)◮ 40 instrucoes
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
◮ Identificacao do registo: log2 8 = 3 bits
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 19 / 30
� Exemplo de um processador:
◮ 8 registos de 16 bits: R0 a R7◮ Memoria com 216 palavras de 16 bits◮ Portos de entrada/saıda mapeados em memoria
(memory-mapped IO)◮ 40 instrucoes
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
◮ Endereco: log2 216 = 16 bits
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 20 / 30
� Pergunta: Quantos bits sao necessarios para codificar umainstrucao?
◮ Codigo da operacao: ⌈log2 40⌉ = 6 bits◮ Modo de enderecamento: 2 bits◮ Identificacao do registo: log2 8 = 3 bits◮ Endereco: log2 2
16 = 16 bits
◮ TOTAL = 69 bits ≈ 5 palavras de 16 bits
Resultado Operando 1 Operando 2Codigo Modo Reg Ender Modo Reg Ender Modo Reg Ender
6 2 3 16 2 3 16 2 3 16
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 21 / 30
� Exemplo:
ADD R1, M[N1], M[N2]
ADD R1, R1, M[N3]
NEG M[N4], R1
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 21 / 30
� Exemplo:
ADD R1, M[N1], M[N2]
ADD R1, R1, M[N3]
NEG M[N4], R1
TOTAL: 15 palavras para codificar 3 instrucoes!
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 21 / 30
� Exemplo:
ADD R1, M[N1], M[N2]
ADD R1, R1, M[N3]
NEG M[N4], R1
TOTAL: 15 palavras para codificar 3 instrucoes!
� Problemas:
◮ Programas (ling. maquina) ocupam mais memoria;◮ Programas mais lentos.
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 21 / 30
� Exemplo:
ADD R1, M[N1], M[N2]
ADD R1, R1, M[N3]
NEG M[N4], R1
TOTAL: 15 palavras para codificar 3 instrucoes!
� Problemas:
◮ Programas (ling. maquina) ocupam mais memoria;◮ Programas mais lentos.
� Compensa a flexibilidade?
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 22 / 30
� Alternativa?
◮ Restringir o no de operandos e os modos deenderecamento;
◮ Permitir a existencia de instrucoes com modos deenderecamento mais limitados.
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 22 / 30
� Alternativa?
◮ Restringir o no de operandos e os modos deenderecamento;
◮ Permitir a existencia de instrucoes com modos deenderecamento mais limitados.
� Solucao mais comum:
◮ Obrigar a que o resultado da operacao seja guardado namesma localizacao do primeiro operando [P3]
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 22 / 30
� Alternativa?
◮ Restringir o no de operandos e os modos deenderecamento;
◮ Permitir a existencia de instrucoes com modos deenderecamento mais limitados.
� Solucao mais comum:
◮ Obrigar a que o resultado da operacao seja guardado namesma localizacao do primeiro operando [P3]
◮ Obrigar a que pelo menos um dos operandos esteja emregisto [P3]
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 22 / 30
� Alternativa?
◮ Restringir o no de operandos e os modos deenderecamento;
◮ Permitir a existencia de instrucoes com modos deenderecamento mais limitados.
� Solucao mais comum:
◮ Obrigar a que o resultado da operacao seja guardado namesma localizacao do primeiro operando [P3]
◮ Obrigar a que pelo menos um dos operandos esteja emregisto [P3]
Codigo Direccao Modo Reg Reg Ender
6 1 2 3 3 16
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 23 / 30
Codigo Direccao Modo Reg Reg Ender
6 1 2 3 3 16
� Bit de direccao: indica se o modo de enderecamentosem restricoes e aplicado ao primeiro ou ao segundooperandoExemplos:
◮ ADD R2, M[R1+N1] Direccao=0◮ ADD M[R1+N1], R2 Direccao=1
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 23 / 30
Codigo Direccao Modo Reg Reg Ender
6 1 2 3 3 16
� Bit de direccao: indica se o modo de enderecamentosem restricoes e aplicado ao primeiro ou ao segundooperandoExemplos:
◮ ADD R2, M[R1+N1] Direccao=0◮ ADD M[R1+N1], R2 Direccao=1
� Cada instrucao ocupa 2 palavras de 16 bits
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 23 / 30
Codigo Direccao Modo Reg Reg Ender
6 1 2 3 3 16
� Bit de direccao: indica se o modo de enderecamentosem restricoes e aplicado ao primeiro ou ao segundooperandoExemplos:
◮ ADD R2, M[R1+N1] Direccao=0◮ ADD M[R1+N1], R2 Direccao=1
� Cada instrucao ocupa 2 palavras de 16 bits� Nao e possıvel representar uma instrucao do tipo:
◮ ADD R1, M[N1], M[N2]
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 24 / 30
� Exemplo:
MOV R1, M[N1]
ADD R1, M[N2]
ADD R1, M[N3]
NEG R1
MOV M[N4], R1
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 24 / 30
� Exemplo:
MOV R1, M[N1]
ADD R1, M[N2]
ADD R1, M[N3]
NEG R1
MOV M[N4], R1
Apenas 10 palavras de 16 bits para codificar 5 instrucoes
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 24 / 30
� Exemplo:
MOV R1, M[N1]
ADD R1, M[N2]
ADD R1, M[N3]
NEG R1
MOV M[N4], R1
Apenas 10 palavras de 16 bits para codificar 5 instrucoes
� Na pratica... usam-se mais do que um formato para codificarinstrucoes: [P3]
◮ 1 palavra, quando todos os operandos estao em registos◮ 2 palavras, quando e necessario especificar uma
constante (ex: modos de enderecamento imediato ouindexado).
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 25 / 30
� Exemplo:
MOV R1, M[N1]
ADD R1, M[N2]
ADD R1, M[N3]
NEG R1
MOV M[N4], R1
Agora: 9 palavras de 16 bits para codificar 5 instrucoes
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 26 / 30
� Processadores do tipo Load/Store
◮ Todas as operacoes logicas e aritmeticas sao realizadas entreregistos;
◮ Excepcao - duas unicas instrucoes que acedem a memoria:
• Load
• Store
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 26 / 30
� Processadores do tipo Load/Store
◮ Todas as operacoes logicas e aritmeticas sao realizadas entreregistos;
◮ Excepcao - duas unicas instrucoes que acedem a memoria:
• Load
• Store
Exemplos de codificacao:
◮ Operacao aritmetica (ex: ADD R1, R2, R3):
Codigo Reg Reg Reg
6 3 3 3
◮ Operacao de acesso a memoria (ex: LOAD R1, M[Lista]):
Codigo Reg Ender
6 3 16
Codificacao de uma Instrucao
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 27 / 30
� Processadores do tipo Load/Store
◮ Vantagens:
• Mais eficientes;
◮ Desvantagens:
• Torna-se necessario carregar todos os operandos emregistos antes da realizacao da operacao.
LOAD R1, M[N1]
LOAD R2, M[N2]
LOAD R3, M[N3]
ADD R4, R1, R2
ADD R4, R4, R3
NEG R4, R4
STORE M[N4], R4
11 palavras para codificar 7 instrucoes
Proxima Aula
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 28 / 30
Proxima Aula
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 29 / 30
� Codigos de representacao� Representacao de valores inteiros� Representacao de valores fraccionarios
◮ Vırgula fixa◮ Vırgula flutuante
� Instrucoes logicas e aritmeticas do P3
Nota de Agradecimento
Pilha
Instrucoes de Acessoa Memoria
Codificacao dasInstrucoes
Proxima Aula
Prof. Nuno Roma ACom 2014/15 (MEAer) - DEEC-IST 30 / 30
Agradecimento
Algumas paginas desta apresentacao foram extraidas de:
[1] Jose Carlos Monteiro, “Arquitectura de Computadores”, InstitutoSuperior Tecnico (IST), Universidade Tecnica de Lisboa, Portugal,2010.