Prévia do material em texto
07/08/2021 1 ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Semana 8 Aula Síncrona – Início: 13:03h Prof. Nelson Miguel Betzek nmbetzek@utfpr.edu.br Ciência da Computação Este trabalho está licenciado com uma Licença Creative Commons – Atribuição- NãoComercial-SemDerivações 4.0 Internacional. Representação de Instruções Instrução - Hardware • Refere-se a uma instrução de máquina, que é interpretada e executada diretamente pelo processador; • Diferente de uma instrução em linguagem de alto nível. – precisa ser compilada para uma série de instruções de máquina antes que seja executada. • Quem executa um programa é o hardware; • Um programa em linguagem de alto nível não pode ser executado diretamente pelo hardware. • Compilador transforma (traduz) o programa em linguagem de alto nível em linguagem de máquina. • O programa linguagem de máquina é carregado na memória, para que o hardware possa executá-lo. • A linguagem de máquina é composta de códigos binários, representando: – Instruções; – Endereços; e – Dados. • A linguagem de máquina está totalmente vinculada ao conjunto de instruções da máquina. 07/08/2021 2 Operações do computador • Matemáticas (aritméticas, lógicas, de complemento, de deslocamento...); • Movimentação de dados (memória <--> registrador); • Entrada-saída (leitura e escrita em dispositivos externos - dispositivos de Entrada / Saída); • Controle (desvio da sequência de execução, parar, etc...) Instruções de máquinas • Executar operações aritméticas sobre dois números; • Executar operações lógicas sobre dois números; • Mover um conjunto de bits (um número ou parte) de um ponto para outro do computador; • Desviar a sequência do programa; • Comunicação com algum dispositivo de entrada ou saída de dados. Conjunto de instruções • São todas as possíveis instruções que podem ser interpretadas e executadas por um processador. • Coleção completa de instruções que são entendidas por uma CPU. • Código de máquina. • Binário. • Normalmente, representado por códigos em assembly. Instrução Significado Operação Código Load Carregar no acumulador ACC <-- op 0000 Store Salvar na memória op <-- ACC 0001 Add Somar ACC <-- ACC + op 0010 Sub Subtrair ACC <-- ACC - op 0011 Mult Multiplicar ACC <-- ACC * op 0100 Div Dividir ACC <-- ACC / op 0101 Jmp Desviar CI <-- op 0110 Jz Desviar, se ACC igual zero CI <-- op, se ACC = 0 0111 Jnz Desviar, se ACC não zero CI <-- op, se ACC != 0 1000 Stop/Halt Terminar 1100 Instrução Significado Operação Código Load Carregar no acumulador ACC <-- op 0000 Store Salvar na memória op <-- ACC 0001 Add Somar ACC <-- ACC + op 0010 Sub Subtrair ACC <-- ACC - op 0011 Mult Multiplicar ACC <-- ACC * op 0100 Div Dividir ACC <-- ACC / op 0101 Jmp Desviar CI <-- op 0110 Jz Desviar, se ACC igual zero CI <-- op, se ACC = 0 0111 Jnz Desviar, se ACC não zero CI <-- op, se ACC != 0 1000 Stop/Halt Terminar 1100 • Qual o código binário gerado para processar a instrução Y = Y + X ? • Qual o código binário gerado para processar a instrução Y = Y + X ? • Load 0000 • Add 0010 • Store 0001 • Stop 1100 07/08/2021 3 DRAM • Y = 1000 • X = 1001 • Qual o código binário gerado para processar a instrução Y = Y + X ? operação operando (end. Memória) 1. Load Y 0000 1000 2. Add X 0010 1001 3. Store Y 0001 1000 4. Halt 1100 Variável DRAM (endereço de memória) • W 1000 • X 1001 • Y 1010 • Z 1011 • Qual o código binário gerado para processar a instrução Z = Y + X * W instrução operação operando (end. Memória) 1. . 2. . 3. . ... Representação da instrução • Instruções são representadas por uma sequência de bits, dividida em campos. • Em código de máquina, cada instrução tem um padrão de bits exclusivo. • Para programadores, uma representação simbólica é utilizada. Os opcodes são representados por abreviações: – Ex.: ADD, SUB, MUL, DIV, LOAD, STORE • Operandos também podem ser representados desta maneira: – ADD A,B. Formato de Instrução • O formato de uma instrução normalmente é retangular dividido em campos de bits. opcode operandos FONTEDESTINO opcode FONTEDESTINO FONTE operandos Código de operação (OPCODE) Operando 1 (OP1) OP 2 OP 3 Opcode – O código de operação de uma instrução, abreviado por opcode, é o grupo de bits da instrução que especifica a operação, como por exemplo: • Adição, Subtração, Complemento, Transferência, Comparação. Formato de Instrução • O opcode de uma instrução especifica a operação a ser realizada pelo processador, • Isso inclui o significado de cada operando que segue o opcode: – Valor de uma constante – Endereço de memória – Endereço/nome de um registrador 07/08/2021 4 Formato de Instrução • O número de bits necessários para representar o opcode é função do número total de operações possíveis do conjunto de instruções. • Por exemplo, se o opcode tiver 4 bits, o conjunto de instruções pode realizar 16 operações diferentes. 0000 0001 0010 0011 0100 0101 0111 .... Adição do valor da memória com o acumulador Adição do valor da memória com um dado Adição do acumulador com um dado Subtração do valor da memória com o acumulador Subtração do valor da memória com um dado Subtração do acumulador com um dado .... Operando(s) Código de operação (OPCODE) Operando 1 (OP1) OP 2 OP 3 • é o campo da instrução cujo valor binário sinaliza a localização do dado que será manipulado (processado) pela instrução durante a operação; • Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Operando(s): Código de operação (OPCODE) Operando 1 (OP1) OP 2 OP 3 • um operando pode também indicar um Registrador (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado o dado). – Os operandos fornecem os dados da instrução. • Obs: Existem instruções que não tem operando. Ex.: Instrução HALT (PARE). Exemplos ADD OP1 OP2 => (OP1) <-- (OP1) + (OP2) Soma conteúdo de OP1 e OP2 e armazena o resultado em OP1 ADD OP1 OP2 OP3 => (OP3) <-- (OP1) + (OP2) Soma conteúdo de OP1 e OP2 e armazena o resultado em OP3 ADD OP1 => (ACC)<--(ACC) + (OP1) Soma conteúdo de OP1 e ACC e armazena o resultado em ACC Codificação de Instruções Comando em linguagem de alto nível X = A x B + C - D Comandos em Assembly Instruções em linguagem de Máquina A representação em Assembly e o correspondente valor em binário variam para cada Microprocessador. LDA (LoaD Acumulator) STA (STore Acumulator) Codificação de Instruções Comando em linguagem de alto nível X = A * B + C - D Comandos em Assembly LDA A MUL B ADD C SUB D STA X HLT Instruções em linguagem de Máquina 11000111 11110000 11100000 00001111 00100000 11100000 00011100 01101010 00100100 00000011 11110000 00000000 A representação em Assembly e o correspondente valor em binário variam para cada Microprocessador. LDA (LoaD Acumulator) STA (STore Acumulator) mnemônico