这个跳转指令如何在Intel64中编码?

时间:2014-07-21 01:53:38

标签: assembly encoding x86-64

我有一个关于编码的问题,因为我刚开始使用Intel64反汇编。指令jmp *%rsp将如何编码?由于它使用*(指针),我有点困惑。这会使编码特殊吗?我似乎无法在手册中找到任何内容?

到目前为止,我猜测jmp *%rsp应编码为:ff c0考虑使用的注册表等。ff c0是正确的,还是我错了?

2 个答案:

答案 0 :(得分:2)

为什么不把它喂给汇编程序?顺便说一下,它是ff e4ff c0inc %eax

*表示间接跳转at&t语法。区分jmp foojmp *foo是必要的,前者是简单的相对跳跃,后者是间接跳过指针。 *在这种情况下是可选的,因为它不含糊不清(尽管它会触发警告)。对应方为jmp *(%rsp),括号不同。

此指令的intel指令集参考条目为ff /4 jmp r/m64。 查看modr / m编码表2.2中的/4,我们看到esp(在64位模式下映射到rsp)的值确实为e4。< / p>

答案 1 :(得分:0)

随意使用在线汇编程序:https://defuse.ca/online-x86-assembler.htm#disassembly

ff e4  jmp rsp