Every count on a card — modules, concepts, minutes, difficulty, importance — is read from that course's own manifest, not written down here. Expand a card for a direct link to each lesson in it.
2 modules
Pass arguments and return values the way AArch64 code expects, and know the rules clang obeys that the C source never mentions, from the stack alignment to the unwind table.
5 concepts125 minadvancedcritical
Every architecture, then the backend · step 6
AAPCS64. The no-flags-register contrast with x86-64 is the reason this is worth reading after x86abi rather than instead of it: one machine needs csel, another does not have a condition to select.
5 concepts
- The Call: Who Passes What, and in Which Register: The Calling Convention, and the Number That Was 128
- The Call: Who Passes What, and in Which Register: One Register, Two Names, and Three Things Called 31
- The Frame: What the Callee Must Ask For, and What It Must Describe: No Red Zone, and the Two Instructions That Is Worth
- The Frame: What the Callee Must Ask For, and What It Must Describe: Callee-Saved, and the Count of Zero That Is Also a Rule
- The Frame: What the Callee Must Ask For, and What It Must Describe: The Frame in a Second Language, and the Shape That Was Not There
2 modules
Decode any AArch64 instruction from its 32 bits: the register classes, the logical-immediate encoding, the conditionals and the bit patterns that do not mean what they first look like.
5 concepts127 minadvancedcritical
Every architecture, then the backend · step 5
AArch64 encoding from the ground up: fixed 32-bit, a four-bit class field, and a logical-immediate encoding that reaches 1,302 of 4,294,967,296 constants.
5 concepts
2 modules
Read and write AArch64 SIMD registers, express an atomic in the form the architecture defines, and put a barrier where one is actually needed rather than where habit puts it.
5 concepts127 minadvancedcritical
Every architecture, then the backend · step 8
NEON, atomics and memory ordering, where one bit carries two meanings depending on which register it is in. Completes the AArch64 half.
5 concepts
2 modules
Handle an exception, take a page-table walk and place the registers an interrupt saves, on the machine an embedded target actually runs on.
6 concepts150 minadvancedcritical
Every architecture, then the backend · step 7
Modes, exceptions, interrupts, virtual memory and page tables -- six concepts in two modules, the AArch64 half of what x86sys did for x86-64.
6 concepts
- The Modes: Getting In, Getting Out, and Being Interrupted: SVC #imm16, and x8 Is a Convention and Not an Architecture
- The Modes: Getting In, Getting Out, and Being Interrupted: One Register, Three Fields, and Thirty-Nine Meanings
- The Modes: Getting In, Getting Out, and Being Interrupted: Sixteen Entries of 0x80, and Four Times No Diagnostic
- The Memory: Regimes, Descriptors, and What Was Measured: T0SZ = 64 - 48, and the Field With a Floor
- The Memory: Regimes, Descriptors, and What Was Measured: Four Levels, and Why a Page Needs a Pair of Relocations
- The Memory: Regimes, Descriptors, and What Was Measured: What Is Measured Here, What Is Quoted, and What You Cannot Conclude
5 modules
Read a COFF object file: its file header, its section table, and the symbol and relocation records a linker uses to place code whose final address nobody knows yet.
18 concepts334 minintermediatecore
Formats: what a binary is · step 4
The object-file layer all three share: PE is built out of COFF, and so is the classic Mach-O object file. It sits after the two of them and before the formats that are only a container.
18 concepts
3 modules
Read a compiler backend from front to back: instruction selection, register allocation, scheduling and encoding, and see every one of those decisions in the emitted bytes.
6 concepts150 minadvancedcritical
Every architecture, then the backend · step 13
IR to machine code: instruction selection, register allocation, scheduling, and the ABI contract, across all three targets. Declares elf, obj, reloc, link and six of the twelve courses above.
6 concepts
5 modules
Take an address in a running program back to the file, line and local variable it came from, by reading the DWARF sections a compiler emits.
23 concepts450 minintermediatecore
Formats: what a binary is · step 7
The format that travels beside an executable instead of being one, and the only reason a stack trace can name a line. Last because it is what you read once everything else is already in place.
23 concepts
- Why Debug Info Exists: Why DWARF Exists
- Why Debug Info Exists: The .debug_* Sections
- Why Debug Info Exists: DWARF 2, 3, 4 and 5
- The Line Number Program: The .debug_line Header
- The Line Number Program: Directory and File Tables
- The Line Number Program: The Standard Opcodes
- The Line Number Program: The Special Opcodes
- The Line Number Program: From Rows to Source Lines
- DIEs, Types, Scopes, Locations and Frames: The DIE Tree
- DIEs, Types, Scopes, Locations and Frames: Types and Type Chains
- DIEs, Types, Scopes, Locations and Frames: Scopes and Inlining
- DIEs, Types, Scopes, Locations and Frames: Location Expressions
- DIEs, Types, Scopes, Locations and Frames: Call Frame Information
- DIEs, Types, Scopes, Locations and Frames: Split DWARF
- DIEs, Types, Scopes, Locations and Frames: Finding Things Without Reading Everything
- Location Lists, Portability and Packages: Location Lists
- Location Lists, Portability and Packages: Range Lists
- Location Lists, Portability and Packages: Same Source, Different Target
- Location Lists, Portability and Packages: Packages
- The Format on Other Inputs: DWARF 4 in Practice
- The Format on Other Inputs: Type Units
- The Format on Other Inputs: Call Sites
- The Format on Other Inputs: The Other Unwind Section
4 modules
Trace an undefined symbol from the first reference to the shared library that answers it: the lookup scope, .dynsym, versioning, TLS blocks and loading at run time.
10 concepts224 minadvancedcritical
The link: IR to a running process · step 5
PLT, GOT, lazy binding, symbol versioning and TLS: the same symbol table and the same relocations, resolved at run time instead of link time.
10 concepts
8 modules
Read any ELF binary end to end: headers, sections, segments, symbols, relocations, and the dynamic structures that connect it to a shared library.
24 concepts408 minintermediatecore
Formats: what a binary is · step 1
The only course here with no prerequisites, and the one the other six are written against. Nothing else in the collection declares it a dependency as often as it does.
24 concepts
3 modules
Explain why one instruction sequence runs faster than another: dependencies, execution width, the front end, branch prediction and speculation.
6 concepts150 minadvancedcritical
The link: IR to a running process · step 9
How the CPU actually executes them: the pipeline, speculation, branch prediction, store buffers. Declares isa, sec and img, and all three are now behind you.
6 concepts
6 modules
Prepare for the HEC Higher Education Aptitude Test: the paper and how it is weighted, quantitative and verbal practice, analytical reasoning, timed drills and full mocks.
69 concepts1141 minbeginnercore
Outside the three routes — see the note below the routes.
69 concepts
- Know the Arena: Know the Arena: What HAT-1 Actually Is
- Know the Arena: Weightage and Study Strategy
- Know the Arena: Your Baseline Diagnostic: Start with Evidence
- Know the Arena: The Eight-Week Program: Training Like an Athlete
- Know the Arena: Your 120 Minutes: Time Budgets and Checkpoints
- Know the Arena: Triage and Guessing: Converting Attempts into Marks
- Quantitative Reasoning: Arithmetic You Can Do in Your Head
- Quantitative Reasoning: Number Properties: Divisibility, Primes, HCF and LCM
- Quantitative Reasoning: Fractions, Decimals and the Conversion Table
- Quantitative Reasoning: Percentages and Percentage Change
- Quantitative Reasoning: Ratio, Proportion and Rate
- Quantitative Reasoning: Averages, Weighted Means and Mixtures
- Quantitative Reasoning: Speed, Distance and Time
- Quantitative Reasoning: Work, Pipes and Rates
- Quantitative Reasoning: Counting and Probability
- Quantitative Reasoning: Powers, Roots and Surds
- Quantitative Reasoning: Algebra Without Fear
- Quantitative Reasoning: Quadratic Equations
- Quantitative Reasoning: Sequences and Series
- Quantitative Reasoning: Geometry and Measurement
- Quantitative Reasoning: Mensuration: Perimeter, Area and Volume
- Quantitative Reasoning: Coordinate Geometry
- Quantitative Reasoning: Data, Averages and Probability
- Quantitative Reasoning: Translating Word Problems
- Quantitative Reasoning: Profit, Loss and Discount
- Quantitative Reasoning: Simple and Compound Interest
- Quantitative Reasoning: Quantitative Drill: 25 Questions in 30 Minutes
- Verbal Reasoning: Vocabulary You Can Actually Learn
- Verbal Reasoning: Synonyms and Antonyms
- Verbal Reasoning: Analogies and Word Relationships
- Verbal Reasoning: Sentence Completion and Signal Words
- Verbal Reasoning: Paragraph Completion and Coherence
- Verbal Reasoning: Sentence Correction
- Verbal Reasoning: Finding the Error: Grammar Rules
- Verbal Reasoning: Agreement, Pronouns and Modifiers
- Verbal Reasoning: Tenses, Articles and Conditionals
- Verbal Reasoning: Punctuation and Sentence Boundaries
- Verbal Reasoning: Prepositions, Idioms and Confused Words
- Verbal Reasoning: Reading Comprehension Under Time
- Verbal Reasoning: Critical Reading: Tone, Purpose and Inference
- Verbal Reasoning: Verbal Drill: 30 Questions in 36 Minutes
- Analytical Reasoning: Assumptions, Conclusions and Arguments
- Analytical Reasoning: Statement and Assumption
- Analytical Reasoning: Statement and Conclusion
- Analytical Reasoning: Strong and Weak Arguments
- Analytical Reasoning: Course of Action
- Analytical Reasoning: Cause and Effect: Correlation Is Not Causation
- Analytical Reasoning: Ordering, Grouping and Deduction
- Analytical Reasoning: Seating Arrangements: Linear and Circular
- Analytical Reasoning: Ordering, Grouping and Scheduling
- Analytical Reasoning: Grouping and Selection Puzzles
- Analytical Reasoning: Network Routing Sets
- Analytical Reasoning: Syllogisms: What Follows Necessarily
- Analytical Reasoning: Set-Based Deduction: Venn Diagrams
- Analytical Reasoning: Relations and Directions
- Analytical Reasoning: Coding and Decoding
- Analytical Reasoning: Is the Information Enough? Data Sufficiency
- Analytical Reasoning: Tables, Charts and Graphs
- Analytical Reasoning: Number and Letter Series
- Analytical Reasoning: Analytical Drill: 20 Questions in 24 Minutes
- The Athlete's Program: How to Run a Mock Test
- The Athlete's Program: The Error Log: Your Only Real Study Material
- The Athlete's Program: How to Review So It Sticks
- The Athlete's Program: What Score Do You Need? Targets and Projection
- The Athlete's Program: Energy, Sleep and Stamina
- The Athlete's Program: Exam Day: Execution Under Pressure
- Engineering Foundations (Optional): Physics and Mechanics for Engineering Candidates
- Engineering Foundations (Optional): Computing Fundamentals
- Engineering Foundations (Optional): Digital Logic and Circuit Basics
4 modules
Follow a program from an executable image to its first instruction: the kernel's mapping, the auxiliary vector, the initial stack and the addresses you are handed.
6 concepts150 minadvancedcritical
The link: IR to a running process · step 6
The loader. auxv, the initial stack, address-space layout, relocation at load, initialisers. The link has produced a file; this is what turns it into a process.
6 concepts
4 modules
Decode x86-64 from bytes yourself: the mode, the opcode map, the prefix layers, ModRM and SIB, and the length arithmetic a tool has to do with no help.
7 concepts167 minadvancedcritical
The link: IR to a running process · step 8
What the bytes inside .text are: registers, flags, addressing modes and decoding, with all three instruction sets contrasted in one place. It declares obj and sec, which is exactly why it sits here and not earlier.
7 concepts
5 modules
Read a .class file: the magic number, the versions, the constant pool everything points into, the code a verifier checks, and the attribute that has carried every new language feature for years.
18 concepts369 minintermediatecore
Formats: what a binary is · step 5
A format with no operating system in it. The class file is verified, not loaded, and after ELF, PE and Mach-O that trade is legible as a container giving up the loader's job to a verifier.
18 concepts
4 modules
Follow a link from object files to a finished executable, and write the linker script that decides where every section lands and why.
10 concepts221 minadvancedcritical
The link: IR to a running process · step 4
The static linker's stages, now that it is known what it resolves and how. Linker scripts, archive selection and LTO only make sense once the stages are named.
10 concepts
8 modules
Read any Mach-O binary: headers, load commands, segments, sections, symbols, dyld, code signing, and how macOS maps an image into memory.
24 concepts400 minintermediatecore
Formats: what a binary is · step 2
Mach-O answers the header, segment, symbol and relocation questions ELF just answered. Its load commands, __LINKEDIT and chained fixups are the clearest proof that these fields are one platform's answers rather than the answers.
24 concepts
4 modules
Predict what a memory access will cost: cache sizes and associativity, the translation path, prefetching, and the point where a huge page stops paying for itself.
8 concepts192 minadvancedcritical
The link: IR to a running process · step 10
What happens between a load and its value: caches and associativity, TLBs, stores, and why a chase and a sweep measure different things. Declares isa and exe.
8 concepts
5 modules
Read the object file your compiler emits: its sections, its symbol tables, its fixup records and the holes left for a linker to fill.
18 concepts362 minintermediatecore
The link: IR to a running process · step 1
The artefact every compiler emits and no programmer ever sees. It compares ELF, COFF and Mach-O object files side by side, which is why Route 1 comes first.
18 concepts
- Why Object Files Exist: The Middle of Every Build
- Why Object Files Exist: A Hole and a Record
- Why Object Files Exist: One Source, Three Formats
- Why Object Files Exist: No Segments, and Why
- Anatomy, Compared: Sections, Compared
- Anatomy, Compared: Symbol Tables, Compared
- Anatomy, Compared: Where Names Live
- Anatomy, Compared: COMMON and the ABI Break
- The Fixup: The Fixup Record
- The Fixup: The Addend Lives in the Bytes
- The Fixup: The Object Relocation Sets
- The Fixup: Position Independence
- Merging and Selection: COMDAT, GROUP, linkonce
- Merging and Selection: The Archive
- Merging and Selection: Weak and Undefined-Weak
- Emitting One: Writing One From Scratch
- Emitting One: The Encodings That Set Relocation Size
- Emitting One: Proving Your Object File Is Right
8 modules
Read any Windows PE image: the DOS and COFF headers, data directories, sections, imports, exports, base relocations, TLS and resources.
24 concepts360 minintermediatecore
Formats: what a binary is · step 3
PE answers them a third time, with a DOS stub, sixteen data directories and an RVA model. Having read ELF and Mach-O, the DOS stub reads as an accident rather than a mystery.
24 concepts
4 modules
Explain what happens when a program asks for something it cannot do itself: the gate tables, the ways in, and what the privilege boundary really protects.
8 concepts204 minadvancedcritical
The link: IR to a running process · step 11
Exceptions, privilege levels and mode changes -- the boundary between asking for something and being refused, and the three ways in. Declares isa, exe, img and sec.
8 concepts
4 modules
Choose the right relocation for a reference, explain what position independence actually costs, and recognise the two ways it goes wrong.
9 concepts195 minadvancedcritical
The link: IR to a running process · step 3
Why one relocation type is not enough -- absolute, PC-relative, GOT-relative, the addend and the pairing rules -- and what position independence actually costs. Needs both the file and the name, so it follows both.
9 concepts
2 modules
Pass arguments and results the way RISC-V code requires, and understand why the architecture needs no condition-code register at all -- and what a compiler does instead.
4 concepts101 minadvancedcritical
Every architecture, then the backend · step 10
The calling convention, and the register that isn't there: no flags register and no condition codes anywhere in the base ISA.
4 concepts
2 modules
Decode RISC-V instructions, compressed or not, and see why one format scatters its immediates while the compressed extension adds a second register field entirely.
5 concepts127 minadvancedcritical
Every architecture, then the backend · step 9
The encoding spectrum: 16 or 32 bits, decided by two bits that are also the two bits saying 'this is a 32-bit instruction', and a second three-bit register encoding in the compressed extension.
5 concepts
2 modules
Write correct RISC-V atomics and memory ordering, and set up a vector whose length and element width are programmed at run time rather than fixed in the encoding.
4 concepts101 minadvancedcritical
Every architecture, then the backend · step 12
Atomics, fences and the vector extension. Declares all three data-path courses and both privileged predecessors, which is why it closes the RISC-V half rather than coming earlier in it.
4 concepts
2 modules
Read the RISC-V privileged specification as a compiler author: CSR encodings and their accessibility fields, the satp page-table format, and the relocation records a walk emits.
4 concepts101 minadvancedcritical
Every architecture, then the backend · step 11
The privileged architecture as a document. Declares rvasm, rvabi and obj, and reads the privileged specification the way a compiler author has to read it: encodings, field widths, and the records a page-table walk emits.
4 concepts
- The Address, the Bits, and the Trap: The CSR Address and the Twelve Instructions That Touch It
- The Address, the Bits, and the Trap: Sv39, Sv48, Sv57 and satp, Measured on the Compiler's Own Shifts
- The Address, the Bits, and the Trap: ecall, the Five Registers, and Why the Mode Is Not in the Instruction
- Where the Claim Stops: What This Course Measured, and What It Refused To
4 modules
Say what each hardening flag does to the bytes it produces, and which of the three layers -- compiler, linker or driver -- is where that decision gets made.
7 concepts167 minadvancedcritical
The link: IR to a running process · step 7
Hardening flags, once you know which bytes are code, which are relocatable and which the loader decides. RELRO, W^X and CET read as changes to specific fields rather than as switches.
7 concepts
4 modules
Decide when vectorisation pays, read a vector instruction, and use gathers, reductions and lane boundaries without a data-dependent stall.
7 concepts186 minadvancedcritical
The link: IR to a running process · step 13
Vectors last of the neutral courses because its costs are the memory hierarchy's costs: the same 4-wide loop wins on L1-resident data and stops winning at 24 MiB, with the lane count unchanged between the two numbers.
7 concepts
4 modules
Reason about a program running on more than one core: topologies, true and false sharing, memory ordering, and when an atomic instruction buys anything at all.
7 concepts179 minadvancedcritical
The link: IR to a running process · step 12
Multiprocessor: true and false sharing, the cost of a lock prefix with nothing to lock against, NUMA. Declares mem, exe, isa and priv, so it closes the neutral core.
7 concepts
4 modules
Explain how a linker turns a name into an address: binding, visibility, archive extraction, versioning and the symbols the linker invents on your behalf.
12 concepts253 minadvancedcritical
The link: IR to a running process · step 2
The linker's central data structure, and the one both the static and the dynamic linker need. It is here rather than after relocations because a relocation's whole job is patching a reference to a symbol.
12 concepts
5 modules
Read a WebAssembly binary: its eight-byte header, its ordered sections, the variable-width LEB128 encoding almost every number uses, and the object file built on top.
13 concepts274 minintermediatecore
Formats: what a binary is · step 6
Almost every number in the file is one variable-width encoding, and the core specification deliberately does not define an object file. It is the format where the compiler/runtime boundary is being renegotiated in public.
13 concepts
2 modules
Place arguments, results and callee-saved registers the way x86-64 code requires, including why a system call moves the return address into r10 instead of rcx.
6 concepts150 minadvancedcritical
Every architecture, then the backend · step 2
The calling convention: why the fourth argument of a call is in rcx and the fourth argument of a syscall is in r10, which is a difference of one instruction.
6 concepts
2 modules
Write and read x86-64 assembly: the legacy, VEX and EVEX encodings, the flags, the conditionals and the addressing modes a compiler emits.
5 concepts127 minadvancedcritical
Every architecture, then the backend · step 1
The instruction surface and the encoding behind it. Declares isa, exe, priv, simd and smp -- all of Route 2 -- and is the reference the other two architectures are measured against.
5 concepts
2 modules
Write correct x86-64 atomics and vector code, and know which LOCK-prefixed forms are exact, which only look it, and what alignment really costs.
6 concepts154 minadvancedcritical
Every architecture, then the backend · step 4
SSE, AVX and AVX-512, then the instructions that imply LOCK without saying so. Declares x86asm, x86abi, smp, simd and mem -- the last data-path course for this architecture.
6 concepts
- The Vector Registers and What the Encoding Changed: SSE and SSE2: The XMM Register and the Alignment Split
- The Vector Registers and What the Encoding Changed: AVX and AVX2: Three Operands, vzeroupper, and What the Upper Half Holds
- The Vector Registers and What the Encoding Changed: AVX-512: ZMM, k0-k7, and a Decoder That Needs No Silicon
- Atomics and Ordering, and the Instructions That Imply LOCK: The Atomic Set: Which Instructions Imply LOCK, and Which Do Not
- Atomics and Ordering, and the Instructions That Imply LOCK: Ordering: TSO, the Three Fences, and What Each One Orders
- Atomics and Ordering, and the Instructions That Imply LOCK: Thirty Encodings, Round-Tripped and Cross-Checked
3 modules
Find out what a ring-3 process can and cannot ask the CPU for, and tell a privilege check apart from a page table that will not map you.
9 concepts231 minadvancedcritical
Every architecture, then the backend · step 3
The privileged side as an inventory: every instruction a ring-3 process can try, and the signal it dies from. The set is not the one in the manual.
9 concepts
- The Machine's Privileged Side, as an Inventory: SYSCALL and the Four Registers It Touches
- The Machine's Privileged Side, as an Inventory: All Thirty-Two, As an x86-64 Reference
- The Machine's Privileged Side, as an Inventory: Descriptor Tables and the Privilege Checks
- The Machine's Privileged Side, as an Inventory: CR0 to CR4, Every Bit
- The Machine's Privileged Side, as an Inventory: DR0 to DR7 and the Mask a Debugger Must Program
- The Address Space, and Which Bytes of It Exist: The 48-Bit Split, LA57 and LAM
- The Address Space, and Which Bytes of It Exist: The Four Entries and Every Flag in One
- Time, and the Limits of What a User Process Can Count: The Performance Monitoring Architecture
- Time, and the Limits of What a User Process Can Count: What Ring 3 Can See, and What It Cannot