Hacker News yorumlarındaki assembly dilini öğrenme yöntemlerine dair çeşitli görüşlerin özeti şöyle:
ARM assembly temellerini sezgisel biçimde öğrenmek için çevrimiçi oyun "OFRAK Tetris"i denemek faydalı olabilir. Bloklar ARM assembly komutlarıdır ve oyun oynarken disassembly’yi hızlı okuma becerisi kazanılabilir.
Yalnızca x86 komut referansı olsa bile, D derleyicisinin inline assembler sözdizimini kullanarak basit ifadeleri derleyip üretilen assembly’yi analiz ederek öğrenmek mümkündür.
"Computer Architecture: A Quantitative Approach", "Getting Started with LLVM Core Libraries", "The Architecture of Open Source Applications" gibi kitaplarla birlikte LLVM’in resmi belgeleri, eğitimleri ve referanslarına bakmak da iyidir.
Apple’ın "Apple Silicon CPU Optimization Guide" ya da Intel’in "Software Developer Manuals" belgeleri gibi CPU üreticilerinin sunduğu optimizasyon rehberlerini ve mimari kılavuzlarını okumak faydalıdır.
Ghidra veya Godbolt’a küçük programlar verip hangi assembly çıktısının üretildiğini gözlemlemek de iyi bir yöntemdir. Derleyicinin ürettiği kodun, komut seçimi kadar optimizasyon geçişleri nedeniyle de iyi olduğunu anlamak gerekir.
Önce PowerPC, x86, ARM gibi belirli bir mimarinin kılavuzlarını okuyup ardından küçük C programları derleyerek disassembly’yi analiz etmek, kod ile komutlar arasındaki ilişkiyi anlamak açısından önemlidir.
"Introduction to 64 Bit Assembly Programming for Linux and OS X" ile ARMv7, ARMv8, RISC-V ve x86 mimari belgelerine bakmak da yararlı olabilir. RosettaCode veya GitHub’daki örnek kodları analiz etmek de yardımcıdır.
"Turing Complete" oyunu aracılığıyla doğrudan bir ISA tasarlayıp assembly ile bulmacalar çözmek de eğlenceli bir yöntemdir.
NASM eğitimleriyle başlayıp ardından Intel kılavuzlarına başvurmak da iyi bir seçenektir.
"Nand2Tetris" projesiyle assembly ve derleyici konularını yeniden gözden geçirmek de önerilir.
1 yorum
Hacker News görüşleri
Hacker News yorumlarındaki assembly dilini öğrenme yöntemlerine dair çeşitli görüşlerin özeti şöyle: