分类: LINUX
2014-07-16 20:52:30
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
tmaccs2024-05-01 00:50:45
helloworld_2015:---------已经明白了,rbp-0x58(0x58 需要换算成字节,)计算机寻址是以字节为最小单位编号,-0x58 就是往低地址移动88个字节。
#5 [ffff8805f3a23650] _xfs_buf_find at ffffffffa05235f2 [xfs]
ffff8805f3a23658: ffff8805f563e600 ffff8802ecd78480
ffff8805f3a23668: 0001400500000000 ffff8805f563e690
ffff8805f3a23678: ffff8805f3a236b8 0000000000000001
ffff8805f3a23688: ffff8805f3a21af8 ffff8808fe07c0c0
ffff8
请问rbp-0x58就是ffff8802ecd78480,这是怎么算出来的?
就算是换算成88,也得不到ffff8802ecd78480啊
helloworld_20152015-08-07 12:49:00
---------已经明白了,rbp-0x58(0x58 需要换算成字节,)计算机寻址是以字节为最小单位编号,-0x58 就是往低地址移动88个字节。
#5 [ffff8805f3a23650] _xfs_buf_find at ffffffffa05235f2 [xfs]
ffff8805f3a23658: ffff8805f563e600 ffff8802ecd78480
ffff8805f3a23668: 0001400500000000 ffff8805f563e690
ffff8805f3a23678: ffff8805f3a236b8 0000000000000001
ffff8805f3a23688: ffff8805f3a21af8 ffff8808fe07c0c0
ffff8
helloworld_20152015-08-06 23:24:27
在_xfs_buf_find()函数反汇编的第一句,就对rbp(即上级堆栈栈帧指针)进行了压栈,所以 ffff8805f3a236f8为rbp。
0xffffffffa05234f0 <_xfs_buf_find>: push %rbp
此时的rsp应该就是ffff8805f3a236b8:接下来:
0xffffffffa05234f1 <_xfs_buf_find+1>: mov %rsp,%rbp
那么此时的rbp也就等于ffff8805f3a236b8,那么rbp-0x58就是ffff8802ecd78480即为我们苦苦寻找的bp指针了!!
请问下ffff8802ecd78480 地址怎么计算来的?我计算ffff8805f3a236b8-0x58=0xFFFF8805F3A23660 。谢谢