【发布时间】:2013-11-13 17:54:01
【问题描述】:
是否有可能以某种方式将简单的 C 或 C++ 代码(简单的意思是:将一些 int 作为输入,打印一些依赖于该 int 作为输出的简单形状)转换为汇编语言?如果没有,我将手动执行,但由于我将为英特尔 8080 等处理器执行此操作,因此似乎有点乏味。你能以某种方式自动化这个过程吗?
另外,如果有办法,与仅手动翻译相比,输出汇编文件源代码有多好(如:优雅)?
【问题讨论】:
-
有些程序被称为编译器 ;-)。以
gcc -S为例。 -
将一种语言翻译成另一种语言的过程称为编译,我们通常将C/C++编译成二进制,但是编译成另一种语言,无论是汇编还是java也是可以的,大多数C/C++工具链允许您直接编译为程序集,但是在 GCC 和 Clang 中,这是使用 -S 标志完成的。
-
一般来说,我们主要进行减少抽象的编译,并且从低级语言编译到高级语言,在从低级语言编译到高级语言时有时被称为“反编译”语言,从中创建了这个低级翻译。然而,这通常意味着丢失所有或大部分抽象,因为这些抽象在从高到低的编译过程中通常会丢失。
-
最后一点,当从高级语言编译到低级语言时,禁用调试符号和优化可能是个好主意,以使输出程序集更适合人类读者。