ROADMAP ASSEMBLY

GIAI ĐOẠN 1: NỀN TẢNG CƠ BẢN (3-4 tháng)

Khởi đầu

Kiến thức tiên quyết

  • Hệ thống số: Binary, Hexadecimal, Octal
  • Chuyển đổi giữa các hệ số
  • Boolean algebra
  • Logic gates
  • Binary arithmetic: cộng, trừ, nhân, chia
  • Two’s complement
  • Bit operations: AND, OR, XOR, NOT, shift
  • Computer architecture basics

Môi trường phát triển

  • Assemblers: NASM, MASM, GAS (GNU Assembler), FASM, YASM
  • Linkers: ld, link.exe
  • Debuggers: GDB, OllyDbg, x64dbg, WinDbg, IDA Pro, Ghidra
  • Emulators: QEMU, Bochs, DOSBox
  • Text editors: VS Code, Vim, Notepad++
  • IDE: Visual Studio, SASM, Emu8086

Assembly Flavors

  • Intel syntax vs AT&T syntax
  • NASM syntax
  • MASM syntax
  • GAS syntax
  • Inline assembly trong C/C++

Computer Architecture Fundamentals

CPU Architecture

  • Von Neumann architecture
  • Harvard architecture
  • Instruction cycle: Fetch-Decode-Execute
  • Clock cycles
  • Pipeline basics
  • Branch prediction
  • Cache hierarchy: L1, L2, L3
  • Memory hierarchy
  • Bus architecture

Registers (x86/x64)

  • General Purpose Registers (GPR):
    • AX, BX, CX, DX (16-bit)
    • EAX, EBX, ECX, EDX (32-bit)
    • RAX, RBX, RCX, RDX (64-bit)
    • AL, AH, BL, BH, CL, CH, DL, DH (8-bit)
  • Index Registers: SI, DI, ESI, EDI, RSI, RDI
  • Pointer Registers: BP, SP, EBP, ESP, RBP, RSP
  • Instruction Pointer: IP, EIP, RIP
  • Segment Registers: CS, DS, SS, ES, FS, GS
  • Flags Register: EFLAGS, RFLAGS
    • ZF (Zero Flag)
    • CF (Carry Flag)
    • SF (Sign Flag)
    • OF (Overflow Flag)
    • PF (Parity Flag)
    • AF (Auxiliary Flag)
    • IF (Interrupt Flag)
    • DF (Direction Flag)
    • TF (Trap Flag)

Memory Organization

  • Memory addressing
  • Segmented memory model
  • Flat memory model
  • Little-endian vs Big-endian
  • Memory segments: Code, Data, Stack, Heap
  • Virtual memory
  • Memory paging
  • Memory protection

x86 Assembly Basics (16-bit Real Mode)

Program Structure

  • Sections: .data, .bss, .text
  • Labels
  • Comments: ; single line
  • Directives: DB, DW, DD, DQ, DT
  • Data definitions
  • EQU directive
  • TIMES directive
  • Global và External declarations

Data Types

  • Byte (8-bit): DB
  • Word (16-bit): DW
  • Double Word (32-bit): DD
  • Quad Word (64-bit): DQ
  • Ten Bytes (80-bit): DT
  • String definitions
  • Arrays
  • Structures (STRUC)

Basic Instructions

Data Movement
  • MOV: move data
  • XCHG: exchange
  • LEA: load effective address
  • LDS, LES: load pointer
  • PUSH: push onto stack
  • POP: pop from stack
  • PUSHF, POPF: flags
  • IN, OUT: I/O operations
Arithmetic Instructions
  • ADD: addition
  • ADC: add with carry
  • SUB: subtraction
  • SBB: subtract with borrow
  • INC: increment
  • DEC: decrement
  • NEG: negate
  • MUL: unsigned multiply
  • IMUL: signed multiply
  • DIV: unsigned divide
  • IDIV: signed divide
  • CMP: compare
