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

Ano
1978
1979
1982
1985
1989

Pentium

1993

60233

3.1M

4GB

PentiumPro 1995

150200

5.5M

4GB

PentiumII

233400

7.5M

4GB

1997

MHz

510
58
812
1633
25100

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

PentiumIII
Pentium4
Core2Duo
Copyleft Rossano Pablo Pinto

Registradores de
propsito
+/- geral

Registradores de
propsito
+/- geral
Stack Pointer

Registradores de
segmento
(propsito
especfico)

Program Counter
Copyleft Rossano Pablo Pinto

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)

Seo 5.1.5 do Tanenbaum


Copyleft Rossano Pablo Pinto

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#

Abbreviation

Description

Intelx86FLAGSRegister
Category*

Bit#

Abbreviation

FLAGS
0

CF

1
2
3
4

Carryflag

Parityflag

0 Reserved
AF

Auxiliaryflag

0 Reserved

ZF

Zeroflag

SF

Signflag

TP

Trapflag(singlestep)

IF

Interruptenableflag

10

DF

Directionflag

11

OF

Overflowflag

IOPL

I/Oprivilegelevel(286+only)

NT

Nestedtaskflag(286+only)

12,13
14
15

Category*

FLAGS

1 Reserved
PF

Description

0 Reserved

21
22
23
24
25
26
27
28
29
30
31

ID

3263

Resumeflag(386+only)

17

VM

Virtual8086modeflag(386+only)

18

AC

Alignmentcheck(486SX+only)

19

VIF

Virtualinterruptflag(Pentium+)

20

VIP

Virtualinterruptpending(Pentium+) X

0 Reserved

*Categorias

EFLAGS
RF

RFLAGS

16

Identification(Pentium+)
0 Reserved
0 Reserved
0 Reserved
0 Reserved
0 Reserved
0 Reserved
0 Reserved
0 Reserved
0 Reserved
0 Reserved

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

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

Tipos

Compiladas

Interpretadas

Hbridas
Copyleft Rossano Pablo Pinto

16

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
fonte

outros arquivos
cdigo objeto

arquivo
cdigo objeto

Linker

bibliotecas de
cdigo objeto
Copyleft Rossano Pablo Pinto

arquivo
executvel

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