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

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

2008-12-13 14:41
4953
最近看天书夜读,在第三章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)

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
apollone 2008-12-13 15:27
2
0
好象有C方式和pascal方式,不一样的
雪    币: 186
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
likedust 2008-12-13 16:08
3
0
我问的就是C方式啊。
雪    币: 44
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bozer 2008-12-13 16:50
4
0
函数参数入栈开始处:参数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
雪    币: 186
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
likedust 2008-12-13 18:47
5
0
谢谢。终于清楚了。。
游客
登录 | 注册 方可回帖
返回