Logical Instructions
  • AND: bitwise AND
  • OR: bitwise OR
  • XOR: bitwise XOR
  • NOT: bitwise NOT
  • TEST: logical compare
  • SHL/SAL: shift left
  • SHR: shift right
  • SAR: arithmetic shift right
  • ROL: rotate left
  • ROR: rotate right
  • RCL: rotate through carry left
  • RCR: rotate through carry right
Control Flow
  • JMP: unconditional jump
  • Conditional jumps:
    • JE/JZ: jump if equal/zero
    • JNE/JNZ: jump if not equal/not zero
    • JG/JNLE: jump if greater
    • JGE/JNL: jump if greater or equal
    • JL/JNGE: jump if less
    • JLE/JNG: jump if less or equal
    • JA: jump if above (unsigned)
    • JAE: jump if above or equal
    • JB: jump if below
    • JBE: jump if below or equal
    • JS: jump if sign
    • JO: jump if overflow
    • JP: jump if parity
    • JC: jump if carry
  • CALL: procedure call
  • RET: return from procedure
  • LOOP: loop counter
  • LOOPE/LOOPZ: loop if equal
  • LOOPNE/LOOPNZ: loop if not equal
String Instructions
  • MOVS: move string
  • CMPS: compare string
  • SCAS: scan string
  • LODS: load string
  • STOS: store string
  • REP prefix: repeat
  • REPE/REPZ: repeat while equal
  • REPNE/REPNZ: repeat while not equal
  • Direction flag: CLD, STD

Addressing Modes

x86 Addressing Modes

  • Immediate addressing: MOV AX, 5
  • Register addressing: MOV AX, BX
  • Direct addressing: MOV AX, [1234h]
  • Register indirect: MOV AX, [BX]
  • Indexed addressing: MOV AX, [SI]
  • Based addressing: MOV AX, [BX+SI]
  • Based indexed: MOV AX, [BX+SI+disp]
  • RIP-relative (x64): MOV RAX, [RIP+offset]

Procedures và Functions

Procedure Basics

  • PROC và ENDP directives
  • CALL và RET
  • Near vs Far procedures
  • Parameter passing
  • Stack frames
  • Local variables
  • Recursion basics
  • Leaf functions

Stack Management

  • Stack pointer (SP, ESP, RSP)
  • Base pointer (BP, EBP, RBP)
  • PUSH và POP operations
  • Stack growth direction
  • Stack alignment
  • Stack overflow
  • Stack smashing

Program Development

Assembly Process

  • Writing source code
  • Assembling: .asm -> .obj
  • Linking: .obj -> .exe
  • Object file formats: COFF, ELF, Mach-O
  • Relocatable code
  • Position-independent code (PIC)

Hello World Programs

  • DOS INT 21h
  • Linux syscalls
  • Windows API calls
  • Basic I/O operations

Debugging Basics

  • Breakpoints
  • Step-through execution
  • Register inspection
  • Memory examination
  • Stack trace
  • Disassembly view

GIAI ĐOẠN 2: INTERMEDIATE (4-5 tháng)

x86-32 (Protected Mode)

Protected Mode Concepts

  • Protected mode vs Real mode
  • Privilege levels: Ring 0-3
  • Segmentation
  • Descriptor tables: GDT, LDT, IDT
  • Segment selectors
  • Task State Segment (TSS)
  • Memory protection
  • Paging mechanisms

32-bit Registers

  • Extended registers: EAX, EBX, ECX, EDX
  • Extended pointers: ESI, EDI, EBP, ESP
  • Extended instruction pointer: EIP
  • Segment registers usage
  • Control registers: CR0, CR2, CR3, CR4
  • Debug registers: DR0-DR7

32-bit Instructions

  • Extended instruction set
  • MOVZX, MOVSX: move with extend
  • BSWAP: byte swap
  • BSF, BSR: bit scan
  • BT, BTC, BTR, BTS: bit test
  • SHLD, SHRD: double precision shift
  • ENTER, LEAVE: stack frame
  • PUSHA, POPA: push/pop all
  • IMUL extended forms
  • Conditional moves: CMOVcc

