`
黑色杰克史密斯
  • 浏览: 16216 次
社区版块
存档分类
最新评论

D语言的函数修饰

阅读更多
D语言的函数修饰 = _D + 函数模块字串的字符个数 + 模块名(默认为文件名) + 函数字符串字符个数 + 函数字符串 + F(Function) + 虚参类型名 + Z + 返回值类型

示例:
module mainXASDA;
void funwq(int,int,int);

修饰名 : _D9mainXASDA5funwqFiiiZv

成员函数修饰 = _D + 函数模块字串的字符个数 + 模块名(默认为文件名) + 类字符串字符个数 + 类字符串 + 成员函数字符串个数 + 成员函数字符串 +  MF(Member Function) + 虚参类型名 + Z + 返回值类型

module mainXASDA;

class zzz{
public:
int aaa(int,int);
}

修饰名 : _D9mainXASDA3zzz3aaaMFiiZi


还有一点 关于 D风格的 函数调用 反汇编看了下 有三个比较独特的地方 ...(Windows 最新的版本的 dmd 未开 -O 优化的情况下)

1. 参数是 从左往右呀进去的 ... 跟 __cdcel/__stdcall 相反
2. 最后一个参数 他是不压的 直接 mov 在 eax 里面 然后 调用 函数 .. 这点比较聪明 函数总是通过 eax 来返回值的 最常修改的就是 eax 寄存器了 不太可能eax 里面存在重要的 上下文 ... vc 里面 ebx 比较重要 上次没保存ebx 程序直接崩溃了 (修改ebx居然会有 修改框架指针的警告 vs2010 esp 为0 会丢失反汇编/调试内容) ...
3. 使用 enter 来生成栈帧 leave 恢复现场然后返回
分享到:
评论

相关推荐

    D 语言详细教程

    - 访问控制:D语言有public、private和protected三种访问修饰符,控制成员的可见性。 3. 模块与导入 - 模块:D语言使用模块(module)来组织代码,提高可读性和可维护性。 - 导入库:D的import语句用于导入其他...

    学习D语言的tango:第三章 D的面向对象特性

    此外,D语言支持私有(private)、受保护(protected)和公有(public)访问修饰符,允许你控制类的封装性。 其次,继承是面向对象编程中的另一个核心概念。在D语言中,你可以使用`: baseClass`语法来实现类的继承...

    函数指针和指针函数,const的用法,指针常量,常量指针的用法

    在 C 语言中,`const` 关键字用于声明常量或者限定指针的操作范围。`const` 的位置决定了哪些部分是不可变的。 #### 指针常量 指针常量是指指针本身的地址是不可改变的,即指针一旦指向某个对象就不能再指向其他...

    D_语言_2.0_编程参考手册

    在D语言2.0中,语法简洁明了,支持面向对象、函数式以及过程式编程,同时具备C++的高效性和Python的易用性。手册上篇可能涵盖以下几个核心知识点: 1. **基础语法**:包括变量声明、数据类型(如基本类型、结构体、...

    C语言中的类型修饰符

    C语言作为一种静态类型的编程语言,提供了多种类型修饰符来帮助开发者更好地控制变量的行为和特性。本文将详细介绍C语言中的三种重要类型修饰符:`const`、`static` 和 `volatile`。 #### 二、`const`修饰符详解 `...

    D 语言编程参考手册 1[1].0(中).pdf

    - **设计理念**:D语言融合了现代语言的高级特性,如垃圾回收、模板元编程、函数式编程支持,同时也保持了接近底层硬件的控制能力,适用于高性能计算、游戏开发、系统编程等领域。 #### 2. **语言参考** - **词法...

    DLL中调用约定和名称修饰

    在编写DLL时,如果希望其他语言编写的模块(如Visual Basic、Pascal或Fortran的应用程序)能够调用这些DLL中的函数,那么必须使用正确的调用约定,并避免使用名称修饰,以确保跨语言的互操作性。 #### 三、调用约定...

    函数指针_extern_typedef_const_static的基本用法

    在C/C++编程语言中,`函数指针`、`extern`、`typedef`、`const`和`static`是五个非常重要的关键字,它们各自有着独特的功能和用途。本篇文章将详细阐述这些概念及其基本用法。 首先,我们来看`函数指针`。函数指针...

    C C++ Scanf函数的用法.

    Scanf 函数是 C 语言中一个通用的格式化输入函数,可以从标准输入设备(键盘)读取输入的信息,并将其转换为适当的机内格式。scanf 函数的控制串由三类字符构成:格式化说明符、空白符和非空白符。 格式化说明符是...

    C语言-输入输出函数笔记

    格式控制串可以包含格式符、修饰符和宽度说明等。例如,`%d`用于读取整数,`%c`用于读取单个字符,`%s`用于读取字符串。 C语言中输入输出函数是非常重要的,它们使得程序可以与外部世界交互,实现数据的输入和输出...

    C中如何调用C++函数.pdf

    在C语言和C++语言的混合编程中,一个常见的需求是在C代码中调用C++编写的函数。由于C++支持函数重载和类的封装,这使得其与C语言存在一定的差异。为了在C代码中调用C++函数,我们通常需要采用一些特殊的手段来确保...

    printf()函数详解.zip

    `printf()` 函数是 C 语言中的一个标准输出函数,属于 C 标准库 `<stdio.h>` 中的一部分。它主要用于格式化输出数据到标准输出设备,如显示器或打印机。`printf()` 函数的强大之处在于其灵活性,可以处理各种类型的...

    C语言程序设计月考试题(函数部份)终版.pdf

    C语言是一种广泛使用的编程语言,尤其适合系统编程和嵌入式开发。在C语言中,函数是构成程序的基本单元,它允许我们将代码组织成可重用的模块。本题涉及了多个关于C语言函数的知识点,以下是根据题目内容展开的详细...

    printf函数详细解释

    `printf`函数是C和C++编程语言中用于格式化输出文本的强大工具。在本文中,我们将深入探讨`printf`函数的工作原理、格式化字符串的细节以及如何灵活运用它来实现多样化的输出需求。 #### 1. 基本语法与结构 `...

    dart语言概览和实践.pdf

    Dart支持单一继承,但没有私有和受保护的修饰符,类成员默认是公开的。Dart还支持抽象类和抽象方法,以及接口的隐式实现。 泛型是Dart支持的另一个重要特性,允许在定义类、接口和函数时使用类型参数。泛型可以提供...

    详解C++ 动态库导出函数名乱码及解决

    C++ 动态库导出函数名乱码的原因是由于 C++ 编译器对函数名的修饰规则。根据 C++ 编译器的修饰规则,函数名会被修改,以便于在 DLL 中使用。在 C++ 中,有三种调用约定:__stdcall、__cdecl 和 __fastcall。每种调用...

    C++语言程序设计.pdf

    总的来说,C++语言程序设计涉及的知识点广泛,包括面向对象编程的基本概念、函数重载、构造函数与析构函数、指针操作、类和对象、继承与多态、以及标识符和类型修饰符的使用规则。理解并掌握这些知识点是编写高效、...

Global site tag (gtag.js) - Google Analytics