zhangleierli
驱动小牛
驱动小牛
  • 注册日期2007-01-31
  • 最后登录2017-05-24
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望158点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:4508回复:8

平衡堆栈为什么用 add esp 0c ?

楼主#
更多 发布于:2007-10-18 09:38
C调用方式把一个函数转为汇编代码为:

push  var3
push  var2
push  var1
call    test
add   esp 0C  ;平衡堆栈

为什么要把esp 加 0c   ???
rhettxie
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望65点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-10-18 09:45
因为前面的3个push让 esp减了 0x0c
静水流深
zhangleierli
驱动小牛
驱动小牛
  • 注册日期2007-01-31
  • 最后登录2017-05-24
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望158点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-10-18 10:42
非常感谢楼上兄弟的回答。 可是我怎么知道PUSH占用几个字节?
lazydog
驱动牛犊
驱动牛犊
  • 注册日期2004-07-08
  • 最后登录2009-10-30
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望85点
  • 贡献值0点
  • 好评度72点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-10-18 10:52
牛犊 ^_^
ljh1021
驱动小牛
驱动小牛
  • 注册日期2007-05-30
  • 最后登录2010-05-18
  • 粉丝0
  • 关注0
  • 积分936分
  • 威望126点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-10-18 10:57
引用第2楼zhangleierli于2007-10-18 10:42发表的  :
非常感谢楼上兄弟的回答。 可是我怎么知道PUSH占用几个字节?

BYTE 1字节 WORD 2字节 DWORD 4字节
不知道我说的对不对?
消灭人类暴政,世界属于三体!
bizhan123
驱动小牛
驱动小牛
  • 注册日期2006-12-26
  • 最后登录2012-03-19
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望166点
  • 贡献值0点
  • 好评度125点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-10-18 13:35
整型、字符型4个字节,实数8个字节
实用信息:www.infozobo.com
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-10-19 08:55
一般32位下4个,64位下8个,编译器一般会对齐,不过如果自己写汇编的话,也不要违反对齐规则。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
unknown_love
驱动牛犊
驱动牛犊
  • 注册日期2007-07-24
  • 最后登录2007-12-25
  • 粉丝0
  • 关注0
  • 积分160分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-10-24 17:22
因为你压入了3个参数.并且变量都是4个字节.恢复时要在堆栈上删除那3个参数
toyourheart0602
驱动牛犊
驱动牛犊
  • 注册日期2008-11-04
  • 最后登录2011-12-13
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望201点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2009-12-01 17:26
其实这也有调用约定的问题最好就是自己u下 看堆栈
游客

返回顶部