編碼x86_64指令mov rcx,rdx
(使用https://defuse.ca/online-x86-assembler.htm)輸出48 89 D1
。x86_64 - 編碼mov指令
檢查操作碼this reference顯示了該字節序列如何編碼該指令。
但該表中的兩行(操作碼8B
)與指令非常相似,但操作數的順序翻轉了。
事實上,我可以使用48 8b ca
(通過反編譯驗證)編碼相同的指令。
爲什麼兩個操作碼都存在?他們的差異超過我能夠解決的嗎?什麼時候會被另一個選中?
它們的存在是爲了允許內存操作數是源或目標。如果兩者都是寄存器,你會得到兩個編碼。選擇哪個取決於彙編程序,有些程序甚至允許您指定(例如gas的'.s'後綴)。 – Jester