汇编语句里面的ret 8是什么意思?CALL 的地址为什么和跳过去的不一样?
例如CALL01200000而到的地址不是012000000别人说这是偏移。这是怎么算的?还有ret不是弹出栈popeip吗?8是什么意思?...
例如 CALL 01200000 而到的地址不是012000000 别人说这是偏移。这是怎么算的?
还有 ret 不是弹出栈 pop eip吗? 8是什么意思? 展开
还有 ret 不是弹出栈 pop eip吗? 8是什么意思? 展开
8个回答
展开全部
stdcall 的调用约定,把返回地址前压入堆栈的参数 进行清理,也就是把实参给pop,而具体8是8个字节,堆栈指针以4个字节移动的,ret 后总是4的倍数。
这些行为相当于c调用约定的sub esp,8
当然用invoke proc之类高级伪指令,proc 会对自动清理传递的参数
这些行为相当于c调用约定的sub esp,8
当然用invoke proc之类高级伪指令,proc 会对自动清理传递的参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
RET imm16
RETimm16 ; 近返回或远返回,并调整堆栈:SP = SP + imm16
功能描述:
RETimm16:在返回地址出栈后,CPU立即将imm16加到堆栈指针SP.这种机制用来在返回前将参数从栈中移出.
对标志位的影响:无.
说明:RET由汇编程序根据其所在过程的类型(NEAR或FAR)决定是近返回还是远返回.缺省为近返回.
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
RETimm16 ; 近返回或远返回,并调整堆栈:SP = SP + imm16
功能描述:
RETimm16:在返回地址出栈后,CPU立即将imm16加到堆栈指针SP.这种机制用来在返回前将参数从栈中移出.
对标志位的影响:无.
说明:RET由汇编程序根据其所在过程的类型(NEAR或FAR)决定是近返回还是远返回.缺省为近返回.qq804948664
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询