x86-64 (Long Mode)

64-bit Architecture

  • Long mode vs Legacy mode
  • 64-bit registers: RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP
  • Additional registers: R8-R15
  • 8-bit access: R8B-R15B
  • 16-bit access: R8W-R15W
  • 32-bit access: R8D-R15D
  • RIP-relative addressing
  • Default operand size
  • Address size override
  • REX prefix

Calling Conventions

  • cdecl (C declaration)
  • stdcall (Standard call)
  • fastcall
  • Microsoft x64 calling convention
  • System V AMD64 ABI (Linux)
  • Parameter passing: registers vs stack
  • Return values
  • Caller-saved vs callee-saved registers
  • Shadow space (Windows x64)
  • Red zone (System V)
  • Stack alignment requirements

Advanced Instructions

SIMD Instructions

  • MMX: 64-bit SIMD
  • SSE: 128-bit SIMD (SSE, SSE2, SSE3, SSSE3, SSE4)
  • AVX: 256-bit SIMD (AVX, AVX2)
  • AVX-512: 512-bit SIMD
  • Vector registers: XMM0-XMM15, YMM0-YMM15, ZMM0-ZMM31
  • SIMD operations: packed operations
  • Data alignment for SIMD

Floating-Point Instructions

  • x87 FPU stack
  • FPU registers: ST(0)-ST(7)
  • FPU instructions: FLD, FST, FADD, FSUB, FMUL, FDIV
  • FPU control word
  • FPU status word
  • SSE scalar floating-point
  • AVX floating-point

Bit Manipulation

  • POPCNT: population count
  • LZCNT: leading zero count
  • TZCNT: trailing zero count
  • ANDN: logical AND NOT
  • BMI (Bit Manipulation Instructions)
  • BMI2 extensions

Operating System Interfaces

Linux System Calls

  • Syscall mechanism
  • Syscall numbers
  • Parameter passing
  • Return values
  • Common syscalls: read, write, open, close, exit
  • File operations
  • Process management
  • Memory management
  • Network operations

Windows API

  • Windows system calls
  • Kernel32.dll functions
  • User32.dll functions
  • Calling conventions
  • Parameter passing
  • Unicode vs ANSI
  • Error handling: GetLastError

BIOS Interrupts (Legacy)

  • INT 10h: video services
  • INT 13h: disk services
  • INT 16h: keyboard services
  • INT 21h: DOS services
  • Interrupt vector table

Memory Management

Stack Operations

  • Stack frames
  • Function prologue và epilogue
  • Local variable allocation
  • Parameter access
  • Return address handling
  • Stack pivoting
  • Stack cookies/canaries

Heap Management

  • Dynamic memory allocation
  • malloc/free implementation concepts
  • Memory leaks
  • Heap overflow
  • Use-after-free

Memory Models

  • Tiny model
  • Small model
  • Medium model
  • Compact model
  • Large model
  • Huge model
  • Flat model (32/64-bit)

Macros và Conditional Assembly

Macros

  • Macro definition: %macro
  • Macro parameters
  • Local labels trong macros
  • Multi-line macros
  • Macro expansion
  • Macro libraries
  • Conditional macros

Preprocessor Directives

  • %define, %undef
  • %include
  • %if, %elif, %else, %endif
  • %ifdef, %ifndef
  • %assign
  • Environment variables
  • Compile-time constants

Optimization Basics

Code Optimization

  • Register allocation
  • Instruction selection
  • Reducing memory access
  • Loop unrolling
  • Strength reduction
  • Common subexpression elimination
  • Dead code elimination

Performance Considerations

  • Instruction latency
  • Instruction throughput
  • Pipeline stalls
  • Branch misprediction costs
  • Cache-friendly code
  • Data alignment
  • Prefetching

GIAI ĐOẠN 3: ADVANCED (5-6 tháng)

Advanced Architecture

CPU Microarchitecture

  • Superscalar execution
  • Out-of-order execution
  • Register renaming
  • Speculation
  • Branch prediction algorithms
  • Return stack buffer
  • µop cache
  • Instruction decoder

