compiler-construction - 数字火星 D 编译器;获取 ASM 输出

标签 compiler-construction d dmd

我正在阅读 Andrei Alexandrescu 关于 D 编程语言的书。他是一位出色的作家,在解释 D 语言的各个方面方面做得非常好。然而,当我无法想象 ASM 输出或某些关键字的后果(例如 in、out 等或其他结构)时,我发现某些结构难以理解。尽管我的 ASM 非常糟糕而且我从不使用它,但它对我能够理解某些关键字对计算机的影响以及正在完成的工作有很大帮助。

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

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

有没有其他方法可以将这些 .obj 文件转换为可读的 ASM 代码,或者我必须求助于其他 D 编译器(例如 GDC 或 LDC)来获取 ASM 输出?我不喜欢。 DMD 是由创始人自己创建的,我相信他正确地实现了大多数功能/很大程度上优化了。

那么,如何查看 ASM 代码呢?

谢谢你。

最佳答案

obj2asm实用程序由 DMD 编译器套件提供,可免费使用(根据双重 GPL 和艺术许可)。见 DMD Compiler for Linux在 D 编程语言网站上。

关于compiler-construction - 数字火星 D 编译器;获取 ASM 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592587/

相关文章:

DUB:创建两个具有共同代码库的可执行文件

class - 初始化表达式是 D 中构造函数的一部分吗?

windows - 如何编译要从 DMD 链接的 msvc 静态库?

string - d编程,将字符串解析或转换为 double

c++ - 哪些 x86 C++ 编译器本身是多线程的?

regex - 莱克斯/雅克 : using global variables and finding the longest occurance

Python脚本路径编译后保持不变

c - 如何为错误创建语法规则?

linux - SDL 窗口似乎被操作系统错误地标记为 'unresponsive'

import - 多个文件中的相同模块名称