Để tham khảo, Burroughs B5000 và Inmos Transputer là các máy xếp chồng. DEC PDP11 có các chế độ địa chỉ linh hoạt như vậy mà nó có thể được sử dụng như một máy xếp chồng. Tôi nghĩ rằng Niklaus Wirth's Lilith có thể đã là một máy xếp chồng (hơn 20 năm trước đây, tâm trí của tôi bị trượt :-)
Họ thực sự không có bất kỳ tên/số đăng ký nào trong hướng dẫn để tìm toán hạng, vì chúng ở trên ngăn xếp.
Hướng dẫn có thể tải các giá trị ngay (liên tục) vào ngăn xếp hoặc tải/lưu trữ vào bộ nhớ.
Vì vậy, họ không phải là add.w r0, r1, r5
hoặc add.w eax, [#fe34]
. Có add.w
.
Vì vậy, một ví dụ (không phải ở tất cả các chính xác, đó là phức tạp hơn) của một chuỗi lắp ráp có thể
loadstack 0xfe34 -- got fe34 onto stack
loadstackindirect -- use address on the stack, to load the value at that address
add.w -- assumes we already have the other operand on the stack
-- result back onto the stack
Để tính toán và nạp một giá trị trong một mảng, ngăn xếp có thể được sử dụng vì có thể có không có chế độ địa chỉ được lập chỉ mục.
Vì vậy, hướng dẫn nhỏ và rất nhiều công việc được thực hiện hoàn toàn với ngăn xếp và ngăn xếp ngăn xếp. IIRC Transputers thực sự có một chồng chỉ có ba giá trị, và trình biên dịch (hoặc các nhà phát triển) phải đảm bảo rằng nó được duy trì.
XMOS hiện bán một 'tương đương' hiện đại và thuê một số người giống nhau.
Đã hơn 20 năm kể từ khi tôi viết mã Transputer, vì vậy xin lỗi vì đã hơi mơ hồ.
Hệ thống UCSD Pascal sử dụng máy ảo được xác định phần mềm, là máy xếp chồng. Ý tưởng là tạo ra thứ gì đó có thể di chuyển sang máy tính mới, nhưng cũng dễ viết, dễ biên dịch và hiệu suất hợp lý. Máy ảo được định nghĩa bằng phương ngữ Pascal của riêng nó. Khi nó được chuyển đến máy tính thực, thanh ghi sẽ được sử dụng để giữ con trỏ ngăn xếp, và có khả năng một số sự khéo léo trong cách trên cùng của ngăn xếp được xử lý (bằng cách đăng ký), để có được hiệu suất hợp lý.
Họ * có thể * mô phỏng nó trong phần mềm, JVM cũ hơn đã làm điều đó. Thông thường, mặc dù mã stack-machine được biên dịch thành mã gốc (bất kỳ kiến trúc nào có thể). Mã máy Stack là tốt đẹp bởi vì nó có một mã hóa ngắn gọn, nó dễ dàng để tạo ra từ AST và tương đối dễ dàng để phân tích. – harold