นอกจากที่เราใช้สแตกในการเก็บตัวแปรต่างๆ ที่รักษาค่าในรีจีสเตอร์ให้ฟังก์ชั่นสามารถทำงานได้ถูกต้องนั้น เราสามารถใช้สแตกในการเก็บค่า local variable ที่ไม่สามารถเก็บไว้ในรีจีสเตอร์ได้ทั้งหมด เช่นการเก็บอาร์เรย์ หรือ โครงสร้างข้อมูลแบบต่างๆ ส่วนของสแตกที่เก็บค่า local variables และ รีจีสเตอร์ที่เก็บไว้ในการเรียกฟังก์ชั่นเรียกว่า procedure frame หรือ activation record รูป 2.7 แสดงสถานะของสแตก ก่อน ระหว่าง และหลังการเรียกฟังก์ชั่น
|
ในซอฟต์แวร์ของ MIPS บางครั้งเราใช้ frame pointer $fp ในการชี้ไปยัง word แรกของเฟรมที่เป็นของฟังก์ชั่นนั้นๆ $sp อาจมีการเปลี่ยนแปลงระหว่างการทำงานของฟังก์ชั่น $fp จะเป็นตัวบอกตำแหน่งอ้างอิงของการตัวแปรในสแตกของฟังก์ชั่นนั้นๆ