TECH 으로 돌아가기
TECH HACKER NEWS 오늘 5분 읽기 29 READS

어셈블리로 다시 짓는 vtable과 클로저: 랜들 하이드의 신간이 겨냥한 '그럴듯함'과 '이해' 사이

어셈블리로 다시 짓는 vtable과 클로저: 랜들 하이드의 신간이 겨냥한 '그럴듯함'과 '이해' 사이
SOURCE IMAGE · HACKER NEWS

AI에게 x86에서 vtable이 어떻게 동작하는지 물으면 꽤 그럴듯한 설명이 돌아온다. 문제는 그 설명이 실제로 Windows가 vtable을 어떤 형태로 기대하는지, 메서드 디스패치가 명령어 수준에서 왜 그렇게 동작하는지, 관례를 벗어났을 때 무엇이 깨지는지까지는 알려주지 못한다는 점이다. 랜들 하이드(Randall Hyde)의 신간 『The Art of 64-Bit Assembly』(No Starch Press)는 바로 이 '그럴듯한 설명'과 '진짜 이해' 사이의 간극을 겨냥한다. 마법도, 지름길도, 탓할 런타임도 없다는 것이 이 책이 스스로 내건 태도다.

런타임을 걷어내고 명령어로 다시 짓는다

이 책의 구성 원리는 단순하면서도 급진적이다. C++, 파이썬, 러스트에서 이미 써 온 구조들을 가져와 그 위에 얹혀 있던 런타임을 벗겨내고, Windows 환경의 MASM(마이크로소프트 매크로 어셈블러)으로 처음부터 다시 쌓아 올린다. 객체, 예외, 클로저, 코루틴, 동시성 같은 개념이 각각 명령어 단위로 해부되며, 그 과정에서 내려지는 모든 결정이 명시적으로 드러난다. 고급 언어에서는 컴파일러와 런타임이 조용히 처리해 주던 부분을, 개발자가 직접 레지스터와 스택과 메모리 레이아웃으로 구현해 보게 만드는 방식이다.

목차를 보면 이 접근이 어디까지 밀고 나가는지 가늠할 수 있다. 고급 매크로와 유니코드 문자열, 초월함수에서 시작해 고급 프로시저, 동시성 프로그래밍, MASM을 이용한 객체지향 프로그래밍, 예외 처리로 이어진다. 후반부는 썽크와 클로저, 고급 매개변수 구현, 이터레이터, 그리고 코루틴·제너레이터·파이버를 다룬다. 부록으로는 ASCII 문자표, 용어집, 그리고 비주얼 스튜디오 설치와 사용법이 붙는다. 파이썬 개발자에게 익숙한 제너레이터나 이터레이터가 기계 수준에서 어떻게 재현되는지를 다룬다는 점이 눈에 띈다.

'어려운 부분을 믿음으로 넘기던' 개발자를 위한 책

저자는 이 책의 독자를 분명히 한정한다. 어셈블리를 이미 알고 있으면서, 그동안 어려운 부분을 그냥 믿음으로 받아들이던 것을 그만두고 싶은 사람을 위한 책이라는 것이다. 즉 입문서가 아니라, 표면적 이해에서 명령어 수준의 확신으로 넘어가려는 사람을 겨냥한다. 이 지향은 저자의 이력과 맞닿아 있다. 랜들 하이드는 정확성이 선택 사항이 아닌 의료기기, 원자력 시스템, 임베디드 하드웨어 분야에서 수십 년간 어셈블리를 작성해 왔고, 대학에서 어셈블리 언어 프로그래밍을 가르쳤다. 『The Art of Assembly Language』, 『The Art of ARM Assembly』, 그리고 『Write Great Code』 시리즈의 저자이기도 하다.

한국 실무자에게 남는 의미와 한계

한국의 IT 실무자 관점에서 이 책이 갖는 가치는, 요즘처럼 생성형 AI가 코드 설명을 즉석에서 쏟아내는 환경에서 오히려 더 또렷해진다. AI는 그럴듯한 서술을 만드는 데 능하지만, 특정 플랫폼이 실제로 기대하는 바이너리 규약이나 관례를 벗어났을 때 발생하는 파손 지점까지 책임지지는 않는다. 저수준에서 무엇이 왜 그렇게 동작하는지를 직접 손으로 재현해 본 경험은, AI가 내놓은 설명이 맞는지 틀린지를 판별하는 감각으로 이어진다. 성능 최적화, 리버스 엔지니어링, 임베디드·시스템 프로그래밍처럼 추상화의 바닥을 들여다봐야 하는 영역에서 이 감각은 그대로 실무 역량이 된다.

다만 범위의 한계는 분명히 인식하는 편이 좋다. 이 책은 x86-64와 MASM, 그리고 Windows 환경을 전제로 한다. 리눅스에서 NASM이나 GAS를 쓰거나 ARM 기반으로 개발하는 실무자에게는 호출 규약, 예외 처리 메커니즘, 스레딩 모델 등에서 그대로 옮겨지지 않는 부분이 생긴다. ARM 계열이라면 같은 저자의 별도 저작이 더 맞는 선택일 수 있다. 결국 이 책은 특정 도구를 익히기 위한 매뉴얼이라기보다, 고급 언어의 추상화가 기계 위에서 실제로 어떻게 성립하는지를 한 번쯤 자기 손으로 확인해 보려는 개발자에게 어울리는 성격의 책이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://nostarch.com/art-64-bit-assembly-v2
SHARE
처리 중...