首页
社区
课程
招聘
[求助]函数调用中的ecx
发表于: 2007-5-9 20:47 5290

[求助]函数调用中的ecx

2007-5-9 20:47
5290
通常函数调用的过程中,所需参数push进入堆栈,由被调用函数使用

可发现有部分被调用函数在调用前会修改ecx寄存器,而被调用函数可以使用ecx寄存器内的数据这是咋回事?

如:

push 1
push 2
mov ecx, esi
call 0x11111111

在0x11111111中使用ecx的值怎么不通过堆栈传递,要通过寄存器传递,这是个什么值?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 79
活跃值: (35)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
2
pascal参数方式:eax, ecx, edx, 栈
c++参数方式:ecx,edx,栈

在OO中,非静态方法的参数,会比实际多一个,就是对象的指针,一般是第一个
2007-5-9 21:25
0
雪    币: 199
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这是C++支持的fastcall的调用形式
2007-5-9 21:28
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不是很明白,继续请教

就是说上面的0x11111111是类成员函数,ecx是对象this指针?

转换成高级语言的话,应该是下面这种方式?

this->1111111(param1, param2);
2007-5-9 21:39
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
很显然是__thiscall
2007-5-9 21:55
0
游客
登录 | 注册 方可回帖
返回
//