https://github.com/mwangi-derrick/asm-lab
A structured laboratory for exploring assembly language, SIMD vectorization, and compiler emission across C, Go, and Rust.
https://github.com/mwangi-derrick/asm-lab
assembly compilers go low-level rust simd x86-64
Last synced: 9 days ago
JSON representation
A structured laboratory for exploring assembly language, SIMD vectorization, and compiler emission across C, Go, and Rust.
- Host: GitHub
- URL: https://github.com/mwangi-derrick/asm-lab
- Owner: Mwangi-Derrick
- Created: 2026-05-16T17:48:28.000Z (about 2 months ago)
- Default Branch: master
- Last Pushed: 2026-05-26T11:47:20.000Z (about 1 month ago)
- Last Synced: 2026-05-26T13:05:47.964Z (about 1 month ago)
- Topics: assembly, compilers, go, low-level, rust, simd, x86-64
- Language: Assembly
- Size: 45.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ASM Lab
A structured environment for exploring the relationship between high-level languages and assembly.
## Repository Structure
### [into-the-metal/](./into-the-metal/)
**Pipeline A: High-Level Language ──> Assembly**
Inspect how compilers (GCC, Go, Rust) translate code into machine instructions.
- `c-cpp/`: GCC/Clang output analysis.
- `go/`: Plan9 assembly generation.
- `rust/`: LLVM to ASM emission.
### [from-the-metal/](./from-the-metal/)
**Pipeline B: Hand-Written Assembly ──> Object File ──> Executable**
Write raw assembly and link it with C harnesses.
- `01-basics/`: Entry points and system calls.
- `02-calling-conv/`: Register management and stack frames.
- `03-simd-vectors/`: Performance optimization with AVX/SSE.
### [notes/](./notes/)
**Engineering Field Logs**
- `windows_x64_abi.md`: Reference for Windows calling conventions.
- `avx_cheat_sheet.md`: SIMD instruction guide.
- `toolchain_setup.md`: Compiler and assembler flags.
## Getting Started
Use the provided `Makefile` to build targets:
```bash
# Build all basic and SIMD targets
make
# Clean up binaries
make clean
```