请教各位大虾:问个在编程中调用约定的问题(35分)

  • 主题发起人 主题发起人 netbug
  • 开始时间 开始时间
N

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
我在看一些编程的书时,发现有一些关于调用约定的
说明,但没有具体举例说明,哪位大虾能告诉我,并
能不能举例说明它们之间的区别(例如传参顺序,哪个
约定传参是从左到右等等),谢谢.(我用的是C++)
 
C/C++ 调用:参数从右至左推入堆栈,被调函数首先获得第一个参数。容易实现可变
数目参数调用。调用者负责清除堆栈。
Pascal调用:从左至右。被调用者清除堆栈。效率比 C/C++ 高。Windows 全部使用
Pascal 调用。
Register 调用:Borland 特产。好像是从左数的三个参数推入 eax ebx ecx 寄存器
(不保证正确,没怎么见过汇编代码),多余参数使用 Pascal 使用 _fastcall 描述。
效率没有研究过,不过既然叫 Fast Call ,想必应当比较高。
 
hehe, Register调用前3个参数自动赋值到EAX, EDX, ECX.
 
多人接受答案了。
 
后退
顶部