บทเรียนที่ครอบคลุมเกี่ยวกับการเขียนโปรแกรม assembly x86-64 ได้จุดประกายความสนใจของชุมชนในการศึกษาการเขียนโปรแกรมระดับต่ำอีกครั้ง โดยมีนักพัฒนาแบ่งปันแหล่งข้อมูลและอภิปรายเกี่ยวกับแนวทางที่ดีที่สุดสำหรับการเรียนรู้ assembly ในปี 2025
บทเรียนซึ่งเน้นไปที่การเขียนโปรแกรม Windows แบบ 64-bit โดยใช้ไวยากรณ์ Intel ได้ดึงดูดความสนใจจากทั้งผู้เริ่มต้นและโปรแกรมเมอร์ที่มีประสบการณ์ที่ต้องการฟื้นฟูทักษะ assembly ของตน คู่มือนี้ครอบคลุมแนวคิดพื้นฐานเช่น registers การกำหนดที่อยู่หน่วยความจำ และ Windows calling convention พร้อมทั้งให้ตัวอย่างที่ใช้งานได้จริงโดยใช้ NASM assembler และเครื่องมือ debugging
ลำดับชั้นการตั้งชื่อ Register ใน x86-64:
ขนาด Register | ตัวอย่าง | Bits ที่อ้างอิง |
---|---|---|
64-bit | RAX | [0-63] |
32-bit | EAX | [0-31] |
16-bit | AX | [0-15] |
8-bit low | AL | [0-7] |
8-bit high | AH | [8-15] |
หมายเหตุ: Register แบบ 8-bit "high" ( AH , BH , CH , DH ) มีอยู่เฉพาะใน general-purpose register สี่ตัวแรกเท่านั้น เนื่องจากการตัดสินใจในการออกแบบ x86 ในอดีต
![]() |
---|
ภาพหน้าจอของเซสชันการดีบักใน Windbg ที่แสดงองค์ประกอบสำคัญของการเขียนโปรแกรม assembly ของ x86-64 |
ชุมชนผลักดันทางเลือกสมัยใหม่
แม้ว่าบทเรียน x86-64 จะได้รับการตอบรับที่ดี แต่สมาชิกในชุมชนกำลังส่งเสริมสถาปัตยกรรมชุดคำสั่งที่ใหม่กว่าอย่างแข็งขัน นักพัฒนาหลายคนได้เสนอให้เรียนรู้ RISC-V assembly แทน โดยอ้างถึงการออกแบบที่สะอาดกว่าและความสำคัญที่เพิ่มขึ้นในอุตสาหกรรม คนอื่นๆ ได้เน้นย้ำ ARM/AArch64 assembly ว่ามีความเกี่ยวข้องมากขึ้น โดยเฉพาะอย่างยิ่งเมื่อพิจารณาจากการขยายตัวของ ARM ในอุปกรณ์คอมพิวเตอร์สมัยใหม่
การอภิปรายเผยให้เห็นความแตกต่างระหว่างรุ่นในแนวทางการเรียนรู้ สมาชิกในชุมชนบางคนแนะนำให้เริ่มต้นด้วยสถาปัตยกรรมเก่าและง่ายกว่าก่อนที่จะก้าวไปสู่สถาปัตยกรรมสมัยใหม่ โดยโต้แย้งว่าวิธีนี้จะสร้างรากฐานที่แข็งแกร่งกว่า ในขณะที่คนอื่นๆ ยืนยันว่าการกระโดดไปยังชุดคำสั่งร่วมสมัยโดยตรงจะเป็นประโยชน์มากกว่าสำหรับนักพัฒนาในปัจจุบัน
แหล่งข้อมูลการศึกษาท่วมท้นการอพยพ
บทเรียนได้กระตุ้นให้เกิดการแบ่งปันสื่อการเรียนรู้อย่างกว้างขวางในสถาปัตยกรรมที่แตกต่างกัน สมาชิกในชุมชนได้มีส่วนร่วมในการให้ลิงก์ไปยังหลักสูตรมหาวิทยาลัย บทเรียนออนไลน์ และเอกสารอ้างอิงที่ครอบคลุมทุกอย่างตั้งแต่ x86-64 พื้นฐานไปจนถึงการเขียนโปรแกรม RISC-V ขั้นสูง การกล่าวถึงที่น่าสนใจรวมถึงหลักสูตรสถาปัตยกรรมที่ครอบคลุมของ OpenSecurityTraining2 และเครื่องมือการแสดงภาพต่างๆ ที่ช่วยให้ผู้เริ่มต้นเข้าใจการเข้ารหัสคำสั่ง
การพัฒนาที่น่าสนใจอย่างหนึ่งคือการกล่าวถึง asmjit ซึ่งเป็นไลบรารีสำหรับการสร้างโค้ดขณะรันไทม์ที่ช่วยให้นักพัฒนาสามารถฝัง assembly ที่เขียนด้วยมือลงในแอปพลิเคชันได้ สิ่งนี้ได้จุดประกายความสนใจในหมู่นักพัฒนาที่ต้องการใช้ assembly สำหรับส่วนที่ต้องการประสิทธิภาพสูงโดยไม่ต้องเขียนโปรแกรมทั้งหมดใน assembly
แหล่งเรียนรู้ Assembly ที่สำคัญที่กล่าวถึง:
• แหล่งข้อมูล x86-64:
- คู่มืออ้างอิงคำสั่ง AsmGrid
- คู่มืออ้างอิง x86 ของ Felix Cloutier
- เอกสาร calling convention ของ Microsoft x64
- ชีทสรุป x64 ของ CS Brown
• แหล่งข้อมูล RISC-V:
- คู่มือ assembly ของ RISC-V อย่างเป็นทางการ
- คู่มือการเขียนโปรแกรม RISC-V
- เว็บไซต์เอกสารออนไลน์หลายแห่ง
• แหล่งข้อมูล ARM/AArch64:
- คู่มืออ้างอิง ARM64 encoding ของ Stanford
- ตำราเรียน Computer Organization (เน้น ARM)
- ซีรีส์บทเรียน YouTube พร้อมการสาธิต CPUlator
• เครื่องมือและแพลตฟอร์ม:
- NASM assembler
- Windbg debugger
- Godbolt compiler explorer
- ไลบรารี asmjit สำหรับการสร้างโค้ดแบบ runtime
ความกังวลเรื่องความถูกต้องทางเทคนิคเผยออกมา
สมาชิกในชุมชนที่มีสายตาเฉียบคมได้ระบุความไม่ถูกต้องทางเทคนิคหลายประการในบทเรียนต้นฉบับ โดยเฉพาะอย่างยิ่งเกี่ยวกับการตั้งชื่อ register การอภิปรายเกี่ยวกับการแก้ไขเหล่านี้ได้กลายเป็นการศึกษาในตัวเอง โดยมีโปรแกรมเมอร์ที่มีประสบการณ์อธิบายวิวัฒนาการทางประวัติศาสตร์ของการตั้งชื่อ register x86 จากสถาปัตยกรรม 8-bit ไปยัง 64-bit
การแก้ไขเหล่านี้เน้นย้ำถึงความซับซ้อนของ x86 assembly ซึ่งการตัดสินใจในอดีตได้สร้างรูปแบบการตั้งชื่อที่ดูเหมือนไม่สอดคล้องกัน แนวทางการทำงานร่วมกันของชุมชนในการระบุและอธิบายปัญหาเหล่านี้แสดงให้เห็นถึงคุณค่าของการตรวจสอบโดยเพื่อนร่วมงานในการศึกษาทางเทคนิค
การอภิปรายที่กำลังดำเนินอยู่ชี้ให้เห็นว่าแม้ x86-64 จะยังคงมีความสำคัญสำหรับการทำความเข้าใจว่าคอมพิวเตอร์สมัยใหม่ทำงานอย่างไร แต่ชุมชนการเขียนโปรแกรมกำลังให้ความสนใจมากขึ้นกับสถาปัตยกรรมชุดคำสั่งที่สะอาดและทันสมัยกว่า การเปลี่ยนแปลงนี้สะท้อนถึงการเปลี่ยนแปลงที่กว้างขึ้นในภูมิทัศน์คอมพิวเตอร์ ซึ่งโปรเซสเซอร์ ARM กำลังได้รับความนิยมในทุกอย่างตั้งแต่สมาร์ทโฟนไปจนถึงศูนย์ข้อมูล
หมายเหตุ: NASM (Netwide Assembler) เป็น assembler ที่ได้รับความนิยมสำหรับสถาปัตยกรรม x86 RISC-V เป็นสถาปัตยกรรมชุดคำสั่งโอเพนซอร์สที่ออกแบบมาเพื่อความเรียบง่ายและความสามารถในการขยาย
อ้างอิง: Let's Learn x86-64 Assembly! Part 0 - Setup and First Steps