어셈블리는 타입이 없다는 통념이 틀린 이유
역량 개발 · GeekNews · 2026.08.21
Odin 프로그래밍 언어가 채택한 혁신적인 인라인 어셈블리 설계 방식에 대해 설명하는 글입니다. 기존의 GCC나 MSVC 방식이 어셈블리를 단순한 문자열 기반의 '탈출구'로 취급하여 컴파일러가 그 의미를 이해하지 못했던 것과 달리, Odin은 어셈블리를 명령어별 타입 시스템을 가진 언어의 일부로 통합했습니다.
Odin의 asm 템플릿은 프로시저와 유사한 구조를 가지며, 다중 반환값 지원과 함께 tie, pin, scratch, width-view와 같은 바인딩을 통해 레지스터 제약을 명확하게 정의합니다. 또한 core:rexcode 인코딩 테이블을 활용하여 명령어의 유효성(피연산자 종류, 범위, 클로버 등)을 소스 코드 위치에서 직접 진단할 수 있는 강력한 기능을 제공합니다.
이러한 설계 덕분에 Odin은 Intel식 목적지 우선 순서를 따르면서도 다양한 ISA(Instruction Set Architecture)를 하나의 일관된 문법으로 지원할 수 있으며, 기존의 컴파일러 intrinsic을 대체할 수 있는 높은 응집성을 보여줍니다. 어셈블리를 단순한 바이트의 나열이 아닌, 타입이 존재하는 다항 대수로 접근한 Odin의 설계 철학을 엿볼 수 있습니다.