Skip to content
All tags

#assembly

6 posts

Stanford CS107 Lecture 15: Reading x86-64 Addressing Modes Without Confusing Addresses and Values

CS107 Lecture 15 decomposes x86-64 mov operands into immediate, register, absolute, indirect, displacement, indexed, and scaled-indexed forms, then unifies pointer dereference and array access with D + R[b] + R[i]×s.

Stanford CS107 Lecture 16: From Subregisters to x86-64 Arithmetic and Logic

CS107 Lecture 16 connects b/w/l/q data widths, subregisters, movs/movz, lea, calling conventions, arithmetic and logic, and shifts through one method: establish operand width before tracing sources, destinations, and real memory accesses.

Stanford CS107 Lecture 18: From Condition Codes to x86-64 Loops

CS107 Lecture 18 connects ZF/SF/CF/OF to cmp, test, signed and unsigned conditional jumps, then reconstructs if statements, loops, dynamic instruction counts, setcc, and cmovcc.

Stanford CS107 Lecture 17: From Multiply and Divide to x86-64 Control Flow

CS107 Lecture 17 completes full-width x86-64 multiplication and division, traces %rip through instruction bytes, and uses direct and indirect jmp to show how execution leaves its default sequential path.

Stanford CS107 Lecture 19: Understanding x86-64 Function Calls and Calling Conventions

CS107 Lecture 19 traces %rsp, push/pop, call/ret, parameters, return values, stack locals, and caller/callee register discipline to build the ABI contract that preserves data and control across functions.

Stanford CS107 Lecture 14: From C to x86-64, Reading Disassembly for the First Time

CS107 Lecture 14 dissects the ten x86-64 instructions for sum_array: addresses and machine bytes appear on the left, AT&T assembly on the right, and the reader's job is to recover C-level effects from opcodes, operands, registers, and control flow—not to write assembly from scratch.