How does the jmp instruction work in att assembly in this instance

安稳与你 提交于 2019-11-27 06:31:37

问题


I am stepping through a function in AT&T assembly right now and can't figure out how this specific jmp command works.

    jmp    *0x804a140(,%eax,4)

How exactly is it using the %eax register and 4 with the jump instruction? I have never seen jmp used this way before.


回答1:


If you are confused by at&t syntax, switch your tool to intel mode.

The effective address you see is not specific to jumps, you could have encountered it with any instruction that takes a memory operand.

In intel syntax this would look like: jmp [0x804a140 + 4 * eax]. It's an indirect jump that fetches the jump target from memory address 0x804a140 + 4 * eax. This is probably an item in a so-called jump table.



来源:https://stackoverflow.com/questions/23418524/how-does-the-jmp-instruction-work-in-att-assembly-in-this-instance

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!