他们给我的跳转地址也不同于预期的地址0x8048540。但是,根据rasm2 for x86,我的字符串文字是\xe9\x3b\x85\x04\x08。我看到的地址是0x804853B。内存地址中的值与rasm2提供的字符串文本匹配。为什么跳到地址0x1b540??会不会只是视觉上的错误?所以我查了一下。
但是GDB真的跳到了那个
我想编码一个64位的相对跳转到x64汇编中存储在%rax中的地址。AFAIK,没有操作码,所以我手动计算相对地址对应的绝对地址,然后进行绝对跳转到绝对地址:
# destination address, relative to end of jmp instruction还是应该避免64位相对跳转的另一个原因?