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

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 恢复现场然后返回
分享到:
评论

相关推荐

    Perl语言入门(第五版-中文版).pdf

    作者: Randal L.Schwartz Tom Phoenix brian d foy;译者: 盛春 蒋永清 王晖;出版社:东南大学出版社 内容简介 《perl语言入门》也就是大家所称道的“小骆驼书”,是perl程序设计人员最为仰赖的启蒙读物之一。自...

    北邮高级语言程序设计(基于Java)第三次阶段作业.docx

    构造函数在____时被调用 北邮高级语言程序设计(基于Java)第三次阶段作业全文共14页,当前为第4页。创建对象时 北邮高级语言程序设计(基于Java)第三次阶段作业全文共14页,当前为第4页。 类定义时 使用对象的方法时 ...

    可视化程序设计测试题及答案-..doc

    如果不带修饰符,在C#中类成员被默认声明为( ) A.private型 B.protected型 C.public型 D.static型 2.下面关于C#的逻辑运算符+、&&、!的运算优先级正确的是( ) A.""的优先级最高,然后是!,优先级最低的是+...

    java语言与面向对象程序设计作业题与参考答案汇编.doc

    答案:正确 第20题 有的类定义时可以不定义构造函数,所以构造函数不是必需的。 答案:错误 JAVA语言与面向对象程序设计作业2 单项选择题 第1题 下面的语句的作用是:()。 Vector MyVector = new Vector(100,50);...

    新手学习C++入门资料

    这种情况多出现在用一个通用的函数指针调用多个函数的场合,其中有些函数不需要函数指针声明中的所有参数。看下面的例子: int fun(int x,int y) { return x*2; } 尽管这样的用法是正确的,但大多数C和C++的...

    最新名企标准通用C++面试题,

    这样声明之后,相当于告诉C, 函数const void f(void)是在C++语言的文件中声明或者实现的,c程序可以使用这个C++中的函数了,从而实现C++和c的混合编程。 13、编写一个函数,作用是把一个char组成的字符串...

    现代C++程序设计

    1.1.2 C/C++是一门编译语言 1.1.3 为什么许多程序员都选择C++ 1.2 什么是面向对象 1.2.1 C++程序并不一定是面向对象的 1.2.2 一个简单的面向对象程序示例 1.2.3 面向对象的软件更有优势 1.3 结构化设计与面向对象...

    〖程序设计基础〗练习题3及答案

    D) 用final修饰的变量,在程序中可对这个变量的值进行更改。 29.选择排序的思想是,将数据序列划分为两个子列,一个子列是排好序的,另一个是尚未排序的。现若想将数据序列由小到大排序,则每次放到有序子列尾部位置...

    【全新正版】现代C++程序设计(原书第2版)

    内容简介 本书采用生动轻松的语言,深入...附录D ASCII码 附录E 位、字节、内存和十六进制表示 附录F 文件输入/输出 附录G 部分C++类 附录H 多文件程序 附录I Microsoft visual C++2005Express Edition的调试器 术语表

    Java语言与面向对象与程序设计.rar

    5.5 构造函数的继承与重载 2f'_9H*\4I$~.D | 国内领先的通信技术论坛5.6 包 | 国内领先的通信技术论坛0e(G'O+`'Z-Q 5.7 接口www.mscbsc.com:Q p1i+Z8y$S,{(T 5.8 小结 .}4L&`8A/s+V,A/p:A"Z8swww.mscbsc.com第6章 ...

    上海交大网络面向对象程序设计Java第一、二、三次作业答案.doc

    java 中,构造函数可以有返回值 7、 下列叙述中,错误的是( D ) A) 接口与类的层次无关 B) 通过接口说明类所实现的方法 C) 通过接口可以了解对象的交互界面 D) 接口与存储空间有关 8、 阅读和理解下面的程序段 ...

    java经典面试2010集锦100题(不看你后悔)

    D) Java语言中的多态的含义可以表达为:对外一个接口,内部多种实现。Java语言支持两种多态:运行时多态和编译时多态。 题目8:a 程序如下: public class Demo extends Base { private int count; public Demo()...

    〖程序设计基础〗练习题2及答案

    14.定义类头时能使用的修饰符是( )。 A) private B) static C) abstract D) protected 15.设int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值, 正确的switch语句是( )。 A) switch (x + y...

    软件工程-理论与实践(许家珆)习题答案

    C) 包括程序和文档  D) 可独立构成计算机系统 2. 软件工程三要素是(C D)。 A) 技术、方法和工具  B) 方法、工具和过程  C) 方法、对象和类  D) 过程、模型、方法 3. 包含风险分析的软件工程...

    【。net 专业】 面试题

    sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。 密封类不能同时为抽象类。 sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。...

    Java-PHP-C#

    "[a-d]": 匹配'a' 到'd'的单个字符 (和"a│b│c│d" 还有 "[abcd]"效果一样); "^[a-zA-Z]": 匹配以字母开头的字符串 "[0-9]%": 匹配含有 形如 x% 的字符串 ",[a-zA-Z0-9]$": 匹配以逗号在加一个数字或字母结尾的...

    asp.net面试题

    1.B,2.D,3.C,4.BC,5.B,6.AC,7.C,8.A,9.D,10.D,11.B,12.AC,13.D,14.B 填空题答案: 1.(k & 1) == 0 或 k % 2 == 0 2.1,2,4,8(答案不定,看情况) 3.internal 4.select * from table order by year(bb) ...

    net学习笔记及其他代码应用

    1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 答 . private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,...

    c#学习笔记.txt

    在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用其方法的对象的引用。与 C 函数指针...

Global site tag (gtag.js) - Google Analytics