อ่าน 1 นาที
รหัสที่อยู่สามที่อยู่
ใน วิทยาการคอมพิวเตอร์ รหัส สามแอดเดรส [ 1 ] (มักย่อเป็น TAC หรือ 3AC) เป็น รหัสระดับกลาง ที่ใช้โดย คอมไพเลอร์ที่ปรับให้เหมาะสม เพื่อช่วยในการใช้งาน การแปลงที่ปรับปรุงโค้ด คำ สั่ง...
รหัสที่อยู่สามที่อยู่
ในวิทยาการคอมพิวเตอร์รหัสสามแอดเดรส[ 1 ] (มักย่อเป็น TAC หรือ 3AC) เป็นรหัสระดับกลางที่ใช้โดยคอมไพเลอร์ที่ปรับให้เหมาะสมเพื่อช่วยในการใช้งานการแปลงที่ปรับปรุงโค้ด คำสั่ง TAC แต่ละคำสั่งมีตัวถูกดำเนินการอย่างมากที่สุดสามตัว และโดยทั่วไปจะเป็นการรวมกันของการกำหนดค่าและตัวดำเนินการไบนารี ตัวอย่างเช่นt1 := t2 + t3ชื่อนี้มาจากการใช้ตัวถูกดำเนินการสามตัวในคำสั่งเหล่านี้ แม้ว่าอาจมีคำสั่งที่มีตัวถูกดำเนินการน้อยกว่านั้นก็ตาม
เนื่องจากโค้ดสามแอดเดรสถูกใช้เป็นภาษากลางภายในคอมไพเลอร์ ตัวถูกดำเนินการจึงมักไม่ใช่แอดเดรสหน่วยความจำหรือรีจิสเตอร์ของโปรเซสเซอร์ ที่แน่นอน แต่เป็นแอดเดรสเชิงสัญลักษณ์ที่จะถูกแปลงเป็นแอดเดรสจริงในระหว่างการจัดสรรรีจิสเตอร์นอกจากนี้ยังไม่ใช่เรื่องแปลกที่ชื่อตัวถูกดำเนินการจะมีหมายเลขเรียงลำดับ เนื่องจากโค้ดสามแอดเดรสโดยทั่วไปถูกสร้างขึ้นโดยคอมไพเลอร์
รูปแบบมาตรฐาน A (ANF) เป็นการปรับปรุงรหัสสามแอดเดรสให้ดียิ่งขึ้น
ตัวอย่าง
ในโค้ดแบบสามแอดเดรส โค้ดนี้จะถูกแบ่งออกเป็นคำสั่งย่อยหลายคำสั่ง คำสั่งเหล่านี้สามารถแปลงเป็น ภาษาแอสเซมบลีได้ง่ายกว่านอกจากนี้ยังง่ายต่อการตรวจจับนิพจน์ย่อยที่เหมือนกันเพื่อลดความยาวของโค้ด ในตัวอย่างต่อไปนี้ การคำนวณหนึ่งครั้งประกอบด้วยการคำนวณย่อยหลายครั้ง:
# คำนวณหาคำตอบหนึ่งของสมการกำลังสอง x = (-b + sqrt(b^2 - 4*a*c)) / (2*a) | t1 := b * b t2 := 4 * a t3 := t2 * c t4 := t1 - t3 t5 := sqrt(t4) t6 := 0 - b t7 := t5 + t6 t8 := 2 * a t9 := t7 / t8 x := t9 |
โค้ดแบบสามแอดเดรสอาจมีการกระโดดแบบมีเงื่อนไขและไม่มีเงื่อนไข รวมถึงวิธีการเข้าถึงหน่วยความจำ นอกจากนี้ยังอาจมีวิธีการเรียกฟังก์ชัน หรืออาจลดทอนวิธีการเหล่านี้ให้เหลือเพียงการกระโดด ในลักษณะนี้ โค้ดแบบสามแอดเดรสจึงมีประโยชน์ในการวิเคราะห์การไหลของโปรแกรม ในตัวอย่างที่คล้ายกับภาษาซีต่อไปนี้ ลูปจะเก็บค่ากำลังสองของตัวเลขระหว่าง 0 ถึง 9:
...สำหรับ( i = 0 ; i < 10 ; ++ i ) { b [ i ] = i * i ; }... | t1 := 0 ; กำหนดค่าเริ่มต้น i L1: ถ้า t1 >= 10 ให้ไปที่ L2 ; กระโดดแบบมีเงื่อนไข t2 := t1 * t1 ; กำลังสองของ i t3 := t1 * 4 ; ที่อยู่แบบจัดตำแหน่งคำ t4 := b + t3 ; ที่อยู่สำหรับจัดเก็บ i*i *t4 := t2 ; เก็บค่าผ่านตัวชี้ t1 := t1 + 1 ; เพิ่ม i ไปที่ L1 ; ทำซ้ำลูป L2: |
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รหัสที่อยู่สามที่อยู่
ใน วิทยาการคอมพิวเตอร์ รหัส สามแอดเดรส [ 1 ] (มักย่อเป็น TAC หรือ 3AC) เป็น รหัสระดับกลาง ที่ใช้โดย คอมไพเลอร์ที่ปรับให้เหมาะสม เพื่อช่วยในการใช้งาน การแปลงที่ปรับปรุงโค้ด คำ สั่ง...
ตัวอย่าง
ในโค้ดแบบสามแอดเดรส โค้ดนี้จะถูกแบ่งออกเป็นคำสั่งย่อยหลายคำสั่ง คำสั่งเหล่านี้สามารถแปลงเป็น ภาษาแอสเซมบลี ได้ง่ายกว่านอกจากนี้ยังง่ายต่อการตรวจจับ นิพจน์ย่อยที่เหมือนกัน เพื่อลดความยาวของโค้ด ในตัวอย่างต่อไปนี้...
ดูเพิ่มเติม
ภาษาระดับกลาง คอมพิวเตอร์ชุดคำสั่งลดรูป แบบฟอร์มการมอบหมายงานเดี่ยวแบบคงที่ (SSA) ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Three-address_code&oldid=1290150129 "