当前位置: 代码迷 >> 汇编语言 >> 菜鸟,关于寄存器eax、ebx、ecx和ebx、esi之类的的疑问。
  详细解决方案

菜鸟,关于寄存器eax、ebx、ecx和ebx、esi之类的的疑问。

热度:3977   发布时间:2013-02-26 00:00:00.0
初学者,关于寄存器eax、ebx、ecx和ebx、esi之类的的疑问。。。
Windows系统下ebx、esi、edi是被内定了,用的时候需要push,用完需要pop。
然后eax是当作变通用的返回值寄存器,eip、ebp、esp就不用说了。。。
那edx和ecx呢?这2个需要不需要用之前push,用完pop?还是能用完就扔?

昨天被ebx这3个折腾死了,现在搞得只敢用eax了,有时候用堆栈当临时变量有点麻烦,现在ebx这3个我是不敢随便用的了。。。我就是问下ecx和edx的使用有什么限制没有?Win32下保证绝对安全也一定需要push然后pop么。。。

------解决方案--------------------------------------------------------
windows里面的规则是eax,ecx,edx由调用者保存,也就是你不用保存这些
------解决方案--------------------------------------------------------
查调用约定,intel/ms 32bits xxxxx。。。
至今也没弄明白到底叫什么约定。。。只知道有这个约定,也没看到过细则
遇有字符串参数时可不保护esi,edi,其他的就没谱了
------解决方案--------------------------------------------------------
http://blog.csdn.net/axx1611/article/details/5138618
  相关解决方案