Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Documentos relacionados
x86 Assembly Mini-Course

Linguagem de Montagem

Evolução dos Processadores

Arquitetura de Computadores. Prof. João Bosco Jr.

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Estrutura do tema ISC

Arquitetura do conjunto de instruções (ISA); características de instruções de máquina; tipos de operandos

1. SINTAXE DA LINGUAGEM ASSEMBLY

Nível da Arquitetura do Conjunto das Instruções

MODELO DE S.O. DEFINIÇÕES

Organização de Computadores 1

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

Entradas/Saídas. Programação por espera activa Programação por interrupções

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Projeto 1 - Bootloader

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Processos. Estruturas de Controle

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Capítulo 7 Nível da Linguagem Assembly

Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Programando em Assembly

Revisão: Modo Real, pt 2 Interrupções

Linguagem de Montagem Assembly

Linguagens de Programação

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Aspectos de Sistemas Operativos

Arquitetura de Computadores - Revisão -

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

Ambiente de desenvolvimento de Programação Assembly MCU 8051 IDE

CAPÍTULO 3 NÍVEL ISA. 3.1 Introdução ao Nível de Arquitetura do Conjunto de Instruções

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

Introdução à Arquitetura de Computadores

Linguagem de Montagem 2. Operações e Operandos

Organização de Computadores 1

O COMPUTADOR. Introdução à Computação

Antes de deixarmos o hardware (1) Nível da Arquitetura do Conjunto das Instruções

Unidade 11: A Unidade de Controle Prof. Daniel Caetano

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

Edeyson Andrade Gomes

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

Arquitetura e Organização de Computadores

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Descrição e análise da implementação em Assembly MIPS da função itoa

Assembly na arquitetura IA-32 com NASM no Linux

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86

A linguagem ASSEMBLY

4-1. Parte2: A Arquitetura do Conjunto de Instruções

Linguagem de Montagem

Arquitetura de Computadores

Acetatos de apoio às aulas teóricas

Gerenciamento Básico B de Memória Aula 07

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho

Software Básico (INF1018)

MATA49 Programação de Software Básico

Disciplina de Organização de Computadores I

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores

Conceitos Básicos sobre Sistemas Operacionais

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Sistemas Operacionais

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Aula 14: Instruções e Seus Tipos

Rodrigo Rubira Branco

34 dígitos 28 dígitos 62 dígitos significativos! (base 10!)

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE : SÃO CAETANO DO SUL - SP - CEP:

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Computadores e Programação (DCC/UFRJ)

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Sistemas de Computação

Sistemas Operacionais

Breve Histórico & Conceitos Básicos

Linguagem de Montagem

Introdução à Engenharia de Computação

Microprocessadores. Família x86 - Evolução

Computadores de Programação (MAB353)

Métodos de Sincronização do Kernel

Estrutura de um Computador

(Aula 15) Threads e Threads em Java

Programação de Sistemas

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Algoritmos e Programação Aula 01 Introdução a Computação

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

How to write Shellcodes por Luiz Fernando Camargo

MATA49 Programação de Software Básico

Transcrição:

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

CHIP Ano MHz Transistors Mem 8086 1978 5 10 29.000 1 MB 8088 1979 5 8 29.000 16 MB 80286 1982 8 12 134.000 16 MB 80386 1985 16 33 275.000 4 GB 80486 1989 25 100 1.2 M 4 GB Pentium Pentium Pro Pentium II Pentium III Pentium 4 Core 2 Duo 1993 60 233 3.1 M 4 GB 1995 150 200 5.5 M 4 GB 1997 233 400 7.5 M 4 GB Copyleft Rossano Pablo Pinto 2

Registradores de propósito +/- geral Registradores de propósito +/- geral Stack Pointer Registradores de segmento (propósito específico) Program Counter Copyleft Rossano Pablo Pinto 3 PSW

Principal reg. aritmético Ponteiro de memória Usado em loops Necessário em * e / EAX em conjunto c/ EDX armazenam produtos e dividendos de 64 bits E?X =?X + Ext?X =?L +?H: 16 bits?l: A Low (low order): 8 bits?h: A High (high order): 8 bits? = A B C D Nos 8088 e 80286 só existiam registradores de 8 e 16 bits Registradores de 32 bits foram inseridos no 80386 (foi adicionado o prefixo E - Extendido, como em EAX, EBX, ECX e EDX) Seção 5.1.5 do Tanenbaum Copyleft Rossano Pablo Pinto 4

32 bits ESI e EDI: usados p/ ponteiro de memória em instruções de manipulação de strings ESI: endereço da string de origem (source) EDI: endereço da string de destino (destiny) EBP: geralmente utilizado como ponteiro para a base do frame da pilha corrente ESP: ponteiro para topo da pilha (registrador de propósito específico) Copyleft Rossano Pablo Pinto 5

16 bits Registradores de segmento Segmento de código Segmento da pilha do programa Segmento de dados Ponteiro extra de segmento Ponteiro extra de segmento Ponteiro extra de segmento Utilizados inicialmente no 8088 p/ endereçar 2 20 bytes de memória com endereços de 16 bits Atualmente, quando o processador é configurado p/ operar endereços lineares de 32 bits, estes registradores podem ser ignorados Copyleft Rossano Pablo Pinto 6

