汇编语句里面的ret 8是什么意思?CALL 的地址为什么和跳过去的不一样?

例如CALL01200000而到的地址不是012000000别人说这是偏移。这是怎么算的?还有ret不是弹出栈popeip吗?8是什么意思?... 例如 CALL 01200000 而到的地址不是012000000 别人说这是偏移。这是怎么算的?

还有 ret 不是弹出栈 pop eip吗? 8是什么意思?
展开
 我来答
百度网友2ca40ab
2012-08-08 · TA获得超过145个赞
知道答主
回答量:91
采纳率:0%
帮助的人:48.6万
展开全部
stdcall 的调用约定,把返回地址前压入堆栈的参数 进行清理,也就是把实参给pop,而具体8是8个字节,堆栈指针以4个字节移动的,ret 后总是4的倍数。
这些行为相当于c调用约定的sub esp,8
当然用invoke proc之类高级伪指令,proc 会对自动清理传递的参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tseug8271
2012-07-30 · TA获得超过1498个赞
知道小有建树答主
回答量:745
采纳率:100%
帮助的人:364万
展开全部
RET imm16

RETimm16 ; 近返回或远返回,并调整堆栈:SP = SP + imm16
功能描述:
RETimm16:在返回地址出栈后,CPU立即将imm16加到堆栈指针SP.这种机制用来在返回前将参数从栈中移出.
对标志位的影响:无.
说明:RET由汇编程序根据其所在过程的类型(NEAR或FAR)决定是近返回还是远返回.缺省为近返回.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-01
展开全部
RET imm16
RETimm16 ; 近返回或远返回,并调整堆栈:SP = SP + imm16
功能描述:
RETimm16:在返回地址出栈后,CPU立即将imm16加到堆栈指针SP.这种机制用来在返回前将参数从栈中移出.
对标志位的影响:无.
说明:RET由汇编程序根据其所在过程的类型(NEAR或FAR)决定是近返回还是远返回.缺省为近返回.qq804948664
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式