Show Menu
Cheatography

x86 / x86-64 arquitectura y Cheat Sheet (DRAFT) by

cheatsheet for x86 architecture

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Instru­ction suffixes

b byte
w word (2 bytes)
l long (4 bytes)
q quad (8 bytes)

Data movement

movx
Src, Dest
Dest = Src
movsxy
Src, Dest
Dest = Src , sign-e­xtend
movzxy
Src, Dest
Dest = Src , zero-e­xtend
El "X o XY en el codigo assembler indica que tipo de dato o datos se estan usando
ej: movq se esta moviendo un dato tipo quad

Flags and jumps

cmp a, b
b-a, set flags
ZF
Zero flag
SF
Sign flag
CF
Carry flag
OF
Overflow flag
 
jmp label
jump to label (uncon­dit­ional)
je label
jump equal ZF=1
jne label
jump not equal ZF=0
js label
jump negative SF=1
jns label
jump not negative SF=0
jg label
jump > (signed) ZF=0 and SF=OF
jge label
jump >= (signed) SF=OF
jl label
jump < (signed) SF!=OF
jle label
jump <= (signed) ZF=1 or SF!=OF

Operac­iones

add src, dst
dst += src
sub src, dst
dst -= src
imul src, dst
dst *= src
neg dst
dst = -dst
sal count, dst
dst <<= count
sar count, dst
dst >>= count (arith shift)
shr count, dst
dst >>= count (logical shift)
and src, dst
dst &= src
or src, dst
dst |= src
xor src, dst
dst ^= src
not dst
dst = ~dst
 

Registers

%rax
Return value
%rbx
Callee saved
%rcx
4th argument
%rdx
3rd argument
%rsi
2nd argument
%rdi
1st argument
%rbp
Callee saved
%rsp
Stack pointer
%r8
5th argument
%r9
6th argument
%r10
Scratch register
%r11
Scratch register
%r12
Callee saved
%r13
Callee saved
%r14
Callee saved
%r15
Callee saved

Call y stack

Push
add to top of stack
Pop
dst remove top from stack
Call
Push fn
Push
Pop fn and return

OP codes

ADD AL, imm8
04 ib
ADD AX, imm16
05 iw
ADD EAX, imm32
05 id
ADD RAX, imm32
REX.W + 05 id
 

Estructure

Estructure

Bloque de registros de propósito general: Los registros de uso general se utilizan para almacenar datos temporales dentro del microp­roc­esador. Hay 8 registros de propósito general en el microp­roc­esador 8086.
Registros de segmento de bloque:La segmen­tación es el proceso en el que la memoria principal de la comput­adora se divide lógica­mente en diferentes segmentos y cada segmento tiene su propia dirección base. Básica­mente, se utiliza para mejorar la velocidad de ejecución del sistema inform­ático, de modo que el procesador pueda obtener y ejecutar los datos de la memoria de manera fácil y rápida.
Comandos de cola: Cola para habilitar el retraso de la ejecución de comandos, ya sea en orden de prioridad, primero en entrar, primero en salir, o en cualquier orden que sirva al propósito actual.
El sistema de control: Es el encargado de admini­strar el compor­tam­iento de otro sistema.