6

Tôi biết cách đăng ký dựa trên và cách các máy ảo dựa trên stack hoạt động độc lập. Tôi biết những lợi thế và bất lợi của cả hai. Những gì tôi muốn biết là có ai từng cố gắng kết hợp cả hai?Làm thế nào một đăng ký + ngăn xếp dựa trên máy ảo làm việc?

Tôi đã cố gắng tìm kiếm mạng cho sự tồn tại của một máy ảo như vậy, nhưng không có kết quả. Kết quả tốt nhất tôi nhận được là một bài viết về một máy ảo lai (HyVM). Nếu một máy ảo như vậy thực sự được tạo ra cho một ngôn ngữ lập trình, tôi sẽ quan tâm đến việc xem xét mã nguồn của nó để hiểu cách nó hoạt động.

Có lẽ ai đó có thể chỉ cho tôi đúng hướng để tìm một máy ảo như vậy, hoặc liên kết tôi với một bài viết hoặc bài đăng trên blog được xây dựng trong chủ đề này.

+0

Rất thú vị. Cụ thể bạn đang tìm gì? Bạn đang tìm kiếm để xem lợi thế của phương pháp lai sẽ có trên một máy ảo dựa trên đăng ký nghiêm ngặt, hoặc máy ảo dựa trên stack? Câu hỏi của bạn không rõ ràng với tôi. –

+0

Tôi đang cố gắng hiểu làm thế nào một máy ảo lai sẽ được thực hiện. Những lợi thế là khá rõ ràng - bạn có thể đánh giá các biểu thức như '5 2 3 - +' bằng cách sử dụng các hoạt động ngăn xếp: 'push 5',' push 2', 'push 3',' sub', 'add'; và sau đó bạn có thể lưu trữ kết quả trong thanh ghi bằng cách sử dụng lệnh như 'store eax'. Điều này mang lại cho bạn những lợi thế của cả hai loại máy ảo. Toàn bộ chương trình sẽ được viết như 'x = 5 2 3 - +' trong đó 'x' là một biến SSA. Điều không rõ ràng đối với tôi là nội bộ của VM - là ngăn xếp trong bộ nhớ hoặc trên bộ xử lý, chi phí đánh giá ngăn xếp, và nhiều hơn nữa. –

Trả lời

5

Hãy xem Forth. Nó sử dụng một máy ảo, chủ yếu là ngăn xếp theo định hướng nhưng cho phép lưu trữ các giá trị gần như theo cách bạn đề xuất.

Ngoài ra, VM là khá nhỏ, vì vậy nó rất dễ dàng để khám phá và để cổng nó.

Các vấn đề liên quan