0

我目前正在学习 NASM,有很多东西在教科书中无法解释。我已经习惯了教授的“这就是它的方式,所以接受它”的回答以及我对其他一些问题的回答,但我也更善于知道哪些答案更有可能获得真实答案

NASM 程序分为三个部分的技术原因是什么.data——.bss.text?幕后究竟发生了什么?为什么汇编程序需要提前知道是否有常量,为什么不直接在程序运行时获取它们呢?

4

1 回答 1

0

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

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

text部分是所有程序代码所在的位置。此部分是只读的。

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

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

于 2013-02-27T03:03:45.497 回答