`
luckyclouds
  • 浏览: 111523 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

c中的FASTCALL

    博客分类:
  • c
阅读更多
在阅读Linux内核源代码的时候,发现有很多__attribute__其中有一个宏FASTCALL用的就比较多
#define FASTCALL __attribute__((regparm(3)))
意思是,最多可以使用3个寄存器(或许是eax,edx,ecx)来传送前3个参数,其他参数则压入栈中,而一般来说,函数的调用是基于栈的。

#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
意思就是使用0个寄存器来进行参数传递,顾名思义它是想使得调用这个函数时的所有参数都压入栈中,相对于FASTCALL的使用方式当然是要慢一些了
分享到:
评论

相关推荐

    函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)

    __cdecl 是一种常见的调用约定,广泛应用于 C 语言中。在这种调用约定下,参数按照从右至左的顺序压入堆栈,并且由调用者负责清理堆栈中的参数。这意味着,在函数调用完成后,调用者需要手动清理压入堆栈的参数。 #...

    C语言编码规范(C_Coding_Standard)

    首先,C语言中所有的变量在使用前都必须被显式初始化,这是一项强制性的规则。无论变量是全局的、静态的还是局部的,都应当在使用之前赋予一个明确的值。这样做的目的是为了避免变量被赋予未知或随机的值,从而确保...

    C DLL头文件转换Delphi头文件4.20版本

    标题中的"C DLL头文件转换Delphi头文件4.20版本"指的是将用C语言编写的动态链接库(DLL)的头文件转换为Delphi语言可以使用的头文件。这个过程是为了在Delphi环境中调用C DLL中的函数和资源。转换器的版本号4.20表明...

    用C语言编写的滤波程序

    在计算机系统中,滤波可以使用软件或硬件实现,而本文将着重讨论使用C语言编写的滤波程序。 滤波程序的分类 根据滤波程序的频率特性,滤波程序可以分为高通滤波、低通滤波和带通滤波。 * 高通滤波:允许高频信号...

    c/c++中函数调用方式

    根据给定的文件信息,我们可以深入探讨C/C++中几种主要的函数调用方式:__cdecl、__stdcall和__fastcall,以及C++特有的thiscall。 ### __cdecl `__cdecl`,即“C声明”或“C default”,是C/C++中默认的调用约定...

    函数的几种调用机制

    在C语言编程中,函数的调用机制是基础且核心的知识点。该文档主要介绍了在C语言中,函数调用时的参数传递和堆栈管理问题,以及不同的函数调用约定。在高级语言编译成机器码时,计算机无法自动识别参数信息,因此需要...

    Keil C51使用详解

    掌握 Keil C51 不仅能够帮助开发者提高开发效率,还能够在实际工作中解决复杂问题。随着技术的发展,Keil C51 也在不断更新和完善,以适应更多新出现的需求和技术挑战。对于初学者来说,熟悉 Keil C51 的基本操作是...

    关于C和C++中函数的调用约定.doc

    在C和C++编程中,函数的调用约定(Calling Convention)和函数名修饰规则(Decorated Name)是两个至关重要的概念,它们直接影响到程序的链接和执行过程。当混合使用C和C++代码,或者在C++程序中调用第三方非C++库时...

    C语言开发环境的搭建.pdf

    GCC(GNU Compiler Collection)是GNU项目中的一部分,它是一个强大的开源编译器集合,支持多种编程语言的编译工作,如C、C++、Objective-C、Fortran、Java、Ada等。GCC不仅能够在多种硬件平台上编译出可执行程序,...

    基于C_C构架下文件断点传输的实现

    因此,本文介绍了一种基于C-C架构的断点续传方法,通过简单的代码修改即可在现有的C-S架构软件中实现断点续传功能。 #### 2. 实现流程 在C-C架构下的断点续传实现流程与传统的基于服务器的断点续传有所不同。传统的...

    c语言深度挖掘(一)

    在C语言中,深入理解内存管理是至关重要的,因为这直接影响到程序的性能和正确性。本文将探讨C程序中的内存管理问题,包括内存区域的划分、变量的生存期以及不同存储类别的作用。 首先,C/C++程序运行时的内存分为...

    tc2.0 tubro c 2.0

    在C语言编程中,使用Turbo C 2.0可以学习以下知识点: 1. **基本语法**:包括变量声明、数据类型、运算符、控制结构(如if-else,for,while循环)、函数等。 2. **指针操作**:Turbo C 2.0对指针的支持深入,能够...

    C语言函数调用规定[文].pdf

    在C语言中,函数调用是一项基础且至关重要的概念,涉及到程序执行流程和参数传递机制。函数调用规定是确保程序正确运行的关键因素之一。在本文中,我们将深入探讨两种常见的函数调用约定:stdcall和cdecl。 首先,...

    turboC(英文原版2.01) 喜欢经典的东西就下啊!

    - **兼容性**:Turbo C编译器支持ANSI C标准,同时添加了对 Borland 自定义扩展的支持,如`fastcall`调用约定等。 2. **Turbo C 2.01的改进** - **错误修复**:新版本通常会修复前一版本中的已知错误,提高编译器...

    Turbo C2.0

    此外,Turbo C 2.0 还提供了一个内置的命令行终端,允许用户直接在环境中运行C语言程序,简化了开发流程。 在 Turbo C 2.0 中,开发者可以使用标准C89(ISO C90)语言特性,包括基本的数据类型、控制结构、函数、预...

    colorbtn.rar_C Builder

    在C++Builder中,开发GUI应用程序时,我们经常会遇到需要自定义控件外观的情况,比如创建彩色按钮(Color Button)。本教程将详细讲解如何在C++Builder中实现彩色按钮的使用,通过实例来帮助你理解这个功能。 首先...

    反编译DLL文件为.CPP工具

    如果是 C++ 、C __stdcall、C __fastcall 的方式导出的话,生成的函数声明将会还原成原代码级别(可能需要修改才能编译,比如导出C++类的情况)。此时使用 __declspec(dllexport) 导出 ——不能指定导出序号。  3....

Global site tag (gtag.js) - Google Analytics