我想编码一个64位的相对跳转到x64汇编中存储在%rax中的地址。AFAIK,没有操作码,所以我手动计算相对地址对应的绝对地址,然后进行绝对跳转到绝对地址:
# destination address, relative to end of jmp instruction还是应该避免64位相对跳转的另一个原因?
关于相对跳跃,我有以下问题:
我知道相对于当前PC,JMP SHORT <displacement>将跳转到<displacement>字节。这是正确的吗?,汇编程序会自动生成一个相对跳转的op代码吗?也就是说,当我编写JMP <label>时,如果标签位于当前PC的128个字节以内,它将产生一个相对跳转?通过检查列表文件和计算偏移量?
使用标签的一个例子是:je dest ; skip the jmpdest:但是,我的限制是我不能使用标签,所以我假设我必须创建一个相对于RIP寄存器的跳转编辑:我只熟悉英特尔的语法,我使用Keystone作为汇编程序。我将从程序集中获取字节,并将其加载到可执行内存位置。我正在使用我自己的网站从程序集中获取字节,如果您查看,您可能会有这样的想法。编辑2: --我尝试了Jester和Margaret的注释,建议使用:; or不过,我可