Cache Architecture

  • Cache lines
  • Cache sets
  • Cache ways
  • Cache associativity
  • Write-through vs write-back
  • Cache coherence: MESI protocol
  • False sharing
  • Cache prefetching

Memory Ordering

  • Sequential consistency
  • Memory barriers
  • Load-load, load-store, store-store, store-load barriers
  • MFENCE, LFENCE, SFENCE
  • Acquire/release semantics
  • Volatile operations

Multithreading và Concurrency

Atomic Operations

  • LOCK prefix
  • XCHG (implicit lock)
  • CMPXCHG: compare and exchange
  • CMPXCHG8B/16B: double-word compare exchange
  • Atomic read-modify-write
  • Memory ordering với atomics

Synchronization Primitives

  • Spinlocks
  • Mutexes implementation
  • Semaphores
  • Condition variables
  • Read-write locks
  • Barriers
  • Lock-free algorithms

Thread-Local Storage

  • FS và GS segment registers
  • TLS implementation
  • Thread control block
  • %fs:0 (Linux), %gs:0 (Windows)

Exception Handling

Interrupts

  • Hardware interrupts
  • Software interrupts
  • Interrupt vector table
  • Interrupt descriptor table (IDT)
  • Interrupt gates
  • Trap gates
  • Interrupt priority
  • Interrupt masking

Exceptions

  • Divide-by-zero
  • Invalid opcode
  • General protection fault
  • Page fault
  • Stack fault
  • Exception handlers
  • Exception frame
  • Nested exceptions

Structured Exception Handling (SEH)

  • __try/__except (Windows)
  • Exception registration records
  • Exception chain
  • Exception filters
  • __finally blocks
  • Vectored Exception Handling (VEH)

Advanced Programming Techniques

Position-Independent Code (PIC)

  • RIP-relative addressing
  • GOT (Global Offset Table)
  • PLT (Procedure Linkage Table)
  • Dynamic linking
  • Lazy binding
  • ASLR implications

Self-Modifying Code

  • Code modification techniques
  • Cache coherency issues
  • Security implications
  • JIT compilation basics
  • Code injection

Polymorphic Code

  • Code obfuscation
  • Metamorphic engines
  • Encryption/decryption stubs
  • Anti-debugging techniques

Reverse Engineering

Disassembly

  • Static analysis
  • Control flow analysis
  • Data flow analysis
  • Cross-references
  • String analysis
  • Import/export tables
  • Recognizing compiler patterns

Dynamic Analysis

  • Debugging techniques
  • Breakpoint types: software, hardware, memory
  • Tracing execution
  • API hooking
  • Memory dumping
  • Unpacking
  • Anti-anti-debugging

Binary Analysis Tools

  • IDA Pro: disassembler
  • Ghidra: reverse engineering
  • Binary Ninja
  • Radare2
  • Hopper Disassembler
  • objdump, readelf
  • PE Explorer, CFF Explorer

Exploit Development

Buffer Overflows

  • Stack-based overflow
  • Heap-based overflow
  • Return address overwrite
  • Shellcode injection
  • NOP sleds
  • Egghunter technique

Protection Mechanisms

  • Stack canaries
  • DEP/NX: Data Execution Prevention
  • ASLR: Address Space Layout Randomization
  • SafeSEH
  • SEHOP
  • Control Flow Guard (CFG)
  • Shadow stack

Exploitation Techniques

  • Return-to-libc
  • ROP (Return-Oriented Programming)
  • JOP (Jump-Oriented Programming)
  • SROP (Sigreturn-Oriented Programming)
  • Heap spraying
  • Use-after-free exploitation
  • Format string vulnerabilities

Cryptography Implementation

Symmetric Encryption

  • AES implementation
  • DES/3DES
  • Block cipher modes
  • Stream ciphers
  • Optimized implementations

Hashing

  • MD5, SHA-1, SHA-256
  • HMAC
  • Cryptographic hash optimization
  • Side-channel resistance

