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
Trả lời
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).
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
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
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
- 1. Buộc một số biến nhất định của trình biên dịch thành các phần ELF cụ thể (với gcc)
- 2. hành vi trình biên dịch msvc sau khi tất cả các thanh ghi được sử dụng
- 3. Tôi có thể buộc JVM thực sự biên dịch một phương thức nhất định không?
- 4. Buộc CMake sử dụng trình biên dịch C++ cho tệp C với Visual Studio
- 5. không biên dịch nếu cờ bắt buộc không có mặt
- 6. Bắt buộc một lớp học ghi đè phương thức .equals
- 7. Sử dụng CMake với nhiều trình biên dịch cho cùng một ngôn ngữ
- 8. Visual Studio không cho phép tôi sử dụng một số tên biến nhất định
- 9. Làm tất cả các trình biên dịch C++ cho phép sử dụng biến thành viên lớp int const tĩnh như một mảng bị ràng buộc?
- 10. Trình biên dịch c tốt nhất cho Pic18 vi
- 11. Trình biên dịch cho Haskell
- 12. Trình biên dịch/trình biên dịch/trình biên dịch C++
- 13. Sử dụng mảng initializer '{}' nhiều lần cho cùng một biến không biên dịch
- 14. Trình biên dịch Prolog/Trình biên dịch được nhúng cho Java
- 15. Trình biên dịch hoặc trình biên dịch Scheme tốt nhất là gì?
- 16. Trán Python, làm thế nào để có được một trình biên dịch sẽ được sử dụng?
- 17. Ngăn trình biên dịch đóng đổi đổi tên các biến nhất định
- 18. Bắt buộc UIActionSheet sử dụng một hướng cụ thể
- 19. Có cần một trình biên dịch Python "sử dụng nghiêm ngặt" không?
- 20. Trình biên dịch D nào để sử dụng?
- 21. Làm thế nào để chạy ứng dụng C# bên trong một trình biên dịch mã khác với chạy một trình biên dịch mã bên ngoài?
- 22. Thuật toán nào làm trình biên dịch C++ phổ biến sử dụng cho std :: sort và std :: stable_sort?
- 23. Chọn bản ghi cho một năm nhất định Oracle
- 24. Bắt tên lắp ráp cho một quá trình bắt đầu trong một miền ứng dụng
- 25. Sử dụng một biến để xác định một hàm PHP
- 26. Tại sao trình biên dịch C# tạo ra lớp đơn để nắm bắt các biến của một số lambdas?
- 27. Làm cho trình biên dịch Go sử dụng int64 theo mặc định
- 28. "Sử dụng hoặc ghi đè một API bị phản đối" biên dịch cảnh báo
- 29. Tại sao một số trình biên dịch sử dụng "a.out" làm tên mặc định cho các tệp thi hành?
- 30. Làm thế nào để xác định trình biên dịch nào đã được sử dụng để biên dịch một tệp thực thi?
Có thể http://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html có thể trợ giúp? –
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ý? –
@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