해커뉴스 댓글에서 어셈블리 언어를 배우는 방법에 대한 다양한 의견을 요약하면 다음과 같음:
ARM 어셈블리 기초를 직관적으로 배우려면 온라인 게임 "OFRAK Tetris"를 해보는 것이 도움됨. 블록이 ARM 어셈블리 명령어이고, 게임을 하면서 빠르게 디스어셈블리를 읽는 법을 익힐 수 있음.
x86 명령어 레퍼런스만 있으면 D 컴파일러의 인라인 어셈블러 문법을 활용해 간단한 표현식을 컴파일해보고 생성된 어셈블리를 분석하면서 배울 수 있음.
"Computer Architecture: A Quantitative Approach", "Getting Started with LLVM Core Libraries", "The Architecture of Open Source Applications" 등의 책과 LLVM 공식 문서, 튜토리얼, 레퍼런스를 참고하는 것도 좋음.
Apple의 "Apple Silicon CPU Optimization Guide"나 Intel의 "Software Developer Manuals"처럼 CPU 제조사에서 제공하는 최적화 가이드나 아키텍처 매뉴얼을 읽는 것이 도움됨.
Ghidra나 Godbolt에 작은 프로그램을 넣어보고 어떤 어셈블리가 출력되는지 관찰하는 것도 좋은 방법. 컴파일러가 생성하는 코드는 명령어 선택보다는 최적화 패스 때문에 좋은 편이라는 점을 이해해야 함.
먼저 PowerPC, x86, ARM 등 특정 아키텍처의 매뉴얼을 읽은 뒤, 작은 C 프로그램을 컴파일해서 디스어셈블리를 분석하면서 코드와 명령어의 대응관계를 이해하는 것이 중요함.
"Introduction to 64 Bit Assembly Programming for Linux and OS X"이나 ARMv7, ARMv8, RISC-V, x86 아키텍처 문서를 참고하는 것도 좋음. RosettaCode나 GitHub의 예제 코드를 분석해보는 것도 도움됨.
"Turing Complete" 게임을 통해 직접 ISA를 만들어보고 어셈블리로 퍼즐을 풀어보는 것도 재미있는 방법임.
Hacker News 의견
해커뉴스 댓글에서 어셈블리 언어를 배우는 방법에 대한 다양한 의견을 요약하면 다음과 같음: