
Explore practical x64 assembly programming on Windows and demystify common myths with compact, precise code. Learn the basics of using general purpose registers to build standalone x64 applications.
Learn how x64 assembly handles virtual memory, segments and pages, including reserved vs committed segments, process heap and stack, and the dot data and dot code directives used by linker.
Demonstrate data alignment in x64 assembly using the align directive, showing relative offsets for 1, 2, 4, 8, and 16 alignments and the effects of data versus code labels.
Explore endianness on a 64-bit architecture, showing how loading 1, 2, and 4 bytes into registers yields different byte orders in big and little endian.
Learn memory directives: reserve memory without type checks and understand bytes, s byte, word, s word, d word, sd word, q word, s q word with 8, 16, 32, 64-bit.
Explore how to specify structures and unions in x64 assembly, focusing on offset calculations and abstract fields. Learn to use union and struct directives, including alignment and end s.
Explore memory directives and initialized data declarations in x64 assembly, including labeled and unlabeled allocations, byte to qword values, structure and union initialization, and memory referencing via labels and offsets.
Explore memory addressing modes for moving data into and out of general purpose registers, using immediate values, base and index registers, scaling, displacements, and square-bracket notation.
Explore the x64 general purpose registers, 64-bit wide, including RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP and R8–R15, with byte access via AL.
Explore the x64 status register and its flags—the carry, parity, auxiliary carry, zero, sign, direction, and overflow bits—and how operation results from comparisons and logic influence conditional instructions.
Explore how x64 assembly passes parameters by stacking and by registers, using fastcall conventions with rcx, rdx, r8, and r9, and decide who cleans up the stack.
Explore the skeleton assembly code module for x64 programming, covering symbols, directives, segment, the public entry point main crt startup, externals, comments, and basic machine code tricks.
This course is a precursor to other Practical x64 Programming tutorials. It covers quite a lot of the theory required to successfully program x64 assembly applications, including segments and pages, general purpose registers, memory alignment and endienness. Without such knowledge, programmers would be rather like an ostrich trying to fly.