2013-02-27 39 views
0

我目前正在学习NASM,并且有很多东西在教科书中不明。我已经习惯了“这就是它接受它的方式”,来自教授的回答以及对我其他一些问题的回答,但我也更好地了解哪些答案有更好的机会获得答案真正的答案如何将NASM计划削减为零部件......?

NASM程序分为三个部分是什么技术原因 - .data,.bss.text?幕后真正发生了什么?为什么汇编程序需要事先知道是否有常量,为什么不在程序运行时将它们带走呢?

回答

0

data部分是所有的初始化数据的推移。字符串,DWORDS,WORDS,BYTES,QWORDS等等,当程序启动时需要有价值的东西。这部分是可读/写的。此外,的任何内容都会增加到最终的exe大小,所以如果你有一个非常长的字符串;比如说200字节,你的程序将比没有这个字符串时大200字节。

bss部分是所有的未初始化的数据去什么程序启动时不需要值。此处添加的任何内容不会将添加到最终的exe大小。你在这里放的是告诉exe加载程序为这些和那些变量分配内存,因为它们在程序执行期间需要内存空间。这部分是可读/写的。

text部分是所有的程序代码去。本节是只读的。

您可以更改属性,每个部分,如果想要的,如果需要,您可以创建自己的部分。

所有这一切都可以通过研究发现。