gpt4 book ai didi

assembly - 如果所有代码访问数据,所有数据访问代码, "code"和 "data"有什么区别?

转载 作者:行者123 更新时间:2023-12-01 08:11:13 26 4
gpt4 key购买 nike

在 Assembly 中有关于内存、代码、数据、段等的大量理论辩论。

直言不讳是没有意义的。

什么是代码、文本、数据等?

我读过教程,他们只关注应用程序,而不是 100% 写下代码在做什么。

我不能成为汇编程序员,这不清楚;有没有教程更好地阐明这一点?

最佳答案

好的,所以其中一些内容有点主观,因为它可能因系统和工具链而异,但是:

  • 代码和文本通常是同义词,意思是“此部分/段包含可执行代码”
  • data 通常表示“此部分/段包含不可执行的数据”

  • 如果您的硬件支持它,数据部分加载到的内存页面可能会被标记为“不可执行”,这样如果您的程序试图跳入该区域,它会立即崩溃而不是做一些疯狂的事情。

    同样,代码/文本部分可能会将其页面标记为“只读”,以便程序不会意外修改它们。一些系统也有“只读数据”部分,它们在其中放置字符串文字和常量变量,等等。

    最极端的例子可能是 Harvard architecture ,其中代码和数据存储器不是同一个物理设备。

    关于assembly - 如果所有代码访问数据,所有数据访问代码, "code"和 "data"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205429/

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