·
Ciência da Computação ·
Arquitetura de Computadores
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
Texto de pré-visualização
Universidade Federal da Paraíba Arquitetura de Computadores Ciências da Comutação Centro de Informática UFPB O Nível de Arquitetura do Conjunto de Instruções Assembly Parte 13 Prof Ewerton Salvador Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB O nível do conjunto de instruções ISA está posicionado entre o nível da microarquitetura e o nível do sistema operacional É a interface entre software e hardware Historicamente foi o primeiro nível desenvolvido Até hoje chamado de arquitetura do processador Introdução Nível 0 Nível 1 Nível 2 Nível 3 Nível 4 Nível da lógica digital Nível da microarquitetura Nível da arquitetura do conjunto de instruções Nível do sistema operacional da máquina Nível da linguagem do montador assembly Nível 5 Nível das linguagens orientadas para solução de problemas Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Introdução Programa em Fortran Programa em C Nível ISA Hardware Programa em Fortran compilado para programa ISA Programa em C compilado para programa ISA Software Hardware Programa ISA executado por microprograma ou hardware Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Assembly é uma linguagem de montagem Linguagem de programação de baixo nível Uma declaração produz exatamente uma instrução de máquina Utilização de nomes simbólicos mnemônicos e endereços simbólicos Exemplo Código Assembly add t1 t2 t3 Oa programadora tem em princípio acesso a todos os aspectos e instruções disponíveis na máquina alvo Um programa em linguagem de montagem só pode ser executado em uma família de máquinas Introdução O que é a linguagem Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Esperase que uma Cientista da Computação domine o chamado AAA ArchitectureAlgorithmsApplications Esperase que uma Engenheiroa de Computação seja capaz de projetar novas arquiteturas e utilizálas corretamente Para estudantes de arquitetura de computadores escrever código de montagem é uma maneira de se compreender como funciona uma máquina no nível da arquitetura Código escrito em linguagem de máquina possui grande potencial de ser menor e mais eficiente do que código escrito em linguagem de alto nível Introdução Qual a importância de se aprender Assembly atualmente Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Introdução Qual a importância de se aprender Assembly atualmente Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Projeto de uma ISA é teoricamente focado na relação de oferta de instruções em hardware e demanda por instruções em software Na prática grande foco é dado na retro compatibilidade de instruções O que faz uma ISA ser boa Conjunto de instruções deve poder ser implementado facilmente em tecnologias atuais e futuras Alvo claro para o código compilado Como nasce uma ISA Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB ISA dos processadores Intel ISA dos processadores da Intel usam a arquitetura x86 IA32 versão 32 bits Intel 64 versão 64 bits ISA básica fornece suporte para programas escritos para os processadores 8080 80868088 16 bits 80286 80386 primeiro processador 32 bits Assembly possui duas variantes de sintaxe Intel comum no mundo Windows mov bx ax ATT comum no mundo Unix mov ax bx Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB A linguagem Assembly incorpora intimamente as características de uma máquinaalvo Essas características determinam aquilo que faz sentido na linguagem Assembly do processador considerado e aquilo que não faz sentido Algumas das informações necessárias para geração de código no nível ISA Qual o modelo de memória Quantos registradores e quais Quais tipos de dados e instruções estão disponíveis Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB FORMULA MOV EAX I ADD EAX J MOV N EAX FORMULA SETHI HII R1 LD R1 LOI R1 SETHI HIJ R2 LD R2 LOJ R2 NOP ADD R1 R2 R2 SETHI HIN R1 ST R2 R1 LON Intel IA32 SPARC Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Máquina alvo escolhida para essa disciplina processadores que utilizam a arquitetura Intel x86 IA32 Assemblers considerados MASM Microsoft Assembler e NASM Netwide Assembler para o sistema operacional Linux Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB MASM32 contém o MASM mais ferramentas adicionais Outros assemblers TASM etc Geralmente um programa escrito para um assembler não pode ser montado por outro assembler Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Arquitetura x86 32 bits atual possui 3 modos de operação Modo Real Se comporta como um processador 8088 8086 Modo Virtual Permite execução de antigos programas 8088 em modo protegido Não é completamente retrocompatível Modo protegido O processador se comporta como um processador atual Possui 4 níveis de privilégio incluindo o modo núcleo e o modo usuário Arquitetura Intel 64 possui um Modo Longo para acesso a instruções e registradores de 64 bits Modos de operação da Intel Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Palavras de 4 bytes 32 bits ou 8 bytes 64 bits A maioria das máquinas tem um único espaço de endereço linear no nível ISA Outras máquinas possuem espaço de endereços separado para instruções e dados Modelos de memória Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB MODEL small STACK 100h DATA HelloMessage DB Hello world1310 CODE mov axdata mov dsax mov ah9 mov dxOFFSET HelloMessage int 21h mov ah4ch int 21h END Código Assembly do Hello World para DOS Modelos de memória Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Código Assembly do Hello World para Windows Modelos de memória 686 model flat stdcall option casemap none include masm32includewindowsinc include masm32includekernel32inc include masm32includeuser32inc includelib masm32libkernel32lib includelib masm32libuser32lib data HelloWorld db Hello World 0 code start invoke MessageBox NULL addr HelloWorld addr HelloWorld MBOK invoke ExitProcess 0 end start Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Registradores de uso geral e uso específico Número de registradores de uso geral varia em diferentes arquiteturas Registradores de uso geral são intercambiáveis mas o sistema operacional e os compiladores costumam adotar convenções sobre como eles são usados Em geral registradores visíveis no nível da microarquitetura não são visíveis no nível ISA PC e SP por exemplo são visíveis em ambos os níveis Registradores Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB EAXRAX Principal registrador aritmético EBXRBX Usado geralmente para armazenar ponteiros endereços de memória ECXRCX Usado no controle da execução de laços EDXRDX Necessário para multiplicação e divisão usado junto com RAX para produtos e dividendos de operações Propriedades do Nível ISA Registradores EAX AH AL AX 32 bits Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB EAXRAX Principal registrador aritmético EBXRBX Usado geralmente para armazenar ponteiros endereços de memória ECXRCX Usado no controle da execução de laços EDXRDX Necessário para multiplicação e divisão usado junto com RAX para produtos e dividendos de operações Arquitetura x64 adiciona ainda 8 registradores R8 a R15 Propriedades do Nível ISA Registradores RAX EAX AH AL AX 64 bits Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Próximos registradores são de uso geral porém com mais particularidades ESI e EDI Contém ponteiros de memória geralmente para instruções de manipulação de string fonte e destino respectivamente EBP Geralmente armazena ponteiro usado para apontar para a base do quadro de pilha corrente mesmo que LV na IJVM ESP Ponteiro de pilha Registradores Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB CS a GS são registradores de segmento geralmente utilizados para manter compatibilidade com programas 8088 EIP Extended Instruction Pointer é o contador de programas EFLAGS contém as diversas flags provenientes a partir da execução de instruções do processador N Resultado foi Negativo Z Resultado foi Zero V Resultado excedeu ULA C Causou vaium P Resultado teve paridade par Registradores Universidade Federal da Paraíba Arquitetura de Computadores Ciências da Comutação Centro de Informática UFPB Perguntas O Nível de Arquitetura do Conjunto de Instruções Assembly Parte 13
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
Texto de pré-visualização
Universidade Federal da Paraíba Arquitetura de Computadores Ciências da Comutação Centro de Informática UFPB O Nível de Arquitetura do Conjunto de Instruções Assembly Parte 13 Prof Ewerton Salvador Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB O nível do conjunto de instruções ISA está posicionado entre o nível da microarquitetura e o nível do sistema operacional É a interface entre software e hardware Historicamente foi o primeiro nível desenvolvido Até hoje chamado de arquitetura do processador Introdução Nível 0 Nível 1 Nível 2 Nível 3 Nível 4 Nível da lógica digital Nível da microarquitetura Nível da arquitetura do conjunto de instruções Nível do sistema operacional da máquina Nível da linguagem do montador assembly Nível 5 Nível das linguagens orientadas para solução de problemas Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Introdução Programa em Fortran Programa em C Nível ISA Hardware Programa em Fortran compilado para programa ISA Programa em C compilado para programa ISA Software Hardware Programa ISA executado por microprograma ou hardware Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Assembly é uma linguagem de montagem Linguagem de programação de baixo nível Uma declaração produz exatamente uma instrução de máquina Utilização de nomes simbólicos mnemônicos e endereços simbólicos Exemplo Código Assembly add t1 t2 t3 Oa programadora tem em princípio acesso a todos os aspectos e instruções disponíveis na máquina alvo Um programa em linguagem de montagem só pode ser executado em uma família de máquinas Introdução O que é a linguagem Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Esperase que uma Cientista da Computação domine o chamado AAA ArchitectureAlgorithmsApplications Esperase que uma Engenheiroa de Computação seja capaz de projetar novas arquiteturas e utilizálas corretamente Para estudantes de arquitetura de computadores escrever código de montagem é uma maneira de se compreender como funciona uma máquina no nível da arquitetura Código escrito em linguagem de máquina possui grande potencial de ser menor e mais eficiente do que código escrito em linguagem de alto nível Introdução Qual a importância de se aprender Assembly atualmente Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Introdução Qual a importância de se aprender Assembly atualmente Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Projeto de uma ISA é teoricamente focado na relação de oferta de instruções em hardware e demanda por instruções em software Na prática grande foco é dado na retro compatibilidade de instruções O que faz uma ISA ser boa Conjunto de instruções deve poder ser implementado facilmente em tecnologias atuais e futuras Alvo claro para o código compilado Como nasce uma ISA Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB ISA dos processadores Intel ISA dos processadores da Intel usam a arquitetura x86 IA32 versão 32 bits Intel 64 versão 64 bits ISA básica fornece suporte para programas escritos para os processadores 8080 80868088 16 bits 80286 80386 primeiro processador 32 bits Assembly possui duas variantes de sintaxe Intel comum no mundo Windows mov bx ax ATT comum no mundo Unix mov ax bx Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB A linguagem Assembly incorpora intimamente as características de uma máquinaalvo Essas características determinam aquilo que faz sentido na linguagem Assembly do processador considerado e aquilo que não faz sentido Algumas das informações necessárias para geração de código no nível ISA Qual o modelo de memória Quantos registradores e quais Quais tipos de dados e instruções estão disponíveis Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB FORMULA MOV EAX I ADD EAX J MOV N EAX FORMULA SETHI HII R1 LD R1 LOI R1 SETHI HIJ R2 LD R2 LOJ R2 NOP ADD R1 R2 R2 SETHI HIN R1 ST R2 R1 LON Intel IA32 SPARC Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Máquina alvo escolhida para essa disciplina processadores que utilizam a arquitetura Intel x86 IA32 Assemblers considerados MASM Microsoft Assembler e NASM Netwide Assembler para o sistema operacional Linux Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB MASM32 contém o MASM mais ferramentas adicionais Outros assemblers TASM etc Geralmente um programa escrito para um assembler não pode ser montado por outro assembler Assembly Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Arquitetura x86 32 bits atual possui 3 modos de operação Modo Real Se comporta como um processador 8088 8086 Modo Virtual Permite execução de antigos programas 8088 em modo protegido Não é completamente retrocompatível Modo protegido O processador se comporta como um processador atual Possui 4 níveis de privilégio incluindo o modo núcleo e o modo usuário Arquitetura Intel 64 possui um Modo Longo para acesso a instruções e registradores de 64 bits Modos de operação da Intel Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Palavras de 4 bytes 32 bits ou 8 bytes 64 bits A maioria das máquinas tem um único espaço de endereço linear no nível ISA Outras máquinas possuem espaço de endereços separado para instruções e dados Modelos de memória Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB MODEL small STACK 100h DATA HelloMessage DB Hello world1310 CODE mov axdata mov dsax mov ah9 mov dxOFFSET HelloMessage int 21h mov ah4ch int 21h END Código Assembly do Hello World para DOS Modelos de memória Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Código Assembly do Hello World para Windows Modelos de memória 686 model flat stdcall option casemap none include masm32includewindowsinc include masm32includekernel32inc include masm32includeuser32inc includelib masm32libkernel32lib includelib masm32libuser32lib data HelloWorld db Hello World 0 code start invoke MessageBox NULL addr HelloWorld addr HelloWorld MBOK invoke ExitProcess 0 end start Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Registradores de uso geral e uso específico Número de registradores de uso geral varia em diferentes arquiteturas Registradores de uso geral são intercambiáveis mas o sistema operacional e os compiladores costumam adotar convenções sobre como eles são usados Em geral registradores visíveis no nível da microarquitetura não são visíveis no nível ISA PC e SP por exemplo são visíveis em ambos os níveis Registradores Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB EAXRAX Principal registrador aritmético EBXRBX Usado geralmente para armazenar ponteiros endereços de memória ECXRCX Usado no controle da execução de laços EDXRDX Necessário para multiplicação e divisão usado junto com RAX para produtos e dividendos de operações Propriedades do Nível ISA Registradores EAX AH AL AX 32 bits Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB EAXRAX Principal registrador aritmético EBXRBX Usado geralmente para armazenar ponteiros endereços de memória ECXRCX Usado no controle da execução de laços EDXRDX Necessário para multiplicação e divisão usado junto com RAX para produtos e dividendos de operações Arquitetura x64 adiciona ainda 8 registradores R8 a R15 Propriedades do Nível ISA Registradores RAX EAX AH AL AX 64 bits Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB Próximos registradores são de uso geral porém com mais particularidades ESI e EDI Contém ponteiros de memória geralmente para instruções de manipulação de string fonte e destino respectivamente EBP Geralmente armazena ponteiro usado para apontar para a base do quadro de pilha corrente mesmo que LV na IJVM ESP Ponteiro de pilha Registradores Universidade Federal da Paraíba Arquitetura de Computadores Centro de Informática UFPB CS a GS são registradores de segmento geralmente utilizados para manter compatibilidade com programas 8088 EIP Extended Instruction Pointer é o contador de programas EFLAGS contém as diversas flags provenientes a partir da execução de instruções do processador N Resultado foi Negativo Z Resultado foi Zero V Resultado excedeu ULA C Causou vaium P Resultado teve paridade par Registradores Universidade Federal da Paraíba Arquitetura de Computadores Ciências da Comutação Centro de Informática UFPB Perguntas O Nível de Arquitetura do Conjunto de Instruções Assembly Parte 13