Você está na página 1de 26

Introduo Arquitetura e Linguagem Assembly de Processadores IA-32

Sistemas da Computao
Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introduo Arquitetura IA-32


CHIP 8086 8088 80286 80386 80486 Pentium PentiumII PentiumIII Pentium4 Core2Duo
Copyleft Rossano Pablo Pinto 2

Ano 1978 1979 1982 1985 1989 1993 1997

MHz

510 58 812 1633 25100 60233

Transistors Mem 29.000 1MB 29.000 16MB 134.000 16MB 275.000 4GB 1.2M 4GB 3.1M 5.5M 7.5M 4GB 4GB 4GB

PentiumPro 1995

150200 233400

Registradores de propsito +/- geral

Registradores de propsito +/- geral Stack Pointer

Registradores de segmento (propsito especfico)

Program Counter
Copyleft Rossano Pablo Pinto 3

PSW

Principal reg. aritmtico Ponteiro de memria Usado em loops Necessrio 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)
Copyleft Rossano Pablo Pinto 4

Seo 5.1.5 do Tanenbaum

32 bits

ESI e EDI: usados p/ ponteiro de memria em instrues de manipulao de strings ESI: endereo da string de origem (source) EDI: endereo 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 propsito especfico)

Copyleft Rossano Pablo Pinto

16 bits

Segmento de cdigo Segmento da pilha do programa Segmento de dados Ponteiro extra de segmento Ponteiro extra de segmento Ponteiro extra de segmento
Registradores de segmento Utilizados inicialmente no 8088 p/ enderear 220 bytes de memria com endereos de 16 bits Atualmente, quando o processador configurado p/ operar endereos lineares de 32 bits, estes registradores podem ser ignorados

Copyleft Rossano Pablo Pinto

32 bits

EIP (Extended Instruction Pointer) Program Counter - PC

EFLAGS (Extended Flags) Program Status Word - PSW

Copyleft Rossano Pablo Pinto

Intelx86FLAGSRegister Bit# 0 1 2 3 4 5 6 7 8 9 10 11 12,13 14 15 16 17 18 19 20 RF VM AC VIF VIP ZF SF TP IF DF OF IOPL NT AF PF Abbreviation CF Carryflag 1 Reserved Parityflag 0 Reserved Auxiliaryflag 0 Reserved Zeroflag Signflag Trapflag(singlestep) Interruptenableflag Directionflag Overflowflag I/Oprivilegelevel(286+only) Nestedtaskflag(286+only) 0 Reserved EFLAGS Resumeflag(386+only) Virtual8086modeflag(386+only) Alignmentcheck(486SX+only) Virtualinterruptflag(Pentium+) X X X X Description FLAGS S S S S S X X C S X X 21 22 23 24 25 26 27 28 29 30 31 3263 ID Category* Bit#

Intelx86FLAGSRegister Abbreviation Description FLAGS Identification(Pentium+) 0 Reserved 0 Reserved 0 Reserved 0 Reserved 0 Reserved 0 Reserved 0 Reserved 0 Reserved 0 Reserved 0 Reserved RFLAGS 0 Reserved X Category*

*Categorias S: Status flag C: Control flag X: System flag


8

Virtualinterruptpending(Pentium+) X

Copyleft Rossano Pablo Pinto

http://en.wikipedia.org/wiki/FLAGS_register_(computing)

Introduo Arquitetura IA-32

Trs modos de operao


Modo Real (Real Mode) Modo Virtual 8086 (Virtual 8086 Mode) Modo Protegido (Protected Mode)

Copyleft Rossano Pablo Pinto

Introduo Arquitetura IA-32

Modo Real (Real Mode)

Desabilita todas as funes posteriores ao 8088 No oferece protees se um programa falhar a mquina inteira falha (trava)

Copyleft Rossano Pablo Pinto

10

Introduo Arquitetura IA-32

Modo Virtual 8086 (Virtual 8086 Mode)

Roda programas feitos para o 8088 de forma protegida SO controla mquina toda SO cria um ambiente isolado que age com um 8088 Se o programa trava, o SO notificado ao invs de travar a mquina toda Janela MS-DOS roda neste modo p/ evitar programas DOS mal-comportados
Copyleft Rossano Pablo Pinto 11

Introduo Arquitetura IA-32

Modo Protegido (Protected Mode)


Age como um 80386 +, como deveria!!! Habilita 4 nveis de proteo:


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

Introduo Arquitetura IA-32

Level 0 kernel mode

Acesso total mquina PODE EXECUTAR QUALQUER INSTRUO EXISTENTE O Sistema Operacional executado neste modo

Copyleft Rossano Pablo Pinto

14

Introduo Arquitetura IA-32

Level 3 user mode

bloqueia o acesso/execuo instrues crticas bloqueia o acesso/alterao registradores de controle

Copyleft Rossano Pablo Pinto

15

Introduo Arquitetura IA-32

Linguagens de alto nvel: caractersticas


Portabilidade Fcil manuteno Menos linhas de cdigo fonte Compiladas Interpretadas Hbridas
Copyleft Rossano Pablo Pinto 16

Tipos

Introduo Arquitetura IA-32

Compiladas

programa texto convertido em programa binrio geralmente feito em duas etapas


compilao propriamente dita link edio

Copyleft Rossano Pablo Pinto

17

Introduo Arquitetura IA-32

Compiladas
Compilador arquivo cdigo objeto

arquivo fonte

outros arquivos cdigo objeto bibliotecas de cdigo objeto

Linker arquivo executvel

Copyleft Rossano Pablo Pinto

18

Introduo Arquitetura IA-32

Compiladas
Compilador Gera cdigo dependente de: - Processador - Sistema Operacional

Ex.: - IA-32 com Linux - IA-32 com MacOS X Cdigo fonte o mesmo, mas cdigo executvel diferente

Copyleft Rossano Pablo Pinto

19

Introduo Arquitetura IA-32

Interpretadas

O programa no executa diretamente no processador um interpretador se encarrega de ler o programa fonte e, enquanto l, gerar instrues que so imediatamente colocadas para execuo

Copyleft Rossano Pablo Pinto

20

Introduo Arquitetura IA-32

Hbridas

Programa fonte compilado para um mquina virtual. Ex.: Java Programa Java -> Byte Code -> JVM

Copyleft Rossano Pablo Pinto

21

Introduo Arquitetura IA-32

Linguagem de baixo nvel: Assembly


Assembly: linguagem de montagem Assembler: montador (equivalente ao compilador)

Copyleft Rossano Pablo Pinto

22

Introduo Arquitetura IA-32

Exemplos:

C (Pgina 8 livro Professional Assembly Language) cdigo de mquina IA-32 (Pgina 8) Assembly IA-32 (Pgina 11)

Copyleft Rossano Pablo Pinto

23

Introduo Arquitetura IA-32

Exemplos: Programa em C

intmain() { inti=1; exit(0); }

Copyleft Rossano Pablo Pinto

24

Introduo Arquitetura IA-32

Exemplos: Programa em Cd. de Mquina

55 89E5 83EC08 C745FC01000000 83EC0C 6400 E8D1FEFFFF


Copyleft Rossano Pablo Pinto 25

Introduo Arquitetura IA-32

Exemplos: Programa em Assembly

push%ebp mov%esp,%ebp sub$0x8,%esp movl$0x1,4(%ebp) sub$0xc,%esp push$0x0 call8048348


Copyleft Rossano Pablo Pinto 26

Você também pode gostar