32 bits EIP (Extended Instruction Pointer) Program Counter - PC EFLAGS (Extended Flags) Program Status Word - PSW Copyleft Rossano Pablo Pinto 7

Intel x86 FLAGS Register Bit # Abbreviation Description Category* FLAGS 0 CF Carry flag S 1 1 Reserved 2 PF Parity flag S 3 0 Reserved 4 AF Auxiliary flag S 5 0 Reserved 6 ZF Zero flag S 7 SF Sign flag S 8 TP Trap flag (single step) X 9 IF Interrupt enable flag X 10 DF Direction flag C 11 OF Overflow flag S 12,13 IOPL I/O privilege level (286+ only) X 14 NT Nested task flag (286+ only) X 15 0 Reserved EFLAGS 16 RF Resume flag (386+ only) X 17 VM Virtual 8086 mode flag (386+ only) X 18 AC Alignment check (486SX+ only) X 19 VIF Virtual interrupt flag (Pentium+) X 20 VIP Virtual interrupt pending (Pentium+) X Intel x86 FLAGS Register Bit # Abbreviation Description Category* FLAGS 21 ID Identification (Pentium+) X 22 0 Reserved 23 0 Reserved 24 0 Reserved 25 0 Reserved 26 0 Reserved 27 0 Reserved 28 0 Reserved 29 0 Reserved 30 0 Reserved 31 0 Reserved RFLAGS 32 63 0 Reserved *Categorias S: Status flag C: Control flag X: System flag Copyleft Rossano Pablo Pinto 8 http://en.wikipedia.org/wiki/flags_register_(computing)

Três modos de operação Modo Real (Real Mode) Modo Virtual 8086 (Virtual 8086 Mode) Modo Protegido (Protected Mode) Copyleft Rossano Pablo Pinto 9

Modo Real (Real Mode) Desabilita todas as funções posteriores ao 8088 Não oferece proteções se um programa falhar a máquina inteira falha (trava) Copyleft Rossano Pablo Pinto 10

Modo Virtual 8086 (Virtual 8086 Mode) Roda programas feitos para o 8088 de forma protegida SO controla máquina toda SO cria um ambiente isolado que age com um 8088 Se o programa trava, o SO é notificado ao invés de travar a máquina toda Janela MS-DOS roda neste modo p/ evitar programas DOS mal-comportados Copyleft Rossano Pablo Pinto 11

Modo Protegido (Protected Mode) Age como um 80386 +, como deveria!!! Habilita 4 níveis de proteção: Level 0 kernel mode Level 1 RARAMENTE UTILIZADO Level 2 RARAMENTE UTILIZADO Level 3 user mode Linux utiliza levels 0 e 3 Copyleft Rossano Pablo Pinto 12

Copyleft Rossano Pablo Pinto 13

Level 0 kernel mode Acesso total à máquina PODE EXECUTAR QUALQUER INSTRUÇÃO EXISTENTE O Sistema Operacional é executado neste modo Copyleft Rossano Pablo Pinto 14

Level 3 user mode bloqueia o acesso/execução à instruções críticas bloqueia o acesso/alteração à registradores de controle Copyleft Rossano Pablo Pinto 15

Linguagens de alto nível: características Portabilidade Fácil manutenção Menos linhas de código fonte Tipos Compiladas Interpretadas Híbridas Copyleft Rossano Pablo Pinto 16

Compiladas programa texto é convertido em programa binário geralmente é feito em duas etapas compilação propriamente dita link edição Copyleft Rossano Pablo Pinto 17

Compiladas arquivo fonte Compilador arquivo código objeto outros arquivos código objeto bibliotecas de código objeto Linker arquivo executável Copyleft Rossano Pablo Pinto 18

Compiladas Compilador Gera código dependente de: - Processador - Sistema Operacional Ex.: - IA-32 com Linux - IA-32 com MacOS X Código fonte é o mesmo, mas código executável é diferente Copyleft Rossano Pablo Pinto 19

Interpretadas O programa não executa diretamente no processador um interpretador se encarrega de ler o programa fonte e, enquanto lê, gerar instruções que são imediatamente colocadas para execução Copyleft Rossano Pablo Pinto 20

Híbridas Programa fonte é compilado para um máquina virtual. Ex.: Java Programa Java -> Byte Code -> JVM Copyleft Rossano Pablo Pinto 21

Linguagem de baixo nível: Assembly Assembly: linguagem de montagem Assembler: montador (equivalente ao compilador) Copyleft Rossano Pablo Pinto 22

Exemplos: C (Página 8 livro Professional Assembly Language) código de máquina IA-32 (Página 8) Assembly IA-32 (Página 11) Copyleft Rossano Pablo Pinto 23

Exemplos: Programa em C int main() { int i = 1; exit(0); } Copyleft Rossano Pablo Pinto 24

Exemplos: Programa em Cód. de Máquina 55 89 E5 83 EC 08 C7 45 FC 01 00 00 00 83 EC 0C 64 00 E8 D1 FE FF FF Copyleft Rossano Pablo Pinto 25

Exemplos: Programa em Assembly push %ebp mov %esp, %ebp sub $0x8, %esp movl $0x1, 4(%ebp) sub $0xc, %esp push $0x0 call 8048348 Copyleft Rossano Pablo Pinto 26