นกแก้ว - รีจิสเตอร์

เครื่องเสมือน Perl 5 ในปัจจุบันเป็นเครื่องสแต็ก มันสื่อสารค่าระหว่างการดำเนินการโดยเก็บไว้ในสแตก การดำเนินการโหลดค่าลงในสแต็กทำทุกอย่างที่ต้องการแล้วนำผลลัพธ์กลับไปที่สแต็ก ทำงานได้ง่าย แต่ทำงานช้า

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

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

Parrot มีการลงทะเบียนผู้เชี่ยวชาญสำหรับแต่ละประเภท: 32 IV register, 32 NV register, 32 string register และ 32 PMC register ใน Parrot แอสเซมเบลอร์จะมีชื่อว่า I1 ... I32, N1 ... N32, S1 ... S32, P1 ... P32 ตามลำดับ

ตอนนี้เรามาดูแอสเซมเบลอร์บางส่วน เราสามารถตั้งค่าการลงทะเบียนเหล่านี้ด้วย set operator:

set I1, 10
   set N1, 3.1415
   set S1, "Hello, Parrot"

ตัวดำเนินการของ Parrot ทั้งหมดมีรูปแบบเดียวกัน: ชื่อของตัวดำเนินการรีจิสเตอร์ปลายทางและตัวถูกดำเนินการ