พื้นที่สีแดงนั้นบริสุทธิ์และเรียบง่ายเป็นการเพิ่มประสิทธิภาพที่สามารถบันทึกคำแนะนำได้ หมายความว่าไม่จำเป็นสำหรับโค้ดที่ปล่อยออกมาสำหรับทุกฟังก์ชั่นในการลบออกจากตัวชี้สแต็กเพื่อสร้างที่จัดเก็บในตัวเครื่อง
sub XXX, %rsp
ที่จุดเริ่มต้นของการเรียกใช้ฟังก์ชันทุกครั้งแม้ว่าจะไม่ใช่ฟังก์ชัน leaf บ่อยครั้งที่รหัสที่ปล่อยออกมาจากคอมไพเลอร์สามารถใช้พื้นที่ชั่วคราวในโซนสีแดงด้านล่างตัวชี้สแต็กโดยไม่จำเป็นต้องบันทึกและก่อนเรียกใช้ฟังก์ชันอื่น นี่คือการเพิ่มประสิทธิภาพที่มีประโยชน์ที่จะมี
หากคุณไม่ต้องย่อยจากตัวชี้สแต็คอีกครั้งรหัสที่ปล่อยออกมาสามารถใช้ rsp เป็นตัวชี้พื้นฐานงานที่สงวนไว้สำหรับ rbp ตามปกติและรหัสที่ปล่อยออกมาสามารถใช้ rbp เป็นทะเบียนทั่วไปอื่นได้
ท้ายที่สุดนี้หมายถึงคำนำหน้าและบทส่งท้ายของการเรียกใช้ฟังก์ชันแต่ละครั้งสามารถบันทึกสองคำสั่งที่จะบันทึกและกู้คืน rbp:
(แอสเซมเบลอร์ gnu)
pushq %rbp # prologue [ two instructions not necessary ]
movq %rsp,%rbp
.... [code]
movq %rbp,%rsp # epilogue [ two instructions not necessary ]
popq %rbp
โปรดทราบว่าใน gcc คุณสามารถส่งผ่านแฟล็ก -mno-red-zone หากคุณไม่ต้องการ (แต่ x86-64 ABI ต้องการมัน) เคอร์เนล Linux ไม่จำเป็นต้องสอดคล้องกับ ABI และทำให้โค้ดเคอร์เนลทั้งหมดถูกคอมไพล์ด้วย -mno-red-zone
นอกจากนี้การเข้าถึงหน่วยความจำเกินกว่าตัวชี้สแต็กจะไม่เป็นอันตรายหากเป็นโหมดการทำงานที่คาดหวัง มันอันตรายเท่านั้นและอาจนำไปสู่การทุจริตเมื่อไม่ได้วางแผนและไม่คาดคิด เมื่อรหัสที่ปล่อยออกมาทำมันจะรู้ว่ามันกำลังทำอะไรอยู่