首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-07-30 
初学者,关于寄存器eax、ebx、ecx和ebx、esi之类的的疑问。。。Windows系统下ebx、esi、edi是被内定了,用的时候需要

初学者,关于寄存器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

热点排行