C Calling Convertion

C与汇编代码的调用约定:

    1. 后面的参数先入栈并且调用者负责还原堆栈

    2. 被调用者通常要保持寄存器EBX,ESI,EDI,EBP,CS,DS,SS,ES的值,意思是如果使用了这些寄存器,要在返回时还原.

    3. 返回值整型使用EAX,64位使用EDX:EAX,指针使用EAX,浮点型使用st0.

    4. 汇编的函数标号名根据编译环境使用或不使用下划线, GCC是不需要.

   

   典型代码,

  Caller

         push dword 1

         call subprogram

         add esp,4

 

   Callee

subprogram label:

  push ebp

      mov ebp,esp

      ;code

      mov esp,ebp

      pop ebp

      ret

 

 

 

 

 

posted @ 2011-04-10 23:19  十三  阅读(234)  评论(0编辑  收藏  举报