จากคู่มือ Intel64 & IA-32 เล่ม 2a มีการใช้งานที่เป็นไปได้มากมายสำหรับคำสั่ง 'mov' เช่น:
mov r64, m64 # move m64 to r64
mov rax, moffs64 # move quadword at (offset) to RAX
ฉันเขียนโค้ดเพื่อทดสอบ (แก๊ส, ไวยากรณ์ของ Intel):
movabs rax, label
movabs rax, offset label
...
label:
.quad 0x112233445566
หลังจากแอสเซมบลี ลิงก์ และ objdump ฉันได้รับแอสเซมบลีที่เกี่ยวข้อง:
mov rax, qword ptr ds:0xffff80000000008e
mov rax, 0xffff80000000008e
แน่นอนว่าคำสั่งที่สองที่ฉันเขียนไม่ใช่คำสั่งที่คาดหวังให้เป็นคู่มือ คำแนะนำสำหรับรูปแบบในคู่มือคืออะไร?
movabs rax, offset label
ของคุณไม่ใช่ทั้งสองอย่าง มันคือmov r64, imm64
หากคุณต้องการดูเวอร์ชันแรก นั่นคือmov r64, m64
ให้ใช้รีจิสเตอร์อื่นที่ไม่ใช่rax
เช่นmov rdx, label
- person Jester   schedule 22.07.2014