WebAssembly 원리 & 만드는 법
WebAssembly: Principles & How to Build
WebAssembly가 어떻게 동작하고 어떻게 만드는지 배우는 도구입니다. 스택 머신 시각화, 리틀 엔디언 선형 메모리 바이트 그리드, 모듈 구조 해부, Rust·C(Emscripten)·AssemblyScript·Go/TinyGo 컴파일 파이프라인을 눈으로 익혀보세요.
WebAssembly(WASM)가 어떻게 동작하고 어떻게 만드는지 브라우저에서 눈으로 배우는 도구입니다. 이 사이트의 도구들도 대부분 WASM으로 돌아갑니다. WAT를 직접 컴파일·실행해보고 싶다면 아래의 WebAssembly 스튜디오로 이어집니다.
WASM은 이식 가능한 스택 기반 가상 머신(VM)입니다. 네이티브에 가까운 속도, 샌드박스 격리, 언어 중립, 작은 바이너리가 특징입니다.
거의 네이티브 속도
기계어에 가까운 컴팩트한 바이트코드를 브라우저·런타임이 곧바로 기계어로 컴파일합니다.
샌드박스 안전
자체 선형 메모리 안에서만 동작하고, 호스트가 명시적으로 넘겨준 함수(import)만 호출할 수 있습니다.
언어 중립
Rust·C/C++·Go·AssemblyScript 등 여러 언어가 같은 .wasm으로 컴파일됩니다.
작고 빠른 로딩
텍스트가 아닌 바이너리 포맷이라 파싱과 검증이 스트리밍으로 빠르게 이뤄집니다.
✨ 어디서 빛나나
- ▹이미지·동영상 처리(FFmpeg.wasm), 압축, 암호화
- ▹언어 런타임을 브라우저에서: 진짜 Ruby·PHP·Lua·Python 실행
- ▹컴파일러·포매터: esbuild·SWC·Graphviz를 서버 없이
- ▹게임·물리 엔진, 오디오/DSP, CAD 같은 무거운 연산
🧮 스택 머신 시각화
WASM은 레지스터가 아니라 스택으로 계산합니다. 각 명령이 스택에서 값을 꺼내(pop) 연산하고 결과를 다시 넣습니다(push). 한 단계씩 실행해보세요.
(func (result i32)) — 2 + 3
명령어
오퍼랜드 스택
💡
- •스택 머신: 피연산자를 스택에 쌓고, 명령이 위에서 꺼내 계산해 다시 올립니다.
- •i32.const N 은 상수 N을 push, i32.add 는 두 값을 pop 해 합을 push 합니다.
- •local.get $i 는 지역 변수/파라미터 값을 스택에 올립니다.
- •함수가 끝나면 스택에 남은 값(들)이 반환값이 됩니다 — 그래서 타입 검증이 가능합니다.
이어서 해볼 도구
같은 흐름으로 이어지는 도구를 골라 두었습니다.
- WebAssembly 스튜디오WAT(WebAssembly Text)를 작성하면 브라우저에서 바로 바이너리로 컴파일하고, 헥사덤프·역어셈블을 확인하고, 실제로 실행까지 해보는 WebAssembly 학습 도구입니다. 기본·응용·심화 16개 샘플, 바이너리 구조 설명, 문법 치트시트를 제공합니다.
- Rust 학습소Rust의 어려운 부분을 인터랙티브하게 배웁니다 — 소유권·빌림 시각화, 라이프타임, 열거형·패턴 매칭, 트레잇·제네릭, 그리고 예상 출력이 담긴 단계별 예제 라이브러리. 실제 컴파일러는 돌리지 않고, 모든 결과와 rustc 스타일 에러를 학습용으로 미리 계산합니다.
- 프로그래밍 언어 비교Python, JS, Java, Go, Rust, C 문법을 나란히 비교하세요.
- Java 학습소Java의 핵심과 최신 기능을 예제로 배우는 학습 도구 — OOP, 제네릭·컬렉션, 스트림·람다, 동시성, 모던 Java(record·sealed·switch 패턴). 예제마다 미리 계산한 예상 출력과 3개 국어 설명을 제공합니다. 라이브 JVM은 아닙니다.