Side-Channel Attacks

  • Timing attacks
  • Cache-timing attacks
  • Power analysis
  • Constant-time implementations
  • Countermeasures

GIAI ĐOẠN 4: SPECIALIZED DOMAINS (4-6 tháng)

Operating System Development

Bootloader Development

  • BIOS boot process
  • UEFI boot process
  • Master Boot Record (MBR)
  • GUID Partition Table (GPT)
  • Boot sectors
  • Stage 1 và Stage 2 bootloaders
  • Switching to protected/long mode
  • Loading kernel

Kernel Development

  • Kernel entry point
  • GDT setup
  • IDT setup
  • Interrupt handling
  • Memory manager basics
  • Process scheduler basics
  • System call interface
  • Driver framework

Device Drivers

  • Hardware interfacing
  • I/O ports: IN, OUT
  • Memory-mapped I/O
  • DMA (Direct Memory Access)
  • Interrupt handling
  • Driver models
  • Device registers
  • PCI configuration

Embedded Systems

Microcontroller Programming

  • ARM Assembly (Thumb, ARM modes)
  • AVR Assembly
  • PIC Assembly
  • MIPS Assembly
  • Register-level programming
  • GPIO manipulation
  • Timer/Counter programming
  • Interrupt configuration

Real-Time Systems

  • Deterministic execution
  • Interrupt latency
  • Task scheduling
  • Priority inversion
  • Watchdog timers
  • Power management
  • Low-power modes

Bare-Metal Programming

  • No OS environment
  • Startup code
  • Linker scripts
  • Memory layout
  • Exception vectors
  • Peripheral initialization
  • Communication protocols: UART, SPI, I2C

Compiler Development

Code Generation

  • Abstract Syntax Tree (AST)
  • Intermediate representation (IR)
  • Instruction selection
  • Register allocation
  • Instruction scheduling
  • Peephole optimization

Optimization Passes

  • Constant propagation
  • Dead code elimination
  • Loop optimization
  • Inline expansion
  • Tail call optimization
  • Vectorization

Game Development

Graphics Programming

  • VGA programming
  • Direct framebuffer access
  • Sprite rendering
  • Pixel manipulation
  • Double buffering
  • Palette manipulation
  • Mode 13h (320x200x256)

Performance-Critical Code

  • Inner loops optimization
  • SIMD for graphics
  • Fixed-point arithmetic
  • Fast approximations
  • Assembly trong game engines

Emulator Development

CPU Emulation

  • Instruction decoding
  • Instruction execution
  • Register state
  • Flag updates
  • Memory access emulation
  • Interrupt emulation

System Emulation

  • Timing accuracy
  • Peripheral emulation
  • Save states
  • Debugging features
  • Performance optimization

Digital Signal Processing (DSP)

Audio Processing

  • Sample rate conversion
  • Digital filters: FIR, IIR
  • FFT implementation
  • Audio effects
  • Real-time processing
  • Fixed-point DSP

Image Processing

  • Convolution
  • Edge detection
  • Color space conversion
  • Image scaling
  • SIMD optimization for images

GIAI ĐOẠN 5: ARCHITECTURE-SPECIFIC (3-4 tháng)

ARM Architecture

ARM Basics

  • ARM vs Thumb instruction sets
  • Registers: R0-R15
  • CPSR (Current Program Status Register)
  • Condition codes
  • Barrel shifter
  • ARM addressing modes

ARM Instructions

  • Data processing
  • Load/Store architecture
  • Multiple register transfer
  • Branch instructions
  • Conditional execution
  • Coprocessor instructions

ARM64 (AArch64)

  • 64-bit registers: X0-X30
  • 32-bit register access: W0-W30
  • Procedure Call Standard
  • NEON SIMD
  • SVE (Scalable Vector Extension)

RISC-V

RISC-V ISA

  • Base integer ISA: RV32I, RV64I
  • Standard extensions: M, A, F, D, C
  • Register set: x0-x31
  • Calling convention
  • Memory ordering
  • CSR (Control and Status Registers)

