/x86-assembly-cheat

x86 userland minimal examples. Hundreds of runnable asserts. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/************/x86-bare-metal-examples

Primary LanguageAssembly

x86 Assembly Cheat

Build Status

x86 userland minimal examples tutorial. Hundreds of runnable asserts. Containers (ELF), linking, calling conventions. System land cheat at: https://github.com/************/x86-bare-metal-examples

  1. Getting started
  2. Introduction
    1. How to learn
    2. Instruction sets
      1. Other architectures
        1. ARM
        2. RISC-V
        3. 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
  3. 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 BT BTR 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
        4. PAUSE TODO
      10. Misc
        1. RDRAND
        2. POPCNT
        3. RDTSC
        4. NOP
        5. CPUID
    5. Calling conventions
      1. cdecl
      2. cdecl examples
      3. stdcall
    6. Linux
  4. x86-64
  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