2013-07-23 13 views
16

Có thể buộc trình biên dịch (gcc hoặc clang trong trường hợp của tôi) sử dụng một thanh ghi nào đó, cho phép R15 trên x86_64 cho một biến nhất định và cũng cấm nó sử dụng R15 cho bất kỳ mục đích nào khác ngoài biến đó.Bắt buộc trình biên dịch sử dụng một thanh ghi nào đó cho một biến nhất định

+9

Có thể http://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html có thể trợ giúp? –

+2

Tại sao bạn nghĩ rằng bạn biết tốt hơn so với trình biên dịch làm thế nào để xử lý phân bổ đăng ký? –

+7

@JonathanLeffler trong khi tôi đồng ý với ý định của bạn, OP nói _nowhere_ anh ấy nghĩ rằng anh ấy biết điều đó tốt hơn. Có lẽ nó chỉ là thực hành? – stijn

Trả lời

6

gcc có thể thực hiện.

Đã được trích dẫn gcc docs trả lời câu hỏi của bạn về cách buộc biến vào một đăng ký nhất định.

Để ngừng trình biên dịch tạo mã bằng thanh ghi này cho các mục đích khác, hãy sử dụng công tắc gcc -ffixed-reg (xem tài liệu gcc để biết chi tiết).

+0

Tham chiếu đến [câu hỏi Stackoverflow khác] (http://stackoverflow.com/questions/17809693/forcing-the-compiler-to-use-a-certain-register-for-a-certain-variable) ở trên là một ví dụ tuyệt vời về tham chiếu chéo! – devnull

+0

Nó chắc chắn nhắc nhở một trong những ý nghĩa từ điển cổ điển của đệ quy. 'đệ quy, n: Xem đệ quy ' – devnull

+0

Liên kết orignial hơi lộn xộn và tôi cố chỉnh sửa nó - nhưng ai đó nhanh hơn (nhưng vẫn liên kết sai) - tôi đã sửa nó ngay bây giờ – flolo

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