RISC-V Programming

  • Instruction formats
  • Immediate encoding
  • Pseudo-instructions
  • Compressed instructions
  • Privileged modes

MIPS

MIPS Architecture

  • Load/Store architecture
  • Registers: $0-$31
  • HI/LO registers
  • Delay slots
  • Branch delay slots
  • Coprocessors

MIPS Instructions

  • R-type, I-type, J-type formats
  • Arithmetic operations
  • Load/Store instructions
  • Branch và jump
  • Pseudo-instructions

Other Architectures

PowerPC

  • Register set
  • Instruction set
  • Calling conventions
  • AltiVec SIMD

SPARC

  • Register windows
  • Instruction set
  • Delayed branches
  • VIS instructions

8-bit Processors (Historical)

  • 8080, Z80
  • 6502 (NES, Commodore 64)
  • 6800, 68000

GIAI ĐOẠN 6: MASTERY (liên tục)

Advanced Optimization

Compiler Optimizations

  • Loop transformations
  • Loop fusion, fission
  • Loop interchange
  • Loop tiling
  • Software pipelining
  • Trace scheduling
  • Predication
  • If-conversion

Profile-Guided Optimization

  • Performance profiling
  • Hot path identification
  • Branch probability
  • Cache profiling
  • Instrumentation
  • Feedback-directed optimization

Micro-Optimizations

  • Instruction pairing
  • Dependency chains
  • Port utilization
  • µop fusion
  • Macro-fusion
  • Zero-idiom recognition
  • Move elimination

Security

Exploit Mitigation

  • Stack protection bypass
  • DEP/ASLR bypass
  • ROP chain construction
  • Heap feng shui
  • Type confusion
  • Integer overflows
  • Race conditions

Secure Coding

  • Input validation
  • Bounds checking
  • Integer overflow prevention
  • Secure memory clearing
  • Constant-time algorithms
  • Side-channel resistance

Malware Analysis

  • Static analysis
  • Dynamic analysis
  • Behavioral analysis
  • Packing/unpacking
  • Anti-debugging detection
  • VM detection
  • Sandbox evasion

Research Areas

Speculative Execution Attacks

  • Spectre variants
  • Meltdown
  • Branch Target Injection
  • Bounds Check Bypass
  • Mitigations
  • Microarchitectural side channels

Hardware Security

  • Trusted Execution Environments
  • Intel SGX
  • ARM TrustZone
  • Hardware enclaves
  • Secure boot
  • Attestation

Testing và Verification

Unit Testing

  • Test harnesses
  • Assertion macros
  • Code coverage
  • Regression testing

Fuzzing

  • Input generation
  • Coverage-guided fuzzing
  • Mutation-based fuzzing
  • Crash analysis
  • Sanitizers integration

Formal Verification

  • Correctness proofs
  • Model checking
  • Symbolic execution
  • Abstract interpretation

Documentation và Communication

Code Documentation

  • Comment conventions
  • ASCII art diagrams
  • Register usage tables
  • Memory maps
  • Calling conventions documentation

Technical Writing

  • Architecture documents
  • Algorithm descriptions
  • Optimization reports
  • Security advisories

Tools Development

Custom Assemblers

  • Lexical analysis
  • Parsing
  • Symbol tables
  • Relocation
  • Macro processing

Disassemblers

  • Instruction decoding
  • Control flow recovery
  • Function identification
  • Cross-references

Debuggers

  • Breakpoint implementation
  • Single-stepping
  • Watchpoints
  • Symbol loading
  • Source-level debugging

Community và Resources

Learning Resources

  • Intel Software Developer Manuals
  • AMD64 Architecture Programmer’s Manual
  • ARM Architecture Reference Manual
  • Agner Fog’s optimization guides
  • OSDev Wiki
  • x86 opcode references
  • Assembly language forums

Open Source Projects

  • Linux kernel
  • FreeBSD kernel
  • MINIX
  • SerenityOS
  • ToaruOS
  • Bootloaders: GRUB, UEFI implementations
  • Emulators: QEMU, Bochs

