Welcome to My Lab

I’m Cha Seojun (차서준), a systems programmer, reverse engineer, and hacker.

This is my digital lab where I document how computers really work—from transistor-level logic to modern operating systems.

What you’ll find here

  • Low-level programming – ARM assembly, memory, registers, and system calls
  • Linux internals – kernel, syscall tracing, ELF analysis, debugging
  • Compiler & Toolchain building – writing a C compiler, building an assembler
  • Hardware emulation – QEMU, memory-mapped I/O, CPU design with Verilog
  • Real projects – not tutorials, but real engineering journeys

If you’re curious about what’s under the hood of your computer — and want to build or break it yourself — you’re in the right place.

Get in touch or follow my work on GitHub.


  • ARM Assembly - Build Environment and First Code

    In this post, I will show you how to write and run your first ARM assembly code. This is the foundation for the rest of this tutorial series. We will write a very simple assembly program, compile it, run it in QEMU, and prepare for debugging with GDB.

  • What is Low-Level Programming?

    All the electronic devices we use every day—smartphones, laptops, and servers—are built on a complex combination of software and hardware. Most people only interact with the visible parts, like websites or apps, but beneath the surface lies an unseen world: low-level programming.