2017-12-06 21 views
5

Trình kết hợp GNU dường như có một số phương tiện kiểm soát các dạng thay thế của mã opcode được phát ra cho một số hướng dẫn. Ví dụ.Đâu là các hậu tố lệnh lắp ráp GNU như ".s" trong x86 "mov.s" được ghi?

.intel_syntax noprefix 
mov eax, ecx 
mov.s eax, ecx 

Chế biến các mã trên với as test.s -o test.o && objdump -d test.o -M intel cho tháo gỡ sau:

0: 89 c8     mov eax,ecx 
2: 8b c1     mov eax,ecx 

Chúng ta có thể thấy rằng .s hậu tố xuất hiện để chuyển đổi 89 opcode lên phiên bản 8b (và thích hợp thay đổi byte ModRM).

Tôi muốn tìm hiểu thêm về các hậu tố được hỗ trợ bởi trình biên dịch GNU, nhưng cho đến nay tôi đã không tìm thấy bất kỳ tài liệu liên quan nào. Tôi có thể đọc về những hậu tố này ở đâu?

+0

Như đã nói, đây là chủ đề kỹ thuật vì bạn yêu cầu liên kết tới tài liệu thay vì trực tiếp yêu cầu thêm chi tiết về cách chúng hoạt động. (Mà bạn có thể làm theo cách mà sẽ làm cho một bản tóm tắt + liên kết đến tài liệu một câu trả lời tốt).Dù sao, câu hỏi hay, nó sẽ vẫn mở ngay cả khi nó uốn cong các quy tắc, IMO. –

+0

Điểm truy cập ... như được diễn đạt, câu hỏi phải được đóng thành chủ đề không chính xác hoặc được viết lại thành chủ đề. Các câu hỏi ngoài chủ đề còn mở có thể trở thành mô hình cho các câu hỏi ngoài chủ đề khác. – Mogsdad

Trả lời

3

Kể từ Binutils 2.29 hậu tố lệnh hiện là deprecated có lợi cho tiền tố giả. Bạn có thể tìm các hậu tố cũ hơn được ghi trong GNU Assembler (trước 2.29) info pages. Đầu info as trang nói điều này:

9.15.4.1 Hướng dẫn đặt tên

[snip]

tùy chọn mã hóa khác nhau có thể được xác định qua hậu tố ghi nhớ tùy chọn. .s hậu tố hoán đổi 2 toán hạng đăng ký trong mã hóa khi di chuyển từ thanh ghi này sang thanh ghi khác. .d8 hoặc .d32 hậu tố thích chuyển 8bit hoặc 32 bit trong mã hóa.

Tư liệu các tiền tố giả mới, binutils 2,29 (và sau này) info as trang đã được sửa đổi để đọc:

tùy chọn mã hóa khác nhau có thể được xác định thông qua các tiền tố giả:

  • {disp8 } - thích dịch chuyển 8 bit.
  • {disp32} - thích chuyển vị 32 bit.
  • {load} - thích hướng dẫn tải biểu mẫu.
  • {store} - thích hướng dẫn dạng cửa hàng.
  • {vex2} - thích tiền tố VEX 2 byte cho lệnh VEX.
  • {vex3} - thích tiền tố VEX 3 byte cho lệnh VEX.
  • {evex} - mã hóa bằng tiền tố EVEX.
+0

Sẽ rất tuyệt nếu bạn có thể sử dụng các công cụ 'objdump' hoặc các binutils khác để sử dụng các phần ghi đè này khi tháo rời. Nhưng tôi không thấy bất cứ điều gì có liên quan trong chỉ mục trang thông tin. Có thể một tính năng mà bộ tách rời của bên thứ ba như objconv của Agner Fog có thể có, bởi vì nó nhằm mục đích làm cho asm có thể được lắp ráp lại. –

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