Академический Документы
Профессиональный Документы
Культура Документы
Lenguaje
Mquina de la Familia
de procesadores x86
Evolucin de la
familia
Modelo de
Programacin
Modos de operacin
Registros del procesador
Tipos de datos
Modos de direccionamiento
Conjunto de instrucciones: IA-32
Modos de
operacin
Modos de
operacin
32-bit protected mode:
Se introduce el modo de direccionamiento plano
de 32 bits.
Se introduce la gestin de memoria paginada y el
manejo de memoria virtual.
Registros de
propsito general
Los registros de propsito general se
pueden acceder en varios tamaos: Byte,
Palabra de 16 bit (Word), palabra de 32
bits (Double word) y palabra de 64 bits
(Quad word).
Registros de propsito
general
Registros de
segmento
Registro de banderas
(flags)
Contador de
Programa
(Instruction
Pointer)
Palabra
Palabra
Palabra
Palabra
de
de
de
de
8 bits: byte
16 bits: word
32 bits: double word
64 bits: quad word
Valores denormalizados:
Si el exponente son todos ceros, pero la
fraccin es distinta de cero, entonces se
asume que el bit inicial es cero. En este
caso:
Dispositivo I/O
Modos de
direccionamiento
Modos de
direccionamiento
Modos de
direccionamiento
Procesadores de 16
bits:
Modos de
direccionamiento
Procesadores de 32
bits:
Modos de
direccionamiento
Procesadores de 64
bits:
Lenguaje Mquina
y
El lenguaje mquina lo
constituyen los cdigos
Lenguaje
binarios tal como se almacenan en la memoria
Ensamblador
para que el procesador
los ejecute.
Qu es un set de
instrucciones?
Elementos de una
instruccin
Representacin de las
instrucciones
Cada instruccin se representa con una
secuencia de bits nica:
La instruccin es dividida en campos
correspondientes a cada uno de los
elementos constituvivos.
En la mayora de los sets de instrucciones
se emplea ms de un formato.
Ejemplo
Conjunto de
Instrucciones
Segn su propsito se agrupan as:
Transferencia de datos
Aritmticas
Lgicas
Rotacin y desplazamiento
Control de flujo
Otras
Interrupciones
Directivas del
ensamblador
Instrucciones de
transferencia de
mov dst,src
datos
xchg dst,src
movzx reg,reg/mem
movsx reg,reg/mem
lea reg,[addr]
xlat
Instrucciones para
transferencia de
movsb / movsw / movsd
cadenas
stosb / stosw / stosd
lodsb / lodsw / lodsd
rep
Ejemplo:
lea esi, fuente
lea edi, destino
mov ecx, longitud
rep movsb
Instrucciones
Aritmticas (1)
add dst,src
sub dst,src
mul src
imul src
div src
idiv src
neg src
Instrucciones
Aritmticas (2)
adc dst,src
sbb dst,src
inc src
dec src
cmp arg1,arg2
Instrucciones Lgicas
and dst,src
or dst,src
xor dst,src
not src
test arg1,arg2
bt, bts, btr, btc dst,pos
bsf dst,src
bsr dst,src
Instrucciones
aritmticas/lgicas
para bloques (strings)
Ejemplos
Instrucciones de
desplazamiento
shr src,bits
shl src,bits
sar src,bits
sal src,bits
Instrucciones de
rotacin
ror src,bits
rol src,bits
rcr src,bits
rcl src,bits
Instrucciones de control
de flujo (1)
jmp addr
je, jne
jb, jbe, ja, jae : Aritmtica sin signo
jg, jge, jl, jle : Aritmtica con signo
jo, jno
jnz, jz
jp, jpe, jnp
jcxz, jecxz : CX=0, ECX=0
Condiciones de salto
(Jcc)
Condiciones de salto
(Jcc)
Ejemplo: if/then/else
Instrucciones para
manejo de
sti, cli :
Poner/Borrar
IF
banderas
std, cld :
Poner/Borrar DF
stc, clc, cmc : Poner/Borrar CF
sahf, lahf
setcc dst
Operacin de la pila
Pila descendente
Direccin del tope de la pila:
SS:SP (16 bit mode),
SS:ESP (32 bit mode),
RSP (64 bit mode)
Instrucciones para
manejo de pila
push mem/reg
pop mem/reg
pushf, popf
pusha, popa
enter size,nestLevel
leave
Stack Frames
Instrucciones de control
de flujo (2)
call addr
ret
loop addr
loope, loopne, loopz, loopnz
addr
Convenciones de
llamadas
Los
compiladores
utilizan
distintas
convenciones sobre el orden de paso de
parmetros en la pila.
La forma ms usualmente utilizada en
lenguaje C es: Se insertan los argumentos
de derecha a izquierda (el primer
argumento queda en el tope de la pila).
El valor de retorno (si se puede ajustar en
una palabra de 32/64 bits) se retorna en
el registro EAX, RAX.
Otra convencin es que quien hace la
llamada, es responsable de limpiar la pila
al regresar.
Ejemplo: Fibonacci
Recursivo
Interrupciones
int n
into
iret
Otras instrucciones
(1)
nop : No operacin.
hlt : Detener el procesador. Solo continua
despus de una interrupcin o reset.
lock : Activa la seal lock del bus
durante la ejecucin de la instruccin
siguiente. Garantiza acceso exclusivo a
memoria. El operando destino debe ser
un direccionamiento a memoria.
wait
:
Asegura
la
ejecucin
de
instrucciones
de
punto
flotante
(pendientes, no enmascaradas) antes de
continuar la ejecucin.
Otras instrucciones
(2)
Entradas y salidas
in acc,port
out port,acc
sysenter
CS SYSENTER_CS_MSR
EIP SYSENTER_EIP_MSR
SS SYSENTER_CS_MSR+8
ESP SYSENTER_ESP_MSR
Cambia a nivel de privilegio 0
sysexit
CS SYSENTER_CS_MSR+16
SS SYSENTER_CS_MSR+24
ESP ECX
EIP EDX
Cambia a nivel de privilegio 3
rdmsr, wrmsr : Leer escribir registros MSR
Otras instrucciones
(4)
Arquitectura de la
FPU
Instrucciones de la
FPU (1)
Apilar (push) datos en
el tope de la pila
de registros
Instrucciones de la
FPU (2)
faddp : st1+st0
fsubp : st1-st0
fmulp : st1*st0
fdivp : st1/st0
fabs : |st0|
fsqrt : sqrt(st0)
fsin : sin(st0)
fcos : cos(st0)
fpatan : atan(st1,st0)
Ejemplo: Solucin
de la ec.
cuadrtica
Material de
referencia