Tập lệnh x86 (16, 32 hoặc 64 bit, tất cả các biến thể/chế độ) đảm bảo/yêu cầu chỉ dẫn tối đa là 15 byte. Bất cứ điều gì ngoài đó sẽ cung cấp cho một "opcode không hợp lệ". Bạn không thể đạt được điều đó mà không cần sử dụng tiền tố dư thừa (ví dụ: nhiều tiền tố 0x66 hoặc 0x67).
Lệnh duy nhất thực sự lấy 64 bit làm mục dữ liệu là hằng số tải để đăng ký (cú pháp Intel: mov reg, 12345678ABCDEF00h
, tại cú pháp & t: movabs $12345678ABCDEF00, %reg
) - vì vậy nếu bạn muốn nhảy hơn 31 bit về phía trước/sau , nó sẽ là một di chuyển của vị trí mục tiêu vào một đăng ký, và sau đó gọi/nhảy vào sổ đăng ký. Sử dụng ngay lập tức 32-bit và chuyển vị (trong nhảy tương đối và chế độ địa chỉ) tiết kiệm bốn byte trên nhiều hướng dẫn trong chế độ 64-bit.
Nguồn
2013-02-05 01:07:05
[Các hướng dẫn dài nhất có thể trên x86 là 15 byte] (http://en.wikipedia.org/wiki/Instruction_set) –
Lưu ý rằng, trong khi nó có thể xây dựng một lệnh duy nhất phải dài hơn 15 byte (bằng cách sử dụng một loạt các tiền tố), giao diện bộ giải mã lệnh x86 sẽ bị nghẹt thở trên nó. 15 byte là một giới hạn cứng. – duskwuff