The stack
Trước khi chúng ta thảo luận về như thế nào để programming up một virtual machine, đây là một feature của một CPU, nó gọi là Stack.
Nhưng tại sao lại gọi là Stack?
Trước tiên muốn hiểu về stack, chúng ta cần hiểu về thanh ghi PC(program counter). PC là một phần của memory bên trong CPU, nó bao gồm một số để biểu diễn vị trí của external memory, rằng memory device bên trong hệ thống của chúng ta. Hầu hết các CPU sẽ bao gồm 1 thanh ghi stack. Thanh ghi stack này thường refer tới một stack pointer. point là một location trong memory device.
Một program counter behaved (cư xử) như một index, và với mỗi một clock pulse của CPU nó sẽ tăng giá tri thông qua memory tới instruction tiếp theo. Stack pointer thì on the other hand, có thể di chuyển theo cách forwards or backwards thông qua memory, và thay vì (rather) tiến triển trên từng clock pulse, nó tăng hoặc giảm bởi một vài additional CPU instruction.
Không có gì ngạc nhiên rằng khi không có CPU thực nào bị hạn chế như CPU trong model của chúng ta, chỉ với 3 lệnh. CPU tưởng tượng của chúng ta thực sự không có chút hữu ích nào. Hầu hết các CPU đều có khả năng thực hiện hàng nghìn lệnh khác nhau, tất cả đều nhỏ nhưng cung cấp nhiều chức năng khác nhau. Do đó, hầu hêt các CPU đều có instruction để thực hiện 2 thao tác thường được gọi là PUSH and PULL. Vậy các instruction có tác dụng gì?
Chà, PUSH khiến CPU ghi một giá trị vào bộ nhớ tại vị trí được chỉ định bởi thanh ghi stack pointer, và sau đó tăng giá trị của thanh ghi đó. Lệnh PULL/POP thực hiện ngược lại, đầu tiên nó giảm giá trị trong thanh ghi và sau đó đọc một giá trị từ bộ nhớ tại vị trí đó vào CPU.
Vậy tại sao? Hãy xem xét ví dụ sau đây.
PUSH
Nhận xét
Đăng nhận xét
Cám ơn bạn đã góp ý về bài viết nhaaa