2009-12-09 19 views

Trả lời

14

MOV r0, r0 được sử dụng theo truyền thống trong mã ARM, có mã opcode 0xe1a00000; MOV r8, r8 được sử dụng trong mã THUMB (opcode 0x46c0)

+0

Điều này không có tác dụng phụ trên kiến ​​trúc? –

+0

@Stefan, tôi không nghĩ vậy. Đó là những lệnh máy mà trình tạo của tôi tạo ra khi tôi đặt lệnh 'nop' trong tệp nguồn. –

+0

Rõ ràng Thumb2 có lệnh NOP. Xem trang 5 của http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf – MArag

10

ARMv7 có NOP hướng dẫn thực tế, với các mã hóa sau:

0xbf00 2 byte thumb2 form 
0xf3af8000 4 byte thumb2 form 
0x*320f000 4 byte arm form 

Khi nhắm mục tiêu các phiên bản trước đó của kiến ​​trúc, lắp ráp dịch NOP vào MOV hướng dẫn rằng moonshadow được liệt kê.

Bạn không cần phải sử dụng các mã thực tế, vì các công cụ phát triển hiểu được NOP.

5

Tôi muốn thêm NOP không có điều kiện cho armv7 là 0xE320F000.

Lưu ý rằng nếu bạn đang đi để vá một tập tin, bạn sẽ cần phải viết byte theo thứ tự ngược (little endian) - 00 F0 20 E3