可执行文件的大小?
我创建了一个非常小的代码来添加两个整数并将结果保存在另一个变量中,无论是汇编语言还是 C 语言。汇编代码花费了我 617 字节,但 C 代码花费了 25k 字节!为什么会有这么大的差别呢? 另外,如何查看我编写的 C 代码的汇编符号指令?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我创建了一个非常小的代码来添加两个整数并将结果保存在另一个变量中,无论是汇编语言还是 C 语言。汇编代码花费了我 617 字节,但 C 代码花费了 25k 字节!为什么会有这么大的差别呢? 另外,如何查看我编写的 C 代码的汇编符号指令?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
高级语言有一定的开销。在组装时,您所拥有的就是您所说的。
在这种情况下,您看到的开销可能是标准组件的静态绑定,例如
printf
。可能包含语句添加了这些。如果你想看看你的输出是什么样的,你将需要一个反汇编器。 此处是NASM 反汇编器(如果你想看一下的话)。
您可以通过不包含任何内容来避免部分开销,而是以类似于汇编中的方式实现功能。
High level languages have a certain amount of overhead. While in assembly all you have is exactly what you say.
The overhead you are seeing in this case is likely the static binding of standard components, such as
printf
. Likely an include statement added these.If you want to see what your output is like you will need a dissembler. Here is the documentation for the NASM dissembler if you wanted to take a look at one.
You can avoid some of this overhead by not including anything and instead implement the functionality in a fashion similar to how you did in assembly.