如果esp寄存器在这个指令序列的开头有值0xbfffee34,执行这些指令后esp的值是多少?假设我们使用的是标准的32位x86 linux调用约定。
8049860: add $0x44, %esp
8049863: pop %ebx
8049864: pop %esi
8049865: pop %ebp
8049866: ret
答案 0 :(得分:1)
每个pop
指令将在x86上将esp
递增4,并且ret
指令将从堆栈中弹出调用者的eip
,从而也会递增esp
由4。
因此,在这些说明之后esp
的值将是
ESP = 0xbfffee34 + 0x44 + 0x4 + 0x4 + 0x4 + 0x4 = 0xbfffee88