Ý nghĩa của @ zero_extendqisi2
Tôi đã tự hỏi ý nghĩa thực tế của @ zero_extendqisi2đầu ra lắp ráp gcc là gì và cũng như cách sử dụng. Tôi không thể tìm thấy qisi là viết tắt của gì hoặc bất cứ thứ gì dọc theo những dòng đó.
Đối với ngữ cảnh, dòng là ldrb r3, [fp, #-9] @ zero_extendqisi2và đây là ARM trên Raspberry Pi Zero W, được biên dịch bằng GCC. Ví dụ: khi tải lại một unsigned charcó chuyển đổi thành int, với tối ưu hóa bị tắt, với GCC9.2 không có tùy chọn.https://godbolt.org/z/7xnfqh. GCC cũ hơn tất cả các cách sớm nhất trên Godbolt (4.5) và có lẽ sớm hơn in cùng một nhận xét.
Trả lời
Đây là tên hướng dẫn RTL , có trong danh sách Tên chuẩn của sổ tay hướng dẫn nội bộ GCC bên dưới zero_extendmn2. Dưới đây m,nlà các chế độ máy qi và sitương ứng là một byte và một số nguyên 32 bit. Vì vậy, đây là dấu hiệu của GCC rằng nó đang tạo ra một lệnh lấy một byte (ở đây được tải từ bộ nhớ) và không mở rộng nó thành số nguyên 32 bit (ở đây trong thanh ghi r3). Đó là chính xác những gì ldrbhướng dẫn ARM làm.
Tôi không biết cả 2 là viết tắt của gì, nhưng nó rõ ràng là một phần của quy ước đặt tên của GCC.
Như Peter đã chỉ ra, hơi kỳ lạ khi GCC lại đưa một bình luận như vậy vào hội đồng mà không có -fverbose-asm. Thật vậy, nhận xét được mã hóa thành một phần của chuỗi mẫu trong tệp mô tả máy , arm.md. Nó có thể là một trợ giúp gỡ lỗi mà một số nhà phát triển GCC đã thêm vào và sau đó quên sử dụng.
(Nếu bạn gửi bài này cho bài tập của mình, vui lòng trích dẫn bài đăng này một cách chính xác.)