สวัสดีทุกคนบทช่วยสอนนี้หมายถึงการขยายตัวที่อัปเดตเกี่ยวกับบทช่วยสอนที่มีอยู่ซึ่งมุ่งเน้นไปที่สถาปัตยกรรม X86_64 64 บิต มันไม่ได้หมายถึงการแนะนำ C หรือ Assembly ดังนั้นคุณอาจต้องการเรียนรู้ที่อื่นก่อน เราพยายามอย่างเต็มที่ที่จะจัดทำเอกสารทุกอย่างอย่างถูกต้องดังนั้นหากมีบางสิ่งที่คุณไม่เข้าใจคุณอาจต้องย้อนกลับไปสองสามบท
ยังไม่สมบูรณ์ แต่มันก็มาถึงจุดที่เรารู้สึกว่ามันอาจเป็นประโยชน์
บทช่วยสอนนี้มีวัตถุประสงค์เพื่อคนที่มีความเข้าใจทั่วไปเกี่ยวกับ C และการชุมนุม แต่ไม่จำเป็นต้องเป็นผู้เชี่ยวชาญด้านคอมพิวเตอร์ มันถูกออกแบบมาให้เข้าถึงได้มากที่สุดเท่าที่จะเป็นไปได้ดังนั้นมันอาจรู้สึกเหมือนเรามากเกินไปอธิบายแนวคิดบางอย่าง (และไม่เป็นไร) อย่างไรก็ตามหากคุณพบว่าตัวเองหายไปอย่างสิ้นหวัง โปรดแจ้งให้เราทราบ เราสร้างโครงการนี้เพราะเราไม่ชอบการรักษาประตูที่เห็นในการพัฒนาระบบปฏิบัติการและเรายินดีที่จะแก้ไขคำอธิบายของเราหรือชี้ให้คุณไปยังแหล่งข้อมูลอื่นที่อาจมีประโยชน์มากขึ้น
หากคุณต้องการมีส่วนร่วมในโครงการนี้หรือเพิ่มบางอย่างของคุณเองโปรดส่งคำขอดึง ฉันจะพยายามไปหาพวกเขาโดยเร็วที่สุด :)
บทช่วยสอนนี้ใช้ชุดคอมไพเลอร์ LLVM รวมถึง clang และ ld.lld หากคุณไม่ได้ติดตั้งคุณจะต้องทำและเพิ่มลงในเส้นทางของคุณ นอกจากนี้เรายังใช้ nasm สำหรับแอสเซมเบลอร์ของเราและ qemu-system-x86_64 เป็นตัวจำลองของเรา เป็นทางเลือก gdb สามารถใช้ในการดีบักรหัสเคอร์เนล ในขณะที่ไม่จำเป็นบทแนะนำนี้ใช้สคริปต์เชลล์เพื่อทำให้การสร้างและการดีบักง่ายขึ้น เราขอแนะนำอย่างยิ่งให้คุณติด bash AT /bin/bash (หรืออย่างน้อยก็มี symlinked ที่นั่น) ถ้าไม่คุณสามารถเรียกใช้สคริปต์โดยใช้คำสั่ง bash
คุณควรจะสามารถเรียกใช้คำสั่งทั้งหมดข้างต้นในหน้าต่างเทอร์มินัลโดยไม่ระบุเส้นทางเต็ม หากคุณทำไม่ได้คุณอาจต้องติดตั้งและเพิ่มลงในเส้นทางของคุณ บทช่วยสอนนี้ได้รับการทดสอบใน MacOS (Catalina และ Big Sur) เช่นเดียวกับ Ubuntu (20.04) ไม่มีการสนับสนุนระบบปฏิบัติการอื่นอย่างเป็นทางการแม้ว่าจะควรทำงานได้ดีในเครื่อง *Nix ส่วนใหญ่
หมายเหตุ: MacOS
gdbมีปัญหากับสัญลักษณ์การดีบักจากเคอร์เนล (ELF64) คุณอาจต้องเปลี่ยนระดับเอาต์พุตดีบั๊กเป็น -GLLDB ใน MakeFiles และใช้สิ่งนั้นแทนหรือสร้างgdbใหม่จากแหล่งที่มา
แค่ไหน! ไม่จำเป็นต้องติดตั้ง crosscompilers หรือเครื่องมืออื่น ๆ เนื่องจาก Clang มีส่วนใหญ่ครอบคลุมอยู่แล้ว ขอให้โชคดีและถ้าคุณมีปัญหาใด ๆ อย่าลังเลที่จะแจ้งให้เราทราบ!