Baixe o app para aproveitar ainda mais
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 * * * *
Compartilhar