2014-07-21 24 views
2

我有一個關於編碼的問題,因爲我剛開始使用Intel64反彙編。指令jmp *%rsp將如何編碼?由於它使用*(指針),所以我有點困惑。這是否使編碼特別?我似乎無法在手冊中找到任何內容?這條跳轉指令如何在Intel64中編碼?

到目前爲止,我猜jmp *%rsp應該被編碼爲:ff c0考慮到正在使用的寄存器等。ff c0將是正確的,還是我誤會?

回答

2

爲什麼不把它餵給彙編器?順便提一句,這是ff e4ff c0inc %eax

*表示間接跳轉到& t語法。有必要區分jmp foojmp *foo,其中前者是簡單的相對跳轉,但後者是通過指針間接跳轉。在這種情況下,*是可選的,因爲它不含糊(儘管它會觸發警告)。對應部分將是jmp *(%rsp),並且括號不同。

該指令的intel指令集參考條目是ff /4 jmp r/m64。 在modr/m編碼表2.2中查找/4,我們看到esp(在64位模式下映射到rsp)的值確實是e4