Bare-Metal Programming 101
Introduction
What is Bare-Metal Programming 101?
To truly understand how software interacts with operating systems and container runtimes, you must understand how code executes at the lowest levels of the machine.
This skill path guides you through the progression from raw machine instructions to structured binaries:
- Bare-Metal Assembly: Understand how the CPU executes machine instructions directly on registers, compare CISC vs. RISC architectures, and write an x86_64 assembly program without any standard runtime.
- The C Compilation Pipeline: Walk through preprocessing (
gcc -E), compiler optimization levels (gcc -O2 -S), assembly (as), and linker resolution (ld), culminating in crafting a working ELF binary without amain()function. - Systems Programming with Go: See how modern compiled languages like Go issue system calls directly to the Linux kernel without libc dependencies, creating self-contained static binaries.
Write Your First Assembly Program
Explore computer hardware architecture, CPU registers, instruction pointer mechanics, and compare CISC vs. RISC designs. Write your first x86_64 assembly program directly on bare metal without runtime dependencies.
Loading tutorial...
The C Compilation Pipeline & Linker Internals
Learn how the GNU C compilation pipeline turns source code into an ELF binary. Explore macro expansion, compiler optimizations, assembly generation, and linker symbol resolution, and complete three hands-on challenges.
Loading tutorial...
Systems Programming with Go & Direct Syscalls
Explore how modern systems programming languages like Go make system calls directly to the Linux kernel, bypassing standard C libraries (libc) to produce self-contained, statically-linked binaries.
Loading tutorial...