Tôi bị nhầm lẫn bởi vì nếu chúng ta đã có con trỏ thì chúng ta có thể dễ dàng trỏ tới lệnh tiếp theo, chúng ta có thể dễ dàng trỏ tới hàm trước đó, vậy tại sao chúng ta cần một con trỏ ngăn xếp khác để quay lại hàm hoặc mô-đun trước đó ?Tại sao chúng ta cần đăng ký stackpointer khi chúng tôi đã có đăng ký bộ đếm chương trình?
Trả lời
Bộ đếm chương trình cho CPU biết vị trí của nó là. Ngăn xếp được sử dụng để (trong số những thứ khác) giữ một bản ghi về nơi nó có là.
Nếu chức năng được gọi, chức năng đó cần biết vị trí cần quay lại khi nó đã hoàn thành. Điều này thực sự có thể là một địa chỉ được truyền vào, nhưng nếu chính hàm đó gọi các hàm khác, hoặc thậm chí gọi chính nó theo cách đệ quy, thì nó cần đảm bảo rằng địa chỉ này không bị mất hoặc ghi đè - vì vậy nó phải được lưu trữ. Cách tự nhiên để làm điều đó, là đẩy địa chỉ vào một ngăn xếp và cửa sổ bật lên trở lại khi cần.
Tất nhiên, nó cũng lưu trữ trạng thái cục bộ cho một hàm, vì điều đó cũng cần được đẩy và xuất hiện khi chương trình đi vào hoặc trả về từ các hàm.
Không phải tất cả các bộ vi xử lý nhất thiết phải có một ngăn xếp, nhưng nếu bạn làm bất cứ điều gì từ xa phức tạp trên một, bạn chắc chắn thực hiện một.
Chương trình conter giữ vị trí lệnh tiếp theo, ngăn xếp con trỏ trỏ tới một chồng (chồng) nơi lưu trữ thông tin lưu trữ để sử dụng sau này, ví dụ như giá trị của thanh ghi bên trong trước đó để chuyển đến chương trình con.
SP được sử dụng để lấy dữ liệu từ stack đăng ký nơi nó lưu trữ dữ liệu tạm thời như bi-sản phẩm của bất kỳ hoạt động hay những nội dung trước khi mất điện để khôi phục lại nó trở lại
trong khi máy tính như u biết giữ địa chỉ của người tiếp theo hướng dẫn để thực thi ..
- 1. Chúng tôi có cần đăng ký * .xcuserstate không?
- 2. Đăng ký chương trình và hướng dẫn đăng ký
- 3. Hội: Tại sao chúng ta làm phiền với sổ đăng ký?
- 4. Tại sao chúng ta cần strdup()?
- 5. Đã đăng ký tại/appname /: Người dùng đã đăng ký
- 6. Tại sao chúng ta cần cả bộ ký tự UCS và Unicode?
- 7. Tại sao chúng ta cần `Các gói đã nhập 'khi chúng ta có` Các trình cắm thêm cần thiết` trong các phụ thuộc trình cắm thêm eclipse?
- 8. Tại sao chúng ta cần sợi
- 9. Tại sao chúng ta cần ng-click?
- 10. Đăng ký chương trình RAPI với ActiveSync?
- 11. MVC: tại sao chúng ta cần "điều khiển", hoặc khi nào chúng ta nên sử dụng mẫu này?
- 12. Tại sao chúng ta vẫn cần tệp .lib stub khi chúng tôi có triển khai .dll thực tế?
- 13. Tại sao chúng ta nên sử dụng mã hóa ui khi chúng ta có Specflow?
- 14. Khi nào cần hủy đăng ký Broadcast Receiver đã đăng ký trong onCreate?
- 15. Tôi có cần xóa các đăng ký sự kiện khỏi các đối tượng trước khi chúng bị mồ côi không?
- 16. Chúng ta có nên đơn vị kiểm tra đăng nhập?
- 17. Tại sao chúng ta cần các Dịch vụ Web RESTful?
- 18. Tại sao chúng ta cần toán tử "delete []"?
- 19. lý do tại sao chúng ta cần Hadoop cho hypertable
- 20. flexbox vs bảng, tại sao chúng ta cần flexbox?
- 21. Tại sao chúng ta cần funcall trong Lisp?
- 22. Tại sao chúng ta cần ssh không mật khẩu Hadoop?
- 23. Chúng tôi có thể gọi phương thức sau khi đơn đăng ký đã được thu nhỏ không?
- 24. Tại sao chúng ta cần toán tử === đặc biệt này?
- 25. Tại sao chúng ta cần các nhà thầu tĩnh?
- 26. Tại sao chúng ta sử dụng radian trong lập trình?
- 27. ctime() trả về một chuỗi, tại sao chúng ta không cần giải phóng() bộ nhớ của chuỗi ký tự này?
- 28. Tại sao chúng ta cần đặt khoảng trống trước% c?
- 29. XOR đăng ký, đăng ký (lắp ráp)
- 30. Tại sao chúng ta cần giao diện trong Java?
có thể trùng lặp của [Con trỏ ngăn xếp được sử dụng trong bộ vi xử lý là gì?] (http://stackoverflow.com/questions/1464035/what-is-a-stack-pointer-used-for- trong bộ vi xử lý) –