Buscar

aula17 conjunto instrucoes

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

*
*
Sistemas de Computação I
Centro de Ciências Computacionais – C3 - FURG
Aula 17
Conjunto de Instruções 
*
*
Conversão
Modificam o formato dos dados, utilizam tabelas de conversão.
Exemplo:
Conversão de binário para decimal
*
*
Entrada/ Saída
Podem ser instruções específicas para E/S
Instruções de movimento de dados (mapeamento de memória) 
Podem ser executadas por um controlador separado (DMA)
*
*
Controle do Sistema
Instruções privilegiadas.
Para uso do sistema operacional.
Geralmente manipulam registradores de controle.
CPU precisa estar em estados específicos
Ring 0 no 80386+
Modo Kernel
*
*
Transferência de Controle
Alteram a execução sequêncial do programa. Podem ser desvios, saltos ou chamadas de rotinas.
Exemplos:
JUMP
JSR
CALL
RETURN
HALT
*
*
Transferência de Controle
Desvio (Branch)
Incondicional: altera o endereço da próxima instrução determinada
 ( PC <- endereço)
Condicionais: se condição verdadeira, altera o endereço da próxima instrução 
SE (condição) PC <- endereço
SENÃO PC <- PC +1
Exemplo:
Desvia para endereço_x se o resultado é zero
*
*
Desvio Condicionais – operação ADD
Com 2 bits de controle, 4 resultados possíveis: (ZERO, POSITIVO, NEGATIVO, OVERFLOW) 
4 tipos de desvio:
BRP X
BRN X
BRZ X
BRO X
*
*
Transferência de Controle
Salto (Skip)
Incrementa e salta se zero (increment and skip if zero)
…
 …
 …
 ISZ R1
 Branch 301
 ADD A
Enquanto R1 não for Zero, incrementa R1,
E realiza a instrução da posição seguinte (305) – que neste exemplo, faz com que o programa retorne para a posição 301, formando um loop.
Quando R1 = 0, pula a instrução da posição 305 e executa a instrução da posição 306
*
*
Transferência de Controle
Chamada de Procedimentos
Instruções de chamada 
Instruções de retorno
CALL X : 
 Rn <- PC +1
 PC <- X
*
*
Chamada de Procedimentos
Endereço de retorno armazenado
Registradores
Início da área de memória do procedimento
Topo da pilha
Passagem de Parâmetros
Registradores
Memória 
Pilha: o conjunto de dados (parâmetros + endereços) é chamado registro de ativação
Impedem a chamada de procedimentos recursivos
Impedem a chamada de procedimentos recursivos
*
*
Instruções de chamada de procedimento
Procedimento = subprograma incorporado em um programa maior
Pode ser invocado (chamado) em qualquer ponto do programa
Instrui o processador a executar todo o procedimento e então, retornar ao ponto em que ocorreu a chamada.
 economia e modularidade
*
*
Controle de procedimentos
2 instruções de desvio:
Instrução de chamada: desvia a execução da instrução corrente para o início do procedimento.
Instrução de retorno: provoca o retorno da execução do procedimento para o endereço em que ocorreu a chamada.
*
*
Instrução de Desvio
Procedimentos Aninhados
*
*
Observações
Um procedimento pode ser chamado de mais de um ponto do programa.
Uma chamada a um procedimento pode ocorrer dentro de um procedimento. Isso possibilita o aninhamento de procedimentos, até uma profundidade arbitrária.
A cada chamada de procedimento corresponde um retorno, para o programa que efetuou a chamada.
*
*
Pilhas
Conjunto ordenado de elementos, dos quais apenas um pode ser acessado em dado instante (TOPO DA PILHA)
LIFO (last-in-first-out)
Operações básicas sobre pilhas:
PUSH
POP
Operação unária: operação sobre o elemento do topo da pilha, substitui o elemento do topo pelo resultado.
Operação binária: efetua a operação sobre os dois elementos no topo da pilha. Retira os dois elementos do topo da pilha. Coloca o resultado da operação no topo da pilha.
Uso de Pilha
*
*
Endereço de retorno
Comumente armazenado:
Em um registrador
CALL X :
RN <- PC+1
PC <- X
No início da área de memória do procedimento
CALL X:
X <- PC +1
PC <- X+1
No topo da pilha 
*
*
Endereço de retorno
Comumente armazenado:
Em um registrador
CALL X :
RN <- PC+1
PC <- X
No início da área de memória do procedimento
CALL X:
X <- PC +1
PC <- X+1
No topo da pilha 
*
*
Passagem de parâmetros
Registradores
Memória
Pilha
Registro de Ativação: Conjunto de dados armazenados na pilha em uma chamada de procedimentos, incluindo parametros e endereço de retorno.
Implementação da Pilha
Apontador de topo da pilha
Base da pilha (normalmente no endereço mais alto do bloco reservado para a pilha)
Limite da pilha (no endereço mais baixo)
*
*
Linguagem de Montagem
Considere um comando simples: N =I+J+K
Conteúdo inicial: I=2, J=3 e K=4
Programa carregado a partir da posição de memória de endereço 101 (h)
4 variáveis armazenadas a partir do endereço 201.
O programa consiste de 4 instruções
Carrega o conteúdo da posição de endereço 201 em AC
Adiciona o conteúdo da posição de endereço 202 a AC
Adiciona o conteúdo da posição de endereço 203 a AC
Armazena o conteúdo de AC na posição de endereço 204
*
*
Tedioso e propenso a erros!
*
*
Melhoria: escrever em notação hexadecimal:
*
*
Um pouco mais fácil: linguagem simbólica
*
*
Ainda é necessário:
Fornecer endereço absoluto para cada palavra
Se algum dia alterar o programa, os endereços de todas as palavras subsequentes terão de ser alterados.
Solução: Usar endereços simbólicos.
*
*
Linguagem de Montagem
Traduzidos para linguagem de máquina por um montador.
*
*
Atividade 
Procurar pela ISA - Instruction set Architecture dos processadores
Pentium 
ARM
*
*
Exercícios de Fixação
23- O que são operações de conversão? 
24- O que são operações de controle do sistema? 
25- Qual a diferença conceitual entre saltos e desvios? 
26- Defina desvio incondicional e desvio condicional. 
27- Explique o funcionamento da instrução ISZ (Increment and skip IF zero). Sugira uma utilização para ela. 
*
*
28- Quais as 2 instruções necessárias para realizar chamada de procedimentos? 
29- Como é realizada a chamada de procedimentos aninhados com pilha? Porque pilhas são preferências à registradores e memória para gerenciar a chamada de procedimentos e a passagem de parâmetros?
30 - Resolver os exercícios 9.8, 9.9, 9.10, 9.14, 9.16, 9.17 e 9.19 do Stallings ( 5 o Edição)
*
22
23
24
25
25
*
*
*
*

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando