next up previous contents index
Next: การแปลงฟังก์ชั่นภาษา C ที่ไม่มีการเรียกฟังก์ชั่นอื่น Up: การเรียกฟังก์ชั่นในฮาร์ดแวร์ Previous: การเรียกฟังก์ชั่นในฮาร์ดแวร์   Contents   Index

Stack: เมื่อต้องการใช้งานรีจีสเตอร์เพิ่มขึ้น

ในกรณีที่คอมไพเลอร์ต้องการใช้งานรีจีสเตอร์ในการส่งพารามิเตอร์มากกว่าจำนวนรีจีสเตอร์ 4 ตัวที่มีอยู่ และส่งค่ากลับมากกว่าสองค่า ในการเรียกฟังก์ชั่นดังกล่าว บางครั้งจำเป็นต้องย้ายค่าในรีจีสเตอร์ไปเก็บไว้ในหน่วยความจำ และค่ารีจีสเตอร์ที่ Caller ต้องการใช้จะต้องได้รับการคืนค่าเดิมให้เหมือนกับสถานะก่อนการเรียกฟังก์ชั่น

โครงสร้างข้อมูลที่เหมาะสมในการดำเนินการดังกล่าว คือโครงสร้างข้อมูลแบบสแตก (Stack) ที่เป็นแบบ last-in-first-out การทำงานของสแตก จะประกอบด้วยรีจีสเตอร์ที่ชี้ Word แรกของข้อมูล ที่เรียกว่า Stack Pointer (SP) การนำข้อมูลเก็บไว้ในสแตกเรียกว่า push และการเรียกข้อมูลออกจากสแตกเรียกว่า pop

ระบบการพัฒนาซอฟต์แวร์ของ MIPS สำรองรีจีสเตอร์เอาไว้หนึ่งตัวเรียกว่า stack pointer $sp สำหรับเก็บค่ารีจีสเตอร์ต่างๆ สำหรับ callee สแตกจะขยายตัวจากค่าแอดเดรสสูงมาสู่แอดเดรสต่ำ นั้นหมายถึงเรานำค่าใส่ในสแตกโดยการลดค่าของแอดเดรสลง



Vara Varavithya 2006-11-06