2014-05-14 27 views
2

當gdb-remote發送一個'g'服務器時發回一個具有所有寄存器值的轉儲。 問:我在哪裏可以找到註冊訂單。我的意思是命令eax,ebx,ecx,edx或rax,rbx,rdx等映射到轉儲。規範確實有一個鏈接,但是當我點擊它時,它只是保持循環。 IE和Chrome發生同樣的事情,所以放棄了。我在哪裏可以找到註冊訂單'G'在GDB中發送

回答

1

如果你指的是在gdb源代碼中的位置,那麼這個順序現在由gdb/features目錄中的xml文件定義。例如,與32bit-core.xml一樣。

如果這是你正在尋找的,你可能會得到更好的答案(對這個和類似的問題)在GDB mailing lists之一。

+0

1000感謝你這正是我想要的,我會承擔相同的順序也適用於64位....也感謝指向我的權利清單。 –

+0

改變32位和64位寄存器的順序的邏輯是什麼? 32位:eax,ecx,edx,ebx,esp,ebp,esi,edi ...而64位變爲:rax,rbx,rcx,rdx,rsi,rdi,rbp,rsp ...這意味着我們必須映射它取決於32/64位寬度。只是想知道爲什麼他們這樣做。我能想到的唯一原因是32位長期存在,然後是64位,他們意識到了32位順序的錯誤,並在64位中找到了更好的順序。是嗎? –

+0

有點不雅。 32位處理器在內部將寄存器編號爲eax/ecx/edx/ebx等等。 64位處理器__may__被設計成更自然的編號順序。沒有關於細節的想法,但我知道32位編號是不可靠的,在設計反彙編程序時給我頭痛。 – lornix

相關問題