zoukankan      html  css  js  c++  java
  • 函数调用

      如果一个第三方提供的函数要能被使用,那么必须有约定的函数调用规则。

    函数调用规则指的是调用者和被调用函数间传递参数及返回参数的方法

    在windows上,常用的有 pascal方式 ,WINAPI 方式(_stdcall),C方式(_cdecl)

    _cdecl C调用规则:

      参数从右到左进入堆栈

      在函数返回后,调用者要负责清除堆栈

    _stdcall WINAPI调用规则:

      参数从右到左进入堆栈

      被调用的函数在返回前自行清理堆栈,所以生成的代码比cdecl小

    Pascal 调用规则:win16函数库中的规则,现在基本弃用。

    在C语言的程序中,堆栈用来传递函数参数

    dword 双字 就是四个字节

    ptr pointer缩写 即指针

    []里的数据是一个地址值

    这个地址指向一个双字型数据

    比如mov eax, dword ptr [12345678]

    把内存地址12345678中的

    双字型(32位)数据赋给eax

    _cdecl 方式下  被调用函数 需要

    1 .保存ebp

    ebp 被用来保存这个函数执行之前的esp地址

    执行完毕后,用ebp 恢复 esp

    同时,调用此函数的上层函数也用ebp做同样的事情

    所以先把ebp压入堆栈中

    返回之前弹出

    2 .保存esp 到 ebp 中

    3. 在堆栈中腾出一个区域用来保存局部变量

    这就是常说的所谓局部变量是保存在栈空间中的

  • 相关阅读:
    sql中not exists的用法
    jsp中target="_blank"的用法
    jsp 运用 session 登录输出
    jsp留言板
    编写JSP 实现用户登录并判断用户或密码
    jsp打印九九乘法表
    jsp输出当前时间
    jsp输出金字塔
    jsp输出5的阶乘
    jdbc练习3
  • 原文地址:https://www.cnblogs.com/Cheetos/p/5396044.html
Copyright © 2011-2022 走看看