TEMA 2. ARQUITECTURA IA-32 Lección 1. Arquitectura de los microprocesadores IA-32 Intel...

Post on 24-Jan-2016

219 views 1 download

Tags:

Transcript of TEMA 2. ARQUITECTURA IA-32 Lección 1. Arquitectura de los microprocesadores IA-32 Intel...

TEMA 2. ARQUITECTURA IA-32

Lección 1. Arquitectura de los microprocesadores IA-32

Intel Architecture Software Developer’s Manual Vol 1 caps 2.

Apr 21, 2023 MICROPROCESADORES 2

Evolución histórica de los microprocesadores Intel 80x86

Apr 21, 2023 MICROPROCESADORES 3

Apr 21, 2023 MICROPROCESADORES 4

Apr 21, 2023 MICROPROCESADORES 5

Apr 21, 2023 MICROPROCESADORES 6

Apr 21, 2023 MICROPROCESADORES 7

Apr 21, 2023 MICROPROCESADORES 8

Apr 21, 2023 MICROPROCESADORES 9

Apr 21, 2023 MICROPROCESADORES 10

Apr 21, 2023 MICROPROCESADORES 11

Apr 21, 2023 MICROPROCESADORES 12

Pentium IV: Modos de operación

Protegido

Real

SSM ( System Management Mode)

Apr 21, 2023 MICROPROCESADORES 13

Pentium IV: Entorno básico

Memoria Registros propósito general Registros de segmento Registros FPU Registros MMX Registros XMM Registro EFLAGS

Apr 21, 2023 MICROPROCESADORES 14

EFLAGS

Apr 21, 2023 MICROPROCESADORES 15

Pentium IV: Otros registros Registros de control

Registros de gestión de memoria

Registros de depuración

Registro CPUID

Otros registros

Apr 21, 2023 MICROPROCESADORES 16

Pentium IV: Direcciones de los operandos

La propia instrucción: Inmediato Registro Puerto I/O Memoria

Segmento Offset = Base + Índice* factor de escala

+ Desplazamiento

Apr 21, 2023 MICROPROCESADORES 17

Pentium IV: Formato de instrucciones

Apr 21, 2023 MICROPROCESADORES 18

Pentium IV: Formato de instrucciones

Apr 21, 2023 MICROPROCESADORES 19

Pentium IV: Formato de instrucciones

Apr 21, 2023 MICROPROCESADORES 20

Instrucciones de movimiento de datos

MOV destino, fuente

CMOVcc destino,fuente

Apr 21, 2023 MICROPROCESADORES 21

Instrucciones de movimiento condicional

Apr 21, 2023 MICROPROCESADORES 22

Instrucciones de intercambio

XCHG destino, fuente

BSWAP

XADD

CMPXCHG /CMPXCHG8B

Apr 21, 2023 MICROPROCESADORES 23

Instrucciones de uso de la pila

PUSH fuente

POP destino

PUSHA /POPA

Apr 21, 2023 MICROPROCESADORES 24

Instrucciones de conversión de tipo

CBW

CWD /CWDE

CDQ

MOVSX /MOVZX destino

Apr 21, 2023 MICROPROCESADORES 25

Instrucciones aritméticas (1)

ADD/ADC destino, fuente

SUB/SBB destino, fuente

MUL/IMUL fuente

DIV/IDIV fuente

Apr 21, 2023 MICROPROCESADORES 26

Instrucciones aritméticas (2)

INC/DEC operando

CMP destino, fuente

NEG operando

Apr 21, 2023 MICROPROCESADORES 27

Instrucciones de ajuste decimal

DAA/DAS

AAA/AAS/AAM/AAD

Apr 21, 2023 MICROPROCESADORES 28

Instrucciones lógicas

AND destino, fuente

OR destino, fuente

XOR destino, fuente

NOT operando

Apr 21, 2023 MICROPROCESADORES 29

Instrucciones de desplazamiento y rotación

SAL/SAR/SHL/SHR destino, nº bits

SHLD/SHRD destino,fuente

ROL/ROR/RCL/RCR destino, nº bits

Apr 21, 2023 MICROPROCESADORES 30

Instrucciones de bit y byte

BT/BTS/BTR/BTC operando, nº bit

BSF/BSR destino,origen

SETcc destino

TEST destino, fuente

Apr 21, 2023 MICROPROCESADORES 31

Instrucciones de transferencia incondicional

JUMP (short near far) etiqueta

CALL/RET etiqueta

INT/IRET

Apr 21, 2023 MICROPROCESADORES 32

Instrucciones de salto condicional

Apr 21, 2023 MICROPROCESADORES 33

Instrucciones de bucles

LOOP etiqueta

LOOPE/LOOPZ/LOOPNE/LOOPNZ etiq

JECXZ etiqueta

Apr 21, 2023 MICROPROCESADORES 34

Instrucciones sobre cadenas de caracteres MOVS/MOVSB/MOVSW/MOVSD

