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
RECOMMENDED BOOKS¤
- "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!