Để thực hiện một bẩn trang (chuyển đổi trên các bit bẩn ở mục bảng trang), tôi chạm vào byte đầu tiên của trang như thế này:Làm thế nào để ngăn chặn gcc tối ưu hóa một số câu lệnh trong C?
pageptr[0] = pageptr[0];
Nhưng trong thực tế gcc sẽ bỏ qua các tuyên bố của người chết loại bỏ cửa hàng. Để ngăn gcc tối ưu hóa, tôi viết lại tuyên bố như sau:
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
Dường như mẹo hoạt động, nhưng hơi xấu xí. Tôi muốn biết là có bất kỳ chỉ thị hoặc cú pháp có tác dụng tương tự? Và tôi không muốn sử dụng cờ -O0
vì nó cũng sẽ mang lại hiệu suất tuyệt vời.
bạn đã thử -O0? –
@Mark -O0 sẽ ngừng tối ưu hóa, nhưng cũng làm chậm hiệu suất chương trình. Tôi chỉ muốn tránh tối ưu hóa đoạn mã này: P – ZelluX