首页
社区
课程
招聘
[求助]C方式调用函数:下面哪个寄存器中的才是第一个参数呢?
发表于: 2008-12-13 14:41 5353

[求助]C方式调用函数:下面哪个寄存器中的才是第一个参数呢?

2008-12-13 14:41
5353
最近看天书夜读,在第三章3.3中有一个练习:把汇编语言翻译成C语言程序

push ecx
move ecx, dowrd ptr [esp+10h]
move edx, dword ptr [esp+8]
push ebx
mov ebx, dword ptr [esp+18h]
push esi
mov esi, dword ptr [esp+14h]
push ebp
xor eax, eax
push edi
jmp myfunction+20h

书上说:
move ecx, dowrd ptr [esp+10h] --> parameter 3
move edx, dword ptr [esp+8]  --> parameter 1  (我认为这个应该是parameter 2)
mov ebx, dword ptr [esp+18h] --> parameter 4
mov esi, dword ptr [esp+14h] --> parameter 2  (我认为这个应该是parameter 1)

请问一下是不是书上错了啊?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好象有C方式和pascal方式,不一样的
2008-12-13 15:27
0
雪    币: 186
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我问的就是C方式啊。
2008-12-13 16:08
0
雪    币: 44
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
函数参数入栈开始处:参数1:esp+4;参数2:esp+8;参数3:esp+c;参数4:esp+10
执行push ecx后:参数1:esp+8;参数2:esp+c;参数3:esp+10;参数4:esp+14
执行push ebx后:参数1:esp+c;参数2:esp+10;参数3:esp+14;参数4:esp+18
执行push esi后:参数1:esp+10;参数2:esp+14;参数3:esp+18;参数4:esp+1c
2008-12-13 16:50
0
雪    币: 186
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢。终于清楚了。。
2008-12-13 18:47
0
游客
登录 | 注册 方可回帖
返回
//