Digital Mars D编译器; 获取ASM输出

Tac*_*lff 7 compiler-construction d dmd

我正在阅读Andrei Alexandrescu关于D编程语言的书.他是一位优秀的作家,在解释D语言方面做得非常出色.然而,当我无法想象ASM输出或某些关键字的后果(例如输入,输出等或其他结构)时,我发现某些结构难以理解.即使我的ASM非常糟糕而且我从不使用它,但是能够理解某些关键字如何对计算机和正在进行的工作有所帮助,这对我有很大帮助.

DMD编译器有许多有趣的功能(代码覆盖,生成接口(头文件),生成文档,分析,...)但我还没有看到转换输出ASM代码.编译器会生成.obj文件,并从阅读以下链接:http://www.digitalmars.com/ctg/obj2asm.html我怀疑我需要一个工具来手动转换目标文件.我更喜欢编译器开关,有吗?

在该页面的底部,我链接到一个页面,我可以在其中支付包含该工具的产品.来自GNU背景,我非常不满意.这仅适用于C/C++,还是适用于D编译器?

有没有其他方法可以将这些.obj文件转换为可读的ASM代码,还是必须使用其他D编译器(如GDC或LDC)来获取ASM输出?我不愿意.DMD由创始人自己创建,我敢肯定他正确地实现了大部分功能/大部分优化.

那么,我该如何看一看ASM代码呢?

谢谢.

You*_*You 10

obj2asm实用程序由DMD编译器套件提供,该套件可免费获得(在双GPL和Artistic许可下).请参阅D编程语言网站上的DMD Compiler for Linux.

  • 谢谢,因此需要Linux OS来获取ASM源(或其他工具)?我不确定为什么这仅是Linux ... (2认同)

dsi*_*cha 7

你可以试试objconv.这就是我使用的.DMD不通过交换机输出汇编器的原因是因为它永远不会将ASM生成为离散步骤.它直接从其内部表示生成二进制操作码.这是编译速度如此之快的部分原因.

或者您可以使用DMD 随附的DMD obj2asm工具.

obj2asm somefile.o > somefile.s
Run Code Online (Sandbox Code Playgroud)