2012-06-07 41 views
5

Trên nền tảng intel, BP được sử dụng để trỏ đến đầu khung ngăn xếp và truy cập đối số [bp+0x??] và biến cục bộ [bp-0x??].Tương đương với thanh ghi BP (Frame Pointer) trên bộ xử lý ARM là gì?

Sổ đăng ký nào được sử dụng trong ARM? Hoặc, là địa chỉ dựa trên SP chỉ?

[Tôi không có cơ sở hạ tầng để biên dịch và tháo rời để tự mình xem. Tham khảo AAPCS cũng không giúp tôi]

+0

Không có tương đương cho ** AAPCS ** (2003); ** APCS ** cũ hơn có R11 là một 'FP' trong chế độ ARM. Vì ARM có nhiều thanh ghi hơn nên thường không cần thiết để lập chỉ mục người dân địa phương thông qua stack/frame. –

Trả lời

7

Điều bạn đang tìm kiếm là Con trỏ khung. Nói chung, R7 hoạt động như con trỏ khung ở chế độ THUMB và R11 hoạt động như con trỏ khung trong chế độ ARM. Nhưng nó là theo quyết định của hệ điều hành để thay đổi quy ước này nếu nó muốn.

Đọc here

+3

Lưu ý rằng đây là vấn đề ABI, không phải vấn đề về bộ xử lý. (Bộ xử lý không quan tâm bạn sử dụng thanh ghi nào.) Các hệ điều hành khác nhau có thể làm việc khác nhau. –

+0

Cảm ơn @RaymondChen. Tôi cập nhật câu trả lời của tôi để phản ánh quan điểm (chính xác) của bạn –

+2

... và nếu bạn có đăng ký con trỏ ngăn xếp, trình biên dịch hiện đại không thực sự cần con trỏ khung (FP); họ biết cách bố trí của ngăn xếp và do đó có thể lập chỉ mục từ SP để nhận bất kỳ thứ gì họ có thể cần để truy cập từ FP. Vì vậy, một FP là thực sự tùy chọn, tùy thuộc vào trình biên dịch của bạn. –

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