怎么判断寄存器用来传递参数给子程序??
一般 都是用push的 但是有时候是用寄存器传递参数的,这个时候该怎么判断很是纠结请高手指点迷津本帖最后由 属専色灰 于 2013-8-18 21:04 编辑
楼主不会是准备搞挂吧!
去call里面看,用到了谁就传谁,不可依赖返回值大小来判断call的参数~这是修炼内功,多多练习就好了~~~
寄存器是有限的,参数多的话没办法全部用寄存器传的...
汇编吧,刚开始学:lol: 属専色灰 发表于 2013-8-18 21:00 static/image/common/back.gif
楼主不会是准备搞挂吧!
去call里面看,用到了谁就传谁,不可依赖返回值大小来判断call的参数~这是修炼内功 ...
:lol: 用到寄存器做参数传递的时候 感觉很难判断啊要看到内部直接用到哪个纠结 那你这个就要前后文看了,一般寄存器传寄参数,都需要先在栈里取出参数才能传递,一般局部变量存在,参数一般存在,应该这样可以看出一点点。 这个不一定,要根据源码来判断,要是debug版的基本上都是push(debug版下的__fastcall用到了寄存器,当然也可能有push),但是release版的就是寄存器和push相结合了,参数不多的话直接用寄存器传递,要是多的话就是寄存器和push一起用,毕竟取数据寄存器比内存(栈用的也是是内存)快多了。 看反汇编代码就一目了然了 那这样就麻烦了哦,每个编译器的编译都不同哦,因为优化代码的计算方法本来就存在区别!那就得看经验了!有的用时间换空间的,有的用空间换时间。
页:
[1]