鉴于以下X86-64 AT & T汇编行:的x86寄存器值
cmpl $0x7,0xc(%rsp)
这是访问的第12 RSP内存从$抵消。那么它是在访问内存中的rsp
之后访问12*4 = 48
,第48个字节,还是rsp
之后的第96个字节,访问12*8 = 96
?由于这是64位体系结构,因此寄存器的长度应为8个字节,因此96?
无论如何,要访问gdb
中的那个位置,我会做x/96s $rsp
吗?有没有一个简单的方法来打印没有整个偏移列表?
如果我写x/12s $rsp
,那么我得到的内存地址从0x7FFFFFFFE1F0
到0x7FFFFFFFE20D
。所以开始和结束之间的偏移量差异是29个字节。当我指定12时,这是合乎逻辑的吗?
谢谢
IIRC,'cmpl'指令是32位(cmpb是一个字节,cmpw是一个16位值),所以我不惊讶地看到它使用+ 3 * 4作为偏移量......它会使用“cmpq”位值,不是吗? – PypeBros