โปรเจ็กต์นี้เป็นคำตอบของฉันสำหรับการทดลองสนับสนุน "ความเข้าใจเชิงลึกของระบบคอมพิวเตอร์" ฉบับที่สามและบันทึกย่อที่ฉันเขียน ไฟล์การทดลองอยู่ในไดเร็กทอรีแล็บและมาจาก Lab Assignments
ประกอบด้วยไฟล์แล็บทั้งหมด รวมถึงเอกสารอ้างอิงที่ CMU ให้มา และยังรวมถึงไฟล์โซลูชันที่ฉันเขียนด้วย สภาพแวดล้อมการทดลองของฉันคือ Ubuntu 16.04 amd-64 โดยที่แหล่งที่มาจะบันทึกไฟล์ต้นฉบับของแล็บทั้งหมด
นี่คือบันทึกที่ฉันเขียน:
มันเกี่ยวข้องกับการดำเนินการบิต, ส่วนเสริมของทั้งสองและตัวเลขทศนิยม ฯลฯ ซึ่งเป็นคำถามการเขียนโปรแกรมภาษา C
ทั้งหมด
การแยกชิ้นส่วนระเบิดไบนารีสามารถปรับปรุงความสามารถในการอ่านโค้ดการประกอบของคุณได้อย่างมาก
แล็บนี้ส่วนใหญ่เกี่ยวข้องกับการสุ่มสแต็ก วิธีการป้องกันสแต็ก เช่น การไม่สามารถดำเนินการได้ สแต็กโอเวอร์โฟลว์ การโจมตี ROP เป็นต้น
Architecture Lab เกี่ยวข้องกับชุดคำสั่ง Y86-64
การใช้งาน SEQ และ PIPE และการเพิ่มประสิทธิภาพโปรแกรม คุณสามารถทำความคุ้นเคยกับภาษาแอสเซมบลีและฮาร์ดแวร์ HCL
Cache Lab ของ CMU ถูกแทนที่ด้วย Lab นี้ เนื่องจาก Cache Lab ยากกว่า คุณสามารถฝึก Lab นี้ก่อนได้ จากบทที่ 5 และ 6 ของหนังสือ โปรแกรมได้รับการปรับให้เหมาะสม โดยส่วนใหญ่จะใช้วิธีการต่างๆ เช่น การบล็อกลูป เพื่อกำจัดแคชที่พลาดและกำจัดข้อผิดพลาดในการทำนายสาขา
ส่วน A จำเป็นต้องเขียนตัวจำลองแคช และส่วน B จำเป็นต้องปรับฟังก์ชันการย้ายเมทริกซ์ให้เหมาะสมเพื่อลดจำนวนแคชที่พลาด แล็บนี้จะทำให้คุณเข้าใจแคชมากขึ้น ภาค A เขียนไว้แล้ว