Con vẹt - Đăng ký
Máy ảo Perl 5 hiện tại là một máy xếp chồng. Nó giao tiếp các giá trị giữa các hoạt động bằng cách giữ chúng trên một ngăn xếp. Các phép toán tải các giá trị vào ngăn xếp, làm bất cứ điều gì họ cần làm và đưa kết quả trở lại ngăn xếp. Điều này rất dễ thực hiện, nhưng nó chậm.
Để cộng hai số với nhau, bạn cần thực hiện ba lần đẩy ngăn xếp và hai lần bật ngăn xếp. Tệ hơn nữa, ngăn xếp phải phát triển trong thời gian chạy, và điều đó có nghĩa là cấp phát bộ nhớ ngay khi bạn không muốn cấp phát nó.
Vì vậy, Parrot sẽ phá vỡ truyền thống đã có đối với máy ảo và sử dụng kiến trúc thanh ghi, gần giống với kiến trúc của một CPU phần cứng thực. Điều này có một lợi thế khác. Chúng tôi có thể sử dụng tất cả các tài liệu hiện có về cách viết trình biên dịch và trình tối ưu hóa cho CPU dựa trên thanh ghi cho CPU phần mềm của chúng tôi!
Parrot có các thanh ghi chuyên dụng cho mỗi loại: 32 thanh ghi IV, 32 thanh ghi NV, 32 thanh ghi chuỗi và 32 thanh ghi PMC. Trong trình hợp dịch Parrot, chúng được đặt tên lần lượt là I1 ... I32, N1 ... N32, S1 ... S32, P1 ... P32.
Bây giờ chúng ta hãy xem xét một số trình lắp ráp. Chúng ta có thể đặt các thanh ghi này bằng toán tử set:
set I1, 10
set N1, 3.1415
set S1, "Hello, Parrot"
Tất cả các hoạt động của Parrot đều có cùng một định dạng: tên của toán tử, thanh ghi đích và sau đó là các toán hạng.