Skip to content

x86 IA-32 and x86-64 userland minimal examples tutorial. Hundreds of runnable asserts. Nice GDB setup. IO done with libc, so OS portable in theory. Tested in Ubuntu 18.04. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/cirosantilli/x86-bare-metal-examples, ARM cheat at: https://github.com/cirosantilli/ar…

Notifications You must be signed in to change notification settings

dv14/x86-assembly-cheat

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

x86 Assembly Cheat

Build Status

x86 IA-32 and x86-64 userland minimal examples tutorial. Hundreds of runnable asserts. Nice GDB setup. IO done with libc, so OS portable in theory. Tested in Ubuntu 18.04. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/cirosantilli/x86-bare-metal-examples, ARM cheat at: https://github.com/cirosantilli/arm-assembly-cheat

  1. Getting started
  2. IA-32
    1. main.asm
    2. hello_world.asm
    3. Base concepts
      1. Registers
        1. Segment registers
      2. Addressing
      3. Endianess
    4. Instructions
      1. mov family
        1. MOV
        2. MOVZX
        3. MOVSX
        4. CMOVcc
        5. XCHG
        6. LEA
      2. Flags
        1. SETcc
      3. Arithmetic
        1. Addition
          1. ADD
          2. ADC
          3. INC
        2. Subtraction
          1. SUB
          2. SBB
          3. DEC
        3. Multiplication
          1. MUL
          2. IMUL
          3. NEG
        4. Division
          1. DIV
          2. IDIV
        5. CDQ
        6. Comparison
          1. CMP
      4. Bit-wise
        1. Boolean
          1. NOT
          2. AND
          3. OR
          4. XOR
          5. TEST
        2. Shifts
          1. SHL, SHR
          2. SAL, SAR
          3. ROL, ROR
        3. Test
          1. BT
          2. BTR
          3. BTC
      5. Branching
        1. Jcc
        2. JMP
          1. JMP indirect
        3. LOOPcc
      6. Stack instructions
        1. enter
        2. leave
        3. pusha
        4. pushf
      7. String instructions
        1. rep
        2. cmps
        3. lods
        4. movs
        5. scas
        6. stos
      8. Floating point
        1. FPU
        2. SIMD
          1. FMA
      9. Synchronization
        1. XADD
        2. CMPXCHG
        3. BTS
      10. Misc
        1. RDRAND
        2. POPCNT
        3. RDTSC
        4. NOP
        5. CPUID
    5. Calling conventions
      1. cdecl
      2. cdecl examples
      3. stdcall
    6. Linux
  3. x86-64
  4. Introduction
    1. How to learn
    2. Instruction sets
      1. Other architectures
        1. ARM
        2. Microcontrollers
      2. RISC vs CISC
        1. Microcode
      3. System vs application programming
      4. Flynn's Taxonomy
    3. Assemblers
      1. gas/
      2. nasm/
    4. Pros and cons of assembly
    5. Intel processor history
    6. Intel vs AT&T syntax
      1. intel2gas
    7. Implementations
    8. Extensions
    9. CPU architecture
      1. CPU Optimizations
      2. CPU bugs
      3. Cache
      4. Instruction level parallelism
        1. Pipeline
        2. Branch prediction
        3. Superscalar
        4. VLIW
        5. SIMT
      5. CPU benchmarks
  5. Containers
    1. ELF
      1. ELF Hello World Tutorial
  6. Dynamic libraries
    1. ld-linux.so
      1. ldd
  7. Compiler generated
  8. Binutils
    1. ld
      1. Linker scripts
    2. readelf
    3. objcopy
    4. objdump
    5. size
  9. misc
  10. Bibliography
  11. Related tutorials
    1. x86 Instruction Encoding Tutorial
    2. C++ Cheat
    3. Linux Cheat

WIP

  1. Binutils
    1. ar
    2. elfedit
    3. nm
    4. strip
  2. DWARF
  3. Symbol Versioning
  4. Debug registers

About

x86 IA-32 and x86-64 userland minimal examples tutorial. Hundreds of runnable asserts. Nice GDB setup. IO done with libc, so OS portable in theory. Tested in Ubuntu 18.04. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/cirosantilli/x86-bare-metal-examples, ARM cheat at: https://github.com/cirosantilli/ar…

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Assembly 76.1%
  • C 13.0%
  • Makefile 6.8%
  • C++ 3.9%
  • Other 0.2%