Conferences và Communities

  • DEF CON
  • Black Hat
  • REcon (Reverse Engineering Conference)
  • FOSDEM
  • Assembly Language subreddit
  • OSDev community
  • Security research communities

Career Paths

Job Roles

  • Embedded systems engineer
  • Reverse engineer
  • Security researcher
  • Compiler engineer
  • OS developer
  • Firmware engineer
  • Performance engineer
  • Malware analyst
  • Exploit developer
  • Hardware verification engineer

Certifications

  • GIAC Reverse Engineering Malware (GREM)
  • Offensive Security Certified Professional (OSCP)
  • Certified Reverse Engineering Analyst (CREA)

LỘ TRÌNH HỌC TẬP ĐỀ XUẤT

Tháng 1-4: Giai đoạn 1 - Kiến thức nền tảng, x86 basics, registers, basic instructions

Tháng 5-9: Giai đoạn 2 - 32-bit/64-bit programming, calling conventions, OS interfaces

Tháng 10-15: Giai đoạn 3 - Advanced architecture, optimization, reverse engineering

Tháng 16-21: Giai đoạn 4 - Chuyên môn hóa: OS dev/Embedded/Security

Tháng 22-25: Giai đoạn 5 - ARM, RISC-V, other architectures

Tháng 26+: Giai đoạn 6 - Mastery, research, contribution

TIPS ĐỂ MASTER ASSEMBLY

  • Hiểu rõ computer architecture trước khi code
  • Master một architecture (x86-64) trước khi học others
  • Đọc CPU manuals thoroughly
  • Practice với simple programs first
  • Sử dụng debuggers extensively
  • Đọc disassembly của compiled C code
  • Hiểu calling conventions deeply
  • Learn by reverse engineering
  • Write bootloaders và simple OS
  • Study compiler output
  • Benchmark your code
  • Understand cache effects
  • Master bit manipulation
  • Learn multiple architectures
  • Read academic papers
  • Contribute to open source
  • Study exploits và mitigations
  • Learn hardware fundamentals
  • Practice optimization techniques
  • Write documentation thoroughly
  • Join security CTFs
  • Read processor errata
  • Understand timing attacks
  • Study microarchitecture
  • Keep updated với new extensions
  • Build tools (assemblers, disassemblers)
  • Teach others what you learn
  • Stay curious về hardware
  • Practice every day
  • Patience - assembly is hard but rewarding!

PROJECT IDEAS

Beginner:

  • Calculator program
  • String manipulation functions
  • Simple bootloader
  • Hello World (multiple platforms)
  • File I/O program

Intermediate:

  • Mini operating system kernel
  • Bootloader với file system
  • Encryption algorithms implementation
  • Simple game (Snake, Tetris)
  • Assembly standard library

Advanced:

  • Full operating system
  • JIT compiler
  • Virtual machine/emulator
  • Debugger
  • Exploit development
  • Compiler backend
  • Device driver
  • Hypervisor basics
  • Firmware for embedded device
  • Performance profiler

Expert:

  • Full-featured OS
  • Production compiler
  • Hardware emulator
  • Security research tool
  • Microkernel OS
  • Real-time OS
  • Custom CPU simulator
  • “Programming from the Ground Up” - Jonathan Bartlett
  • “Assembly Language Step-by-Step” - Jeff Duntemann
  • “The Art of Assembly Language” - Randall Hyde
  • “PC Assembly Language” - Paul Carter
  • “Professional Assembly Language” - Richard Blum
  • “Modern X86 Assembly Language Programming” - Daniel Kusswurm
  • “Intel 64 and IA-32 Architectures Software Developer Manuals”
  • “ARM Assembly Language” - William Hohl
  • “Computer Organization and Design” - Patterson & Hennessy
  • “Hacker’s Delight” - Henry Warren
  • “Reversing: Secrets of Reverse Engineering” - Eldad Eilam

Chúc bạn thành công trên con đường master Assembly Language Programming!