zoukankan      html  css  js  c++  java
  • C++函数参数压栈顺序

    C语言函数参数压栈顺序是从右向左,C++的压栈顺序不同情况下却不一样。跟调用约定和编译器有关。

    VC6:

        调用约定              堆栈清除    参数传递 
        __cdecl                   调用者      从右到左,通过堆栈传递 
        __stdcall                 函数体         从右到左,通过堆栈传递 
        __fastcall                函数体         从右到左,优先使用寄存器(ECX,EDX),然后使用堆栈 
        thiscall                  函数体         this指针默认通过ECX传递,其他参数从右到左入栈

    C++Builder6:

        调用约定               堆栈清除    参数传递 
        __fastcall                   函数体      从左到右,优先使用寄存器(EAX,EDX,ECX),然后使用堆栈 (兼容Delphi的register) 
        (register和__fastcall等同) 
        __pascal                     函数体      从左到右,通过堆栈传递 
        __cdecl                     调用者      从右到左,通过堆栈传递(和C/C++默认调用约定兼容) 
        __stdcall                     函数体     从右到左,通过堆栈传递(和VC中的__stdcall兼容) 
        __msfastcall                 函数体      从右到左,优先使用寄存器(ECX,EDX),然后使用堆栈(兼容VC的__fastcall)
  • 相关阅读:
    UVa 1374
    天梯赛L3 004
    redis操作ZSet
    redis操作set集合
    mybatis使用注解开发
    SSM整合之mybatis的别名配置
    mybatis的5.1.10分页插件的使用
    lombok的使用
    JDBC的一个简单工具类
    mybatis的测试
  • 原文地址:https://www.cnblogs.com/xuelei/p/7528108.html
Copyright © 2011-2022 走看看