กองทะเบียนคืออะไร?

ในความสัมพันธ์กับคอมพิวเตอร์การลงทะเบียนสแต็กเป็นตำแหน่งหน่วยความจำ - โดยปกติจะอยู่ที่หน่วยประมวลผลกลาง (CPU) หรือฮาร์ดแวร์การประมวลผลที่เกี่ยวข้องซึ่งเก็บที่อยู่ปัจจุบันของส่วนบนสุดของภูมิภาคของหน่วยความจำคอมพิวเตอร์แยกต่างหาก การลงทะเบียนสแต็กมีความสำคัญเพราะหากไม่มีคอมพิวเตอร์จะต้องใช้วิธีที่ช้ากว่าและมีข้อผิดพลาดมากกว่าในการติดตามการไหลของการดำเนินการของโปรแกรม ในสถาปัตยกรรมระบบส่วนใหญ่การลงทะเบียนสแต็กเป็นการลงทะเบียนเฉพาะดังนั้นจึงไม่สามารถเข้าถึงได้โดยไม่ตั้งใจเมื่อทำงานกับการลงทะเบียนหน่วยความจำอื่น ยิ่งไปกว่านั้นการลงทะเบียนสแต็กอาจเป็นการลงทะเบียนทั่วไปที่โดยทั่วไปจะสามารถเข้าถึงได้โดยโปรแกรม แต่ไม่ได้ตั้งใจใช้เนื่องจากผู้ผลิตกำหนดไว้สำหรับการใช้งาน เมื่อระบบคอมพิวเตอร์มีการลงทะเบียนสแต็กสองตัวหรือมากกว่าหมายความว่ามีความเป็นไปได้ที่จะมีมากกว่าหนึ่งสแต็คสถาปัตยกรรมเรียกว่าเครื่องสแต็ก

ในระดับต่ำสุดของการเขียนโปรแกรมคอมพิวเตอร์สแต็คเป็นพื้นที่ของหน่วยความจำซึ่งโดยปกติจะอยู่ในหน่วยความจำเข้าถึงโดยสุ่ม (RAM) ซึ่งมีลักษณะการทำงานที่กำหนดไว้อย่างดี สแต็กสามารถมีข้อมูลเพิ่มเข้าไปในกระบวนการที่เรียกว่าการพุชหรือสามารถดึงข้อมูลจากมันซึ่งเรียกว่าการ popping แบบจำลองสำหรับสแต็กเป็นแบบเข้า - ออกครั้งสุดท้ายหมายความว่าหากมีการผลักข้อมูลหลายชิ้นเข้าไปในสแต็กองค์ประกอบแรกที่ผลักเข้ามาจะเป็นคนสุดท้ายที่จะโผล่ออกมาในขณะที่องค์ประกอบสุดท้ายที่ผลักเข้าไปจะ เป็นคนแรกที่จะดึงด้วยคำสั่งป๊อป การลงทะเบียนสแต็กจะติดตามด้านบนสุดของสแต็กซึ่งเป็นรายการสุดท้ายที่ผลักเข้าไปเสมอ

เมื่อโปรแกรมคอมพิวเตอร์กำลังดำเนินการคำสั่งแต่ละคำสั่งที่ถูกดำเนินการจะมีที่อยู่หน่วยความจำเฉพาะซึ่งเก็บไว้ชั่วคราวในช่วงระยะเวลาของโปรแกรม หากโปรแกรมเรียกรูทีนย่อย - หรือขั้นตอนฟังก์ชั่นหรือวิธีการขึ้นอยู่กับภาษาการเขียนโปรแกรม - จากนั้นโปรแกรมจะต้องข้ามไปยังที่อยู่หน่วยความจำของรหัสรูทีนย่อยเพื่อเรียกใช้งาน ที่อยู่ที่การไหลของโปรแกรมควบคุมแบ่งออกเป็นสาขาไปยังรูทีนย่อยถูกส่งไปยังสแต็กเพื่อให้จำได้ เมื่อรูทีนย่อยดำเนินการเสร็จสมบูรณ์โปรแกรมจะทราบว่าควรจะส่งคืนรหัสหลักโดยการเปิดที่อยู่รหัสจากด้านบนของสแต็คโดยที่การลงทะเบียนสแต็กชี้ไป

แม้ว่าจะมีวิธีการอื่น ๆ ที่สามารถใช้เพื่อให้ได้ผลลัพธ์เดียวกัน แต่การใช้สแต็กและการลงทะเบียนสแต็กช่วยให้มีแนวคิดการเขียนโปรแกรมที่สำคัญที่เรียกว่าการเรียกซ้ำ ฟังก์ชั่นซ้ำคือฟังก์ชั่นที่ภายในรหัสของตัวเองเรียกตัวเอง กระบวนการนี้มักใช้ในการเรียงลำดับอัลกอริทึมและฟังก์ชันทางคณิตศาสตร์บางอย่าง การลงทะเบียนสแต็กกำลังติดตามที่อยู่สุดท้ายทั้งหมดที่การดำเนินการกำลังแยกสาขาดังนั้นฟังก์ชั่นสามารถดำเนินการเรียกซ้ำได้อย่างปลอดภัยด้วยความรู้ว่าในที่สุดการควบคุมจะกลับไปที่จุดเริ่มต้น ภาวะแทรกซ้อนหนึ่งเกิดขึ้นหากสแต็กทั้งหมดเต็มและไม่มีพื้นที่เหลือในหน่วยความจำซึ่งในกรณีนี้เกิดโอเวอร์โฟลว์แบบสแต็กเกิดขึ้นการหยุดการทำงานของโปรแกรม