Prévia do material em texto
Interrupções e o ciclo de instrução Entrada e Saída (E/S) Montador (assembler) Arquitetura do Conjunto de Instruções Interrupções e o ciclo de instrução Todos os computadores fornecem uma maneira de fazer com que o ciclo normal de busca-decodifica-executa seja interrompido. Estas interrupções podem ser necessárias por diversas razões, incluindo erro de programa, etc. O processador termina a execução da instrução corrente e verifica, no inicio de cada ciclo busca-decodifica-executa, se uma interrupção foi gerada. Interrupções e o ciclo de instrução Ciclo busca-decodifica-executa com verificação de interrupção. Processar a interrupção Executar o ciclo busca- decodifica-executa Foi lançada uma interrupção? NÃOSIM Interrupções e o ciclo de instrução Fluxograma do processo de uma interrupção. Início Sinal de interrupção detectado Salvar variáveis e registradores Buscar endereço da ISR* na tabela de vetores de interrupção Colocar endereço da ISR no PC Desviar para a ISR Início Executar trabalho específico de interrupção Retorno Retornar variáveis e registradores salvos Desviar para o início do ciclo busca- decodifica-executa * Rotinas de serviços de interrupção Entrada e Saída (E/S) O computador, tomado como exemplo, possui dois registradores para tratar de entrada e saída. Um registrador de entrada, contém os dados que estão sendo transferidos de um dispositivo de entrada no computador. O outro, o registrador de saída, contém informação pronta para ser enviada à um dispositivo de saída. Um programa exemplo Programa para somar dois números. Endereço (hexa) Instrução Significado 100 Load 104 Carrega 0023 no AC 101 Add 105 Soma valor hexadecimal que ele encontra no endereço 105 102 Store 106 Armazena o resultado na posição de memória 106 103 Halt Encerra o programa 104 0023 105 FFE9 106 1 000C Uma discussão sobre montadores O que faz um montador (assembler)? O trabalho de um montador é converter a linguagem simbólica (assembly) em linguagem de máquina (que consiste inteiramente de valores binários, ou sequências de “0” e “1”. O montador lê um arquivo fonte (programa simbólico) e produz um arquivo objeto (código de máquina). O que faz um montador (assembler)? Podemos usar rótulos (nomes simples) para identificar ou dar nomes aos endereços de memória particulares, tornando a tarefa de escrever programas simbólicos muito mais simples. Por exemplo, em nosso programa de somar dois números, podemos usar rótulos para indicar um endereço de memória, tornando assim desnecessário saber o endereço de memória exato dos operandos das instruções. O que faz um montador (assembler)? A tabela a seguir ilustra este conceito. Endereço (hexa) Instrução Significado 100 Load X Carrega 0023 no AC 101 Add Y Soma valor hexadecimal que ele encontra no endereço 105 102 Store Z Armazena o resultado na posição de memória 106 103 Halt Encerra o programa 104 (X) 0023 105 (Y) FFE9 106 (Z) 1 000C X, Y e Z: são os rótulos (endereços de memória) Arquitetura do Conjunto de Instruções Opcodes expandidos As instruções em um computador podem precisar de poucos ou muitos bits. É possível fazer alguns opcodes (instruções) curtos, mas ter um meio de prover outros, mais longos, quando necessário. Quando o opcode é curto, vários bits são reservados para conter os operandos (endereços). Arquitetura do Conjunto de Instruções Opcodes expandidos Quando não há necessidade de espaço para operandos (para uma instrução como Halt), todos os bits podem ser usados para o opcode, o que permite instruções distintas. Entre esses limites, existem opcodes mais longos com menos operandos, bem como opcodes mais curtos com mais operandos. Opcode Endereço 2 Endereço 3 Endereço 4 Arquitetura do Conjunto de Instruções Tipos de Instrução Movimentação de dados: Instrução de movimentação de dados são as instruções mais frequentemente usadas. Dados são movidos da memória para registradores, de registradores para registradores e de registradores para a memória. Instrução de movimentação de dados incluem MOVE, LOAD, STORE... Arquitetura do Conjunto de Instruções Tipos de Instrução Operações aritméticas: Operações aritméticas incluem aquelas instruções que usam números inteiros e de ponto flutuante. Instruções aritméticas incluem ADD, SUBTRACT, MULTIPLY... Instruções de lógica booleana: São as instruções AND, NOT, OR... Arquitetura do Conjunto de Instruções Tipos de Instrução Instruções de manipulação de bits: Instruções de deslocamento lógico deslocam bits tanto para a esquerda quanto para direita. Elas incluem instruções SHIFT e ROTATE. Arquitetura do Conjunto de Instruções Tipos de Instrução Instruções de entrada e saída: Uma instrução de entrada (ou leitura) transfere dados de um dispositivo para a memória ou para um registrador específico. Uma instrução de saída (ou escrita) transfere dados de um registrador, ou memória, para um dispositivo específico. Arquitetura do Conjunto de Instruções Tipos de Instrução Instruções para transferência de controle: Instruções de controle são usadas para alterar a sequência normal de execução do programa. Estas instruções incluem desvios, saltos, chamadas de procedimentos, retornos e término do programa. Arquitetura do Conjunto de Instruções Tipos de Instrução Instruções de propósito especial: Estas instruções incluem aquelas usadas para suporte a linguagens de alto nível, gerência de cache, acesso a registrador, etc.