CMPS/CMPSB/CMPSW/CMPSD

LODS/LODSB/LODSW/LODSD

SCAS/SCASB/SCASW/SCASD

STOS/STOSB/STOSW/STOSD

Apr 21, 2023 MICROPROCESADORES 35

Prefijos de repetición

REP

REPE/REPZ

REPNE/REPNZ

Apr 21, 2023 MICROPROCESADORES 36

Instrucciones de entrada y salida

IN registro, nº puerto

OUT nº puerto, registro

INS/OUTS

Apr 21, 2023 MICROPROCESADORES 37

Instrucciones de EFLAGS

STC/CLC/CMC

STD/CLD

STI/CLI

LAHF/SAHF

PUSHF/POPF

Apr 21, 2023 MICROPROCESADORES 38

Instrucciones de miscelánea

LEA destino, fuente

XLAT/XLATB

CPUID

NOP

Apr 21, 2023 MICROPROCESADORES 39

El entorno de ejecución FPU-32 Pila de registros Registro de estado Registro de control Registro de tag Registro puntero al ultimo operando Registro puntero a la última

instrucción Registro de código de operación

Apr 21, 2023 MICROPROCESADORES 40

Pila de registros x87 FPU

Apr 21, 2023 MICROPROCESADORES 41

Registro de control x87 FPU

Apr 21, 2023 MICROPROCESADORES 42

Registro de estado x87 FPU

Apr 21, 2023 MICROPROCESADORES 43

Registro de tag x87 FPU

Apr 21, 2023 MICROPROCESADORES 44

Tipos de datos FPU Enteros de 16,32,64 bits en

complemento a dos

Reales de 32,64,80 bits Signo Exponente 8, 11, 15 bits Mantisa de 23, 52, 64 bits

BCD de 80 bits

Apr 21, 2023 MICROPROCESADORES 45

Instrucciones de transferencia de datos (1)

FLD origen_real

FST destino_real

FXCH registro x87

FCMOVcc registro x87

Apr 21, 2023 MICROPROCESADORES 46

Instrucciones de transferencia de datos (2)

FILD entero FIST entero FISTP entero

FBLD decimal FBSTP decimal

Apr 21, 2023 MICROPROCESADORES 47

Instrucciones de carga de constantes

FLDZ +0.0 FLD1 +1.0 FLDPI π (pi) FLDL2T log2 10 FLDL2E log2 e FLDLG2 log10 2 FLDLN2 loge 2

Apr 21, 2023 MICROPROCESADORES 48

Instrucciones aritméticas x87 (1)

FADD/FADDP/FIADD

FSUB/FSUBP/FISUB

FSUBR/FSUBRP/FISUBR

Apr 21, 2023 MICROPROCESADORES 49

Instrucciones aritméticas x87 (2)

FMUL/FMULP/FIMUL

FDIV/FDIVP/FIDIV

FDIVR/FDIVRP/FIDIVR

Apr 21, 2023 MICROPROCESADORES 50

Instrucciones aritméticas x87 (3)

FABS FCHS FSQRT FPREM/FPREM1 FRNDINT FXTRACT

Apr 21, 2023 MICROPROCESADORES 51

Instrucciones de comparación x87FCOM/FCOMP/FCOMPP

Apr 21, 2023 MICROPROCESADORES 52

Instrucciones de comparación x87FCOMI/FCOMIP

Apr 21, 2023 MICROPROCESADORES 53

Otras instrucciones de comparación x87

FUCOM/FUCOMP

FICOM/FICOMP

FUCOMI/FUCOMIP

Apr 21, 2023 MICROPROCESADORES 54

Instrucciones de clasificación: FXAM

Apr 21, 2023 MICROPROCESADORES 55

Otra instrucción de comparación: FTST

Apr 21, 2023 MICROPROCESADORES 56

Instrucciones trigonométricas FSIN

FCOS

FSINCOS

FPTAN

FPATAN

Apr 21, 2023 MICROPROCESADORES 57

Instrucciones logarítmicas, exponenciales y de escalado

FYL2X : st0 =st1*log2(st0)

FYL2XP1 : st0 = st1*log2 (st0+1.0)

F2XM1 : st0 = 2st0 -1

FSCALE st0 = st0 * 2st1

Apr 21, 2023 MICROPROCESADORES 58

Instrucciones de control x87

FINIT/FNINIT : inicialización

FLDCW/FSTCW/FNSTSW : reg control

FSTSW/FNSTSW : reg. Estado

FCLEX/FNCLEX : bits excepción

Apr 21, 2023 MICROPROCESADORES 59

Instrucciones carga y almacenamiento del entorno

FLDENV

FSTENV/FNSTENV

FSAVE/FNSAVE/FRSTOR

Apr 21, 2023 MICROPROCESADORES 60

Otras instrucciones x87

FWAIT/FNWAIT

FNOP

FFREE

FINCSTP/FDECSTP