Skip to main content

ตารางสาขาคืออะไร?

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

ในปี 1980 ตารางสาขาถูกนำมาใช้อย่างกว้างขวางในการเขียนโปรแกรมภาษาแอสเซมบลีพวกเขายังคงใช้ในการเขียนโปรแกรมแอสเซมบลีสำหรับระบบฝังตัวและการพัฒนาระบบปฏิบัติการตั้งแต่ปี 1990 ภาษาการเขียนโปรแกรมคอมไพเลอร์ได้ใช้ประโยชน์จากการทำงานของตารางสาขาtables ตารางสาขาประกอบด้วยรายการคำแนะนำที่ไม่มีเงื่อนไขซึ่งให้อินพุต, สาขาออกไปยังจุดหมายปลายทางอื่น ๆฮาร์ดแวร์คอมพิวเตอร์ส่วนใหญ่สามารถดำเนินการตามคำแนะนำเหล่านี้ได้อย่างมีประสิทธิภาพในบางครั้งชดเชย mdash;โดยพื้นฐานแล้วระยะทางไปยังปลายทาง mdash;สามารถเพิ่มลงในการลงทะเบียนเคาน์เตอร์โปรแกรมที่สามารถชี้ไปที่ชุดของคำแนะนำสาขาหรือกระโดดระหว่างชุดคำแนะนำสาขาทั้งหมดที่จำเป็นในการใช้ตารางสาขาคือการตรวจสอบความถูกต้องของรหัสอินพุตการแปลงข้อมูลเป็นออฟเซ็ตและการคูณข้อมูลไปยังความยาวคำสั่งที่กำหนด

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

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