从内存中读数据的问题
在Intel x86汇编中,JMP指令以及其他一些寄存器间接寻址指令使用的寻址方式都是相对寻址,原理是,取得一个相对偏移量(Offset),并将该偏移量加到当前指令指针(即寄存器RIP或EIP)中计算目标代码的地址。
在给定的JMP指令中,跳转的目标是存储RIP寄存器和一个4字节偏移量中的QWORD值。由于RIP相对于执行指令的地址的偏移量是已知的,因此只需要使用一个相对偏移量即可跳转到正确的地址,而不需要在指令中编码全局目标地址。指令中只包含一个4字节的偏移量 -- 相对于当前指令地址的偏移量。
因此,JMP指令跳转到的实际地址等于当前指令地址+4字节偏移量+位于RIP指向的地址+2字节的值。
这是x64汇编。谢谢佬,但(好像)qword是八字节。因为qword ptr [内存地址],是取该内存地址处八字节内容,就是我调试的结果显示,应该跳转到0xd15000007ffff7ff ,但程序却跳转到0x7ffff7fdd1500000,取内存地址时向后向后多偏移了四个字节,不知道为什么多了这四个字节的偏移。
感谢