Tóm tắt các ý kiến đa dạng trong phần bình luận Hacker News về cách học ngôn ngữ assembly như sau:
Nếu muốn học trực quan những kiến thức cơ bản của ARM assembly, việc chơi game trực tuyến "OFRAK Tetris" sẽ khá hữu ích. Các khối trong game là các lệnh ARM assembly, và khi chơi bạn có thể nhanh chóng học cách đọc disassembly.
Chỉ cần có tài liệu tham chiếu lệnh x86 là có thể tận dụng cú pháp inline assembler của trình biên dịch D để biên dịch các biểu thức đơn giản, rồi học bằng cách phân tích phần assembly được tạo ra.
Cũng nên tham khảo các sách như "Computer Architecture: A Quantitative Approach", "Getting Started with LLVM Core Libraries", "The Architecture of Open Source Applications", cùng với tài liệu chính thức, tutorial và reference của LLVM.
Việc đọc các hướng dẫn tối ưu hóa hoặc tài liệu kiến trúc do nhà sản xuất CPU cung cấp, như "Apple Silicon CPU Optimization Guide" của Apple hay "Software Developer Manuals" của Intel, cũng rất hữu ích.
Một cách hay khác là đưa các chương trình nhỏ vào Ghidra hoặc Godbolt để quan sát assembly được xuất ra. Cần hiểu rằng mã do trình biên dịch tạo ra thường tốt không phải vì chọn lệnh, mà vì các bước tối ưu hóa.
Trước hết, nên đọc tài liệu của một kiến trúc cụ thể như PowerPC, x86 hoặc ARM, sau đó biên dịch các chương trình C nhỏ và phân tích disassembly để hiểu mối quan hệ giữa mã nguồn và lệnh máy.
Cũng nên tham khảo "Introduction to 64 Bit Assembly Programming for Linux and OS X" hoặc tài liệu kiến trúc ARMv7, ARMv8, RISC-V, x86. Việc phân tích mã ví dụ trên RosettaCode hay GitHub cũng sẽ giúp ích.
Thử tự xây ISA và giải puzzle bằng assembly qua game "Turing Complete" cũng là một cách thú vị.
Bắt đầu với tutorial NASM rồi tham khảo tài liệu của Intel cũng là một lựa chọn tốt.
Dự án "Nand2Tetris" cũng được khuyến nghị để ôn lại assembly và compiler.
1 bình luận
Ý kiến Hacker News
Tóm tắt các ý kiến đa dạng trong phần bình luận Hacker News về cách học ngôn ngữ assembly như sau: