gpt4 book ai didi

assembly - 为什么 NASM 程序分为 3 个部分?

转载 作者:行者123 更新时间:2023-12-04 05:09:12 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why do assembly programs have separate segments?

(3 个回答)


8年前关闭。




NASM 程序分为三个“部分”的技术原因是什么? .data、.bss 和 .text ?幕后究竟发生了什么?为什么汇编器需要提前知道是否有常量,为什么不直接在程序中使用呢?

最佳答案

首先,您并不总是需要使用这些部分。在许多系统上,您可以在数据部分包含说明,在文本部分包含数据。

不过,有一些很好的理由拥有它们。

  • 如果您的操作系统和硬件足够复杂,您可以将某些页面映射为“不可执行”,这样您就可以提供一些保护,防止您意外跳入数据部分的错误。
  • 同样,您可以将文本部分标记为“只读”,这样您就不会使用错误的指针意外修改代码。
  • 最后,bss 部分只包含零初始化数据,因此在汇编时将其标记为这样可以减少可执行文件的大小 - 加载程序可以在跳转到程序之前只设置正确数量的零,而不是占用一堆字节的存储只是为了保存一堆零。
  • 关于assembly - 为什么 NASM 程序分为 3 个部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102807/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com