【发布时间】:2013-02-15 10:37:55
【问题描述】:
对于计算机科学作业,我应该用任何语言编写一个小程序,并确定源代码指令与已编译机器代码指令的比率 - 我该怎么做?
【问题讨论】:
标签: computer-science computer-architecture
对于计算机科学作业,我应该用任何语言编写一个小程序,并确定源代码指令与已编译机器代码指令的比率 - 我该怎么做?
【问题讨论】:
标签: computer-science computer-architecture
根据您的编译器,您可以使用开关来创建代码的汇编版本。汇编代码是操作码(“机器语言”)的直接助记符。
With gcc(如果您更喜欢 Intel 而不是默认的 AT&T 语法,请考虑添加 -masm=intel):
gcc -S ...
据我所知,unixoid 系统上的其他编译器也支持-S。这将跳过编译,您需要查找以源文件命名的文件,但扩展名已替换为 .s。
cl.exe /FA
...您可以添加c(即/FAc),它也会编译它。然后,您将要查找 .asm 文件。
另见:How can I see the assembly code for a C++ program?
完成此操作后,您基本上可以比较(相关!)源代码行。然而,什么是相关的取决于你自己(或你老师)的判断。有一些工具可以计算SLOC,例如这篇维基百科文章中引用的那个:SLOCCount。
注意:第一段中关于直接表示的陈述略有不正确。如果我们在谈论宏汇编程序,那么这不成立,因为宏。但即使 MSVC 使用宏汇编器作为后端,编译器并没有充分利用宏功能,因此它们不应该(太多)干扰 SLOC 计数。
【讨论】: