所以,如果我有这样的东西
rout:
pop eax
pop ecx
add ecx,2
push ecx
ret
然后只是
push 3
call rout
我注意到第一次弹出是不会像我想的那样给我3值,而是在第一次弹出后得到它。
我的问题是,在我调用时,推送到堆栈的最后一个值是什么? (在本例中注册eax)
答案 0 :(得分:1)
假设您正在使用80x86架构:
它是proc的返回地址(如果它是近距离调用)。如果是NEAR呼叫,下一个POP将为您提供值(3),如果是FAR呼叫,则为您提供返回地址的段。
检查this网站是否存在发布CALL时实际发生的伪代码。