·
Cursos Gerais ·
Organização de Computadores
Send your question to AI and receive an answer instantly
Recommended for you
73
Linguagem de Máquina e de Montagem na Arquitetura de Computadores
Organização de Computadores
UFS
53
Registradores e Memória em Arquitetura de Computadores
Organização de Computadores
UFS
3
Prova Organização de Computadores - Unip
Organização de Computadores
UNIP
2
Atividade de Arquitetura de Computadores: Montagem de Circuito Lógico e Tabela Verdade
Organização de Computadores
UNOPAR
8
Prova1_ftc
Organização de Computadores
UFOP
6
Ptis Senac
Organização de Computadores
UMG
4
prova - Organização de Computadores - Unip
Organização de Computadores
UMG
8
Prova1_ftc
Organização de Computadores
UFOP
Preview text
Conjunto de instruções da arquitetura Arquitetura de Computadores Bruno Prado Departamento de Computação UFS Introdução O que é o conjunto de instruções da arquitetura Um conjunto de instruções da arquitetura é o idioma que um computador é capaz de interpretar e executar o comportamento Instruções x86 Processador x86 As instruções são equivalentes às palavras de um texto e cada arquitetura possui pelo menos uma linguagem que o processador é capaz de entender Instruction Set Architecture ISA C 2022 Bruno Prado Departamento de Computação UFS 2 77 Introdução O que é o conjunto de instruções da arquitetura Um conjunto de instruções da arquitetura é o idioma que um computador é capaz de interpretar e executar o comportamento Instruções x86 Processador x86 As instruções são equivalentes às palavras de um texto e cada arquitetura possui pelo menos uma linguagem que o processador é capaz de entender Instruction Set Architecture ISA C 2022 Bruno Prado Departamento de Computação UFS 3 77 Introdução O que é o conjunto de instruções da arquitetura Um conjunto de instruções da arquitetura é o idioma que um computador é capaz de interpretar e executar o comportamento Instruções x86 Processador x86 As instruções são equivalentes às palavras de um texto e cada arquitetura possui pelo menos uma linguagem que o processador é capaz de entender Instruction Set Architecture ISA C 2022 Bruno Prado Departamento de Computação UFS 4 77 Introdução Como dizer ao computador o que deve ser feito É preciso conhecer a linguagem de máquina Códigos para operações Parâmetros de entrada e de saída Comportamento de cada operação Carregar o programa na memória Arquitetura Poxim 32 bits Didática Hipotética Simples C 2022 Bruno Prado Departamento de Computação UFS 5 77 Introdução Como dizer ao computador o que deve ser feito É preciso conhecer a linguagem de máquina Códigos para operações Parâmetros de entrada e de saída Comportamento de cada operação Carregar o programa na memória Arquitetura Poxim 32 bits Didática Hipotética Simples C 2022 Bruno Prado Departamento de Computação UFS 6 77 Introdução Como as informações são representadas Cada nibble 4 bits corresponde a um dígito hexadecimal base 16 Decimal Binário Hexadecimal 010 00002 016 110 00012 116 210 00102 216 1310 11012 D16 1410 11102 E16 1510 11112 F16 C 2022 Bruno Prado Departamento de Computação UFS 7 77 Introdução Como é organizada a memória Os dados são divididos em bytes Endereço Byte 0x0000 B1 0x0001 B2 0x0002 B3 0xFFFE Bn1 0xFFFF Bn 4 Gib n 232 4294967296 bytes C 2022 Bruno Prado Departamento de Computação UFS 8 77 Introdução Como é organizada a memória Os dados são divididos em bytes Endereço Byte 0x0000 B1 0x0001 B2 0x0002 B3 0xFFFE Bn1 0xFFFF Bn 4 Gib n 232 4294967296 bytes C 2022 Bruno Prado Departamento de Computação UFS 9 77 Introdução Como armazenar dados com mais de 1 byte Mais significativo primeiro bigendian Menos significativo primeiro littleendian Endereço Byte 0x00 0xAA 0x01 0xBB 0x02 0xCC 0x03 0xDD Bigendian Endereço Byte 0x00 0xDD 0x01 0xCC 0x02 0xBB 0x03 0xAA Littleendian 0xAABBCCDD C 2022 Bruno Prado Departamento de Computação UFS 10 77 Introdução Como é feito o endereçamento na memória Definido pelo alinhamento dos dados Endereço 0x0000 B1 B2 0x0002 B3 B4 0xFFFC Bn3 Bn2 0xFFFE Bn1 Bn Dado 16 bits 2 bytes C 2022 Bruno Prado Departamento de Computação UFS 11 77 Introdução Como é feito o endereçamento na memória Definido pelo alinhamento dos dados Endereço 0x0000 B1 B2 B3 B4 0x0004 B5 B6 B7 B8 0xFFF8 Bn7 Bn6 Bn5 Bn4 0xFFFC Bn3 Bn2 Bn1 Bn Dado 32 bits 4 bytes C 2022 Bruno Prado Departamento de Computação UFS 12 77 Fluxo de execução O processador executa as instruções em um ciclo infinito de buscadecodificaçãoexecução 1 Buscar instrução armazenada na memória 2 Decodificar a operação da instrução 3 Obter os operandos necessários 4 Executar o comportamento 5 Armazenar os resultados 6 Voltar para o passo 1 C 2022 Bruno Prado Departamento de Computação UFS 13 77 Fluxo de execução Ciclo de buscadecodificaçãoexecução A programação armazenada em memória é indexada pelo contador de programa PC que controla o fluxo de execução da aplicação Processador Memória PC C 2022 Bruno Prado Departamento de Computação UFS 14 77 Operações e operandos Quais são as operações principais Aritméticas Bit a bit e lógica Controle do fluxo de execução Como os operandos são utilizados Registradores Imediatos ou constantes Armazenados na memória C 2022 Bruno Prado Departamento de Computação UFS 15 77 Operações e operandos Quais são as operações principais Aritméticas Bit a bit e lógica Controle do fluxo de execução Como os operandos são utilizados Registradores Imediatos ou constantes Armazenados na memória C 2022 Bruno Prado Departamento de Computação UFS 16 77 Operações aritméticas Principais operações aritméticas Adição Subtração Multiplicação Divisão Deslocamento C 2022 Bruno Prado Departamento de Computação UFS 17 77 Operações aritméticas Instrução de adição Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de adição 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 add x a b add y b x C 2022 Bruno Prado Departamento de Computação UFS 18 77 Operações aritméticas Instrução de adição Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de adição 8 x a 2 9 y b 3 10 Retorno sem erros 11 return 0 12 addi x a 2 addi y b 3 C 2022 Bruno Prado Departamento de Computação UFS 19 77 Operações aritméticas Instrução de subtração Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de subtração 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 sub x a b sub y b x C 2022 Bruno Prado Departamento de Computação UFS 20 77 Operações aritméticas Instrução de subtração Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de subtração 8 x a 5 9 y b 8 10 Retorno sem erros 11 return 0 12 subi x a 5 subi y b 8 C 2022 Bruno Prado Departamento de Computação UFS 21 77 Operações aritméticas Instrução de multiplicação Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de multiplicação 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 mul x a b mul y b x C 2022 Bruno Prado Departamento de Computação UFS 22 77 Operações aritméticas Instrução de multiplicação Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de multiplicação 8 x a 3 9 y b 9 10 Retorno sem erros 11 return 0 12 muli x a 3 muli y b 9 C 2022 Bruno Prado Departamento de Computação UFS 23 77 Operações aritméticas Instrução de divisão Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de divisão 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 div x a b div y b x C 2022 Bruno Prado Departamento de Computação UFS 24 77 Operações aritméticas Instrução de divisão Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de divisão 8 x a 3 9 y b 7 10 Retorno sem erros 11 return 0 12 divi x a 3 divi y b 7 C 2022 Bruno Prado Departamento de Computação UFS 25 77 Operações aritméticas Instruções de deslocamento Direita 2 e esquerda 2 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 int32t x y a 2 b 5 7 Operações de deslocamento 8 x a 1 9 y b 2 10 Retorno sem erros 11 return 0 12 sra x a 1 sla y b 2 C 2022 Bruno Prado Departamento de Computação UFS 26 77 Operações aritméticas Instruções com operandos em memória Carregamento dos dados para registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t x 8 y 13 7 Operações de aritméticas 8 x x 5 9 y y x 10 Retorno sem erros 11 return 0 12 l32 x 0x40 l32 y 0x41 subi x x 5 div y y x s32 0x40 x s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 27 77 Operações aritméticas Instruções com operandos em memória Visualização dos dados Endereço Memória Variável 0x00000100 8 x 0x00000104 13 y C 2022 Bruno Prado Departamento de Computação UFS 28 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 29 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 30 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 31 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 32 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 33 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 34 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 35 77 Operações aritméticas Instruções com operandos em memória Visualização dos resultados Endereço Memória Variável 0x00000100 3 x 0x00000104 4 y C 2022 Bruno Prado Departamento de Computação UFS 36 77 Operações bit a bit Principais operações bit a bit E and Ou or Complemento not Ouexclusivo xor Deslocamento lógico C 2022 Bruno Prado Departamento de Computação UFS 37 77 Operações bit a bit Instruções and or xor not e deslocamento 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t x 13 y 21 7 Variáveis em registradores 8 uint32t a b c d e 9 Operações bit a bit 10 a x y 11 b x y 12 c x y 13 d x 14 e x y 15 Retorno sem erros 16 return 0 17 l32 x 0x40 l32 y 0x41 and a x y or b x y xor c x y not d x srl e x y C 2022 Bruno Prado Departamento de Computação UFS 38 77 Operações de controle de fluxo Controle do fluxo de execução Chamadas de funções e procedimentos Controles condicionais e iterativos C 2022 Bruno Prado Departamento de Computação UFS 39 77 Operações de controle de fluxo Chamadas de funções e procedimentos Quando é ligado ou reiniciado o sistema começa a executar a programação armazenada em memória Cada arquitetura define um valor inicial para o contador de programa PC que aponta para as rotinas de inicialização do software bootloader Processador Memória PC C 2022 Bruno Prado Departamento de Computação UFS 40 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main 1 Função principal 2 int main 3 Retorno sem erros 4 return 0 5 bun 0x7 int 0 C 2022 Bruno Prado Departamento de Computação UFS 41 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main Endereço Instrução 0x00000000 bun 7 0x00000020 int 0 C 2022 Bruno Prado Departamento de Computação UFS 42 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main Endereço Instrução 0x00000000 bun 7 0x00000020 int 0 C 2022 Bruno Prado Departamento de Computação UFS 43 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main Endereço Instrução 0x00000000 bun 7 0x00000020 int 0 C 2022 Bruno Prado Departamento de Computação UFS 44 77 Operações de controle de fluxo Controle condicional Sentença ifelse 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t a b 7 Controle condicional 8 ifa b a 11 9 else a 0 10 b a 5 11 Retorno sem erros 12 return 0 13 bun 0x7 l32 a 0x40 l32 b 0x41 cmp a b bne 0x2 addi a a 11 bun 0x1 xor a a a muli b a 5 s32 0x40 a s32 0x41 b int 0 C 2022 Bruno Prado Departamento de Computação UFS 45 77 Operações de controle de fluxo Controle condicional Visualização dos dados Endereço Memória Variável 0x00000100 0 a 0x00000104 0 b C 2022 Bruno Prado Departamento de Computação UFS 46 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 47 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 48 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 49 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 50 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 51 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 52 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 53 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 54 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 55 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 56 77 Operações de controle de fluxo Controle condicional Visualização dos resultados Endereço Memória Variável 0x00000100 11 a 0x00000104 55 b C 2022 Bruno Prado Departamento de Computação UFS 57 77 Operações de controle de fluxo Controle iterativo Sentença while 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variável em memória 6 uint32t a 3 7 Controle iterativo 8 whilea 0 9 a 10 11 Retorno sem erros 12 return 0 13 bun 0x7 l32 a 0x40 cmpi a 0 beq 0x2 subi a a 1 bun 0x4 s32 0x40 a int 0 C 2022 Bruno Prado Departamento de Computação UFS 58 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 59 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 60 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 61 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 62 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 63 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 64 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 65 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 66 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 67 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 68 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 69 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 70 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 71 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 72 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 73 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 74 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 0 a C 2022 Bruno Prado Departamento de Computação UFS 75 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 0 a C 2022 Bruno Prado Departamento de Computação UFS 76 77 Exercício Faça a tradução do código fonte abaixo para o seu respectivo código de montagem equivalente Utilize as instruções e o endereçamento vistos Simule a execução passo a passo a passo 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t a i 3 7 Controle condicional 8 ifi 3 i 5 9 Controle iterativo 10 whilei 0 11 a a i 12 13 Retorno sem erros 14 return 0 15 C 2022 Bruno Prado Departamento de Computação UFS 77 77
Send your question to AI and receive an answer instantly
Recommended for you
73
Linguagem de Máquina e de Montagem na Arquitetura de Computadores
Organização de Computadores
UFS
53
Registradores e Memória em Arquitetura de Computadores
Organização de Computadores
UFS
3
Prova Organização de Computadores - Unip
Organização de Computadores
UNIP
2
Atividade de Arquitetura de Computadores: Montagem de Circuito Lógico e Tabela Verdade
Organização de Computadores
UNOPAR
8
Prova1_ftc
Organização de Computadores
UFOP
6
Ptis Senac
Organização de Computadores
UMG
4
prova - Organização de Computadores - Unip
Organização de Computadores
UMG
8
Prova1_ftc
Organização de Computadores
UFOP
Preview text
Conjunto de instruções da arquitetura Arquitetura de Computadores Bruno Prado Departamento de Computação UFS Introdução O que é o conjunto de instruções da arquitetura Um conjunto de instruções da arquitetura é o idioma que um computador é capaz de interpretar e executar o comportamento Instruções x86 Processador x86 As instruções são equivalentes às palavras de um texto e cada arquitetura possui pelo menos uma linguagem que o processador é capaz de entender Instruction Set Architecture ISA C 2022 Bruno Prado Departamento de Computação UFS 2 77 Introdução O que é o conjunto de instruções da arquitetura Um conjunto de instruções da arquitetura é o idioma que um computador é capaz de interpretar e executar o comportamento Instruções x86 Processador x86 As instruções são equivalentes às palavras de um texto e cada arquitetura possui pelo menos uma linguagem que o processador é capaz de entender Instruction Set Architecture ISA C 2022 Bruno Prado Departamento de Computação UFS 3 77 Introdução O que é o conjunto de instruções da arquitetura Um conjunto de instruções da arquitetura é o idioma que um computador é capaz de interpretar e executar o comportamento Instruções x86 Processador x86 As instruções são equivalentes às palavras de um texto e cada arquitetura possui pelo menos uma linguagem que o processador é capaz de entender Instruction Set Architecture ISA C 2022 Bruno Prado Departamento de Computação UFS 4 77 Introdução Como dizer ao computador o que deve ser feito É preciso conhecer a linguagem de máquina Códigos para operações Parâmetros de entrada e de saída Comportamento de cada operação Carregar o programa na memória Arquitetura Poxim 32 bits Didática Hipotética Simples C 2022 Bruno Prado Departamento de Computação UFS 5 77 Introdução Como dizer ao computador o que deve ser feito É preciso conhecer a linguagem de máquina Códigos para operações Parâmetros de entrada e de saída Comportamento de cada operação Carregar o programa na memória Arquitetura Poxim 32 bits Didática Hipotética Simples C 2022 Bruno Prado Departamento de Computação UFS 6 77 Introdução Como as informações são representadas Cada nibble 4 bits corresponde a um dígito hexadecimal base 16 Decimal Binário Hexadecimal 010 00002 016 110 00012 116 210 00102 216 1310 11012 D16 1410 11102 E16 1510 11112 F16 C 2022 Bruno Prado Departamento de Computação UFS 7 77 Introdução Como é organizada a memória Os dados são divididos em bytes Endereço Byte 0x0000 B1 0x0001 B2 0x0002 B3 0xFFFE Bn1 0xFFFF Bn 4 Gib n 232 4294967296 bytes C 2022 Bruno Prado Departamento de Computação UFS 8 77 Introdução Como é organizada a memória Os dados são divididos em bytes Endereço Byte 0x0000 B1 0x0001 B2 0x0002 B3 0xFFFE Bn1 0xFFFF Bn 4 Gib n 232 4294967296 bytes C 2022 Bruno Prado Departamento de Computação UFS 9 77 Introdução Como armazenar dados com mais de 1 byte Mais significativo primeiro bigendian Menos significativo primeiro littleendian Endereço Byte 0x00 0xAA 0x01 0xBB 0x02 0xCC 0x03 0xDD Bigendian Endereço Byte 0x00 0xDD 0x01 0xCC 0x02 0xBB 0x03 0xAA Littleendian 0xAABBCCDD C 2022 Bruno Prado Departamento de Computação UFS 10 77 Introdução Como é feito o endereçamento na memória Definido pelo alinhamento dos dados Endereço 0x0000 B1 B2 0x0002 B3 B4 0xFFFC Bn3 Bn2 0xFFFE Bn1 Bn Dado 16 bits 2 bytes C 2022 Bruno Prado Departamento de Computação UFS 11 77 Introdução Como é feito o endereçamento na memória Definido pelo alinhamento dos dados Endereço 0x0000 B1 B2 B3 B4 0x0004 B5 B6 B7 B8 0xFFF8 Bn7 Bn6 Bn5 Bn4 0xFFFC Bn3 Bn2 Bn1 Bn Dado 32 bits 4 bytes C 2022 Bruno Prado Departamento de Computação UFS 12 77 Fluxo de execução O processador executa as instruções em um ciclo infinito de buscadecodificaçãoexecução 1 Buscar instrução armazenada na memória 2 Decodificar a operação da instrução 3 Obter os operandos necessários 4 Executar o comportamento 5 Armazenar os resultados 6 Voltar para o passo 1 C 2022 Bruno Prado Departamento de Computação UFS 13 77 Fluxo de execução Ciclo de buscadecodificaçãoexecução A programação armazenada em memória é indexada pelo contador de programa PC que controla o fluxo de execução da aplicação Processador Memória PC C 2022 Bruno Prado Departamento de Computação UFS 14 77 Operações e operandos Quais são as operações principais Aritméticas Bit a bit e lógica Controle do fluxo de execução Como os operandos são utilizados Registradores Imediatos ou constantes Armazenados na memória C 2022 Bruno Prado Departamento de Computação UFS 15 77 Operações e operandos Quais são as operações principais Aritméticas Bit a bit e lógica Controle do fluxo de execução Como os operandos são utilizados Registradores Imediatos ou constantes Armazenados na memória C 2022 Bruno Prado Departamento de Computação UFS 16 77 Operações aritméticas Principais operações aritméticas Adição Subtração Multiplicação Divisão Deslocamento C 2022 Bruno Prado Departamento de Computação UFS 17 77 Operações aritméticas Instrução de adição Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de adição 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 add x a b add y b x C 2022 Bruno Prado Departamento de Computação UFS 18 77 Operações aritméticas Instrução de adição Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de adição 8 x a 2 9 y b 3 10 Retorno sem erros 11 return 0 12 addi x a 2 addi y b 3 C 2022 Bruno Prado Departamento de Computação UFS 19 77 Operações aritméticas Instrução de subtração Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de subtração 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 sub x a b sub y b x C 2022 Bruno Prado Departamento de Computação UFS 20 77 Operações aritméticas Instrução de subtração Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de subtração 8 x a 5 9 y b 8 10 Retorno sem erros 11 return 0 12 subi x a 5 subi y b 8 C 2022 Bruno Prado Departamento de Computação UFS 21 77 Operações aritméticas Instrução de multiplicação Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de multiplicação 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 mul x a b mul y b x C 2022 Bruno Prado Departamento de Computação UFS 22 77 Operações aritméticas Instrução de multiplicação Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de multiplicação 8 x a 3 9 y b 9 10 Retorno sem erros 11 return 0 12 muli x a 3 muli y b 9 C 2022 Bruno Prado Departamento de Computação UFS 23 77 Operações aritméticas Instrução de divisão Operandos em registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de divisão 8 x a b 9 y b x 10 Retorno sem erros 11 return 0 12 div x a b div y b x C 2022 Bruno Prado Departamento de Computação UFS 24 77 Operações aritméticas Instrução de divisão Operandos em registradores e imediato 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 uint32t x y a 3 b 5 7 Operações de divisão 8 x a 3 9 y b 7 10 Retorno sem erros 11 return 0 12 divi x a 3 divi y b 7 C 2022 Bruno Prado Departamento de Computação UFS 25 77 Operações aritméticas Instruções de deslocamento Direita 2 e esquerda 2 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em registrador 6 int32t x y a 2 b 5 7 Operações de deslocamento 8 x a 1 9 y b 2 10 Retorno sem erros 11 return 0 12 sra x a 1 sla y b 2 C 2022 Bruno Prado Departamento de Computação UFS 26 77 Operações aritméticas Instruções com operandos em memória Carregamento dos dados para registradores 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t x 8 y 13 7 Operações de aritméticas 8 x x 5 9 y y x 10 Retorno sem erros 11 return 0 12 l32 x 0x40 l32 y 0x41 subi x x 5 div y y x s32 0x40 x s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 27 77 Operações aritméticas Instruções com operandos em memória Visualização dos dados Endereço Memória Variável 0x00000100 8 x 0x00000104 13 y C 2022 Bruno Prado Departamento de Computação UFS 28 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 29 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 30 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 31 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 32 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 33 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 34 77 Operações aritméticas Instruções com operandos em memória Visualização do programa Endereço Instrução 0x00000020 l32 x 0x40 0x00000024 l32 y 0x41 0x00000028 subi x x 5 0x0000002C div y y x 0x00000030 s32 0x40 x 0x00000034 s32 0x41 y C 2022 Bruno Prado Departamento de Computação UFS 35 77 Operações aritméticas Instruções com operandos em memória Visualização dos resultados Endereço Memória Variável 0x00000100 3 x 0x00000104 4 y C 2022 Bruno Prado Departamento de Computação UFS 36 77 Operações bit a bit Principais operações bit a bit E and Ou or Complemento not Ouexclusivo xor Deslocamento lógico C 2022 Bruno Prado Departamento de Computação UFS 37 77 Operações bit a bit Instruções and or xor not e deslocamento 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t x 13 y 21 7 Variáveis em registradores 8 uint32t a b c d e 9 Operações bit a bit 10 a x y 11 b x y 12 c x y 13 d x 14 e x y 15 Retorno sem erros 16 return 0 17 l32 x 0x40 l32 y 0x41 and a x y or b x y xor c x y not d x srl e x y C 2022 Bruno Prado Departamento de Computação UFS 38 77 Operações de controle de fluxo Controle do fluxo de execução Chamadas de funções e procedimentos Controles condicionais e iterativos C 2022 Bruno Prado Departamento de Computação UFS 39 77 Operações de controle de fluxo Chamadas de funções e procedimentos Quando é ligado ou reiniciado o sistema começa a executar a programação armazenada em memória Cada arquitetura define um valor inicial para o contador de programa PC que aponta para as rotinas de inicialização do software bootloader Processador Memória PC C 2022 Bruno Prado Departamento de Computação UFS 40 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main 1 Função principal 2 int main 3 Retorno sem erros 4 return 0 5 bun 0x7 int 0 C 2022 Bruno Prado Departamento de Computação UFS 41 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main Endereço Instrução 0x00000000 bun 7 0x00000020 int 0 C 2022 Bruno Prado Departamento de Computação UFS 42 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main Endereço Instrução 0x00000000 bun 7 0x00000020 int 0 C 2022 Bruno Prado Departamento de Computação UFS 43 77 Operações de controle de fluxo Chamadas de funções e procedimentos Desvio incondicional função principal main Endereço Instrução 0x00000000 bun 7 0x00000020 int 0 C 2022 Bruno Prado Departamento de Computação UFS 44 77 Operações de controle de fluxo Controle condicional Sentença ifelse 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t a b 7 Controle condicional 8 ifa b a 11 9 else a 0 10 b a 5 11 Retorno sem erros 12 return 0 13 bun 0x7 l32 a 0x40 l32 b 0x41 cmp a b bne 0x2 addi a a 11 bun 0x1 xor a a a muli b a 5 s32 0x40 a s32 0x41 b int 0 C 2022 Bruno Prado Departamento de Computação UFS 45 77 Operações de controle de fluxo Controle condicional Visualização dos dados Endereço Memória Variável 0x00000100 0 a 0x00000104 0 b C 2022 Bruno Prado Departamento de Computação UFS 46 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 47 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 48 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 49 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 50 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 51 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 52 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 53 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 54 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 55 77 Operações de controle de fluxo Controle condicional Visualização do programa 0x00000020 l32 a 0x40 0x00000024 l32 b 0x41 0x00000028 cmp a b 0x0000002C bne 2 0x00000030 addi a a 11 0x00000034 bun 1 0x00000038 xor a a a 0x0000003C muli b a 5 0x00000040 s32 0x40 a 0x00000044 s32 0x41 b 0x00000048 int 0 C 2022 Bruno Prado Departamento de Computação UFS 56 77 Operações de controle de fluxo Controle condicional Visualização dos resultados Endereço Memória Variável 0x00000100 11 a 0x00000104 55 b C 2022 Bruno Prado Departamento de Computação UFS 57 77 Operações de controle de fluxo Controle iterativo Sentença while 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variável em memória 6 uint32t a 3 7 Controle iterativo 8 whilea 0 9 a 10 11 Retorno sem erros 12 return 0 13 bun 0x7 l32 a 0x40 cmpi a 0 beq 0x2 subi a a 1 bun 0x4 s32 0x40 a int 0 C 2022 Bruno Prado Departamento de Computação UFS 58 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 59 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 60 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 61 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 62 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 63 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 64 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 65 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 66 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 67 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 68 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 69 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 70 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 71 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 72 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 73 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 3 a C 2022 Bruno Prado Departamento de Computação UFS 74 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 0 a C 2022 Bruno Prado Departamento de Computação UFS 75 77 Operações de controle de fluxo Controle iterativo Visualização da memória 0x00000000 bun 7 0x00000020 l32 a 0x40 0x00000024 cmpi a 0 0x00000028 beq 2 0x0000002C subi a a 1 0x00000030 bun 4 0x00000034 s32 0x40 a 0x00000038 int 0 0x00000100 0 a C 2022 Bruno Prado Departamento de Computação UFS 76 77 Exercício Faça a tradução do código fonte abaixo para o seu respectivo código de montagem equivalente Utilize as instruções e o endereçamento vistos Simule a execução passo a passo a passo 1 Inteiros com tamanho fixo 2 include stdinth 3 Função principal 4 int main 5 Variáveis em memória 6 uint32t a i 3 7 Controle condicional 8 ifi 3 i 5 9 Controle iterativo 10 whilei 0 11 a a i 12 13 Retorno sem erros 14 return 0 15 C 2022 Bruno Prado Departamento de Computação UFS 77 77