我在Windows上使用C语言。这个问题之前是What happens to identifiers in a program?的一部分。我将其分开以减少问题数量。这是一个独立的查询(不依赖于先前的问题)。
如果没有任何东西需要链接(即我没有使用任何库。我知道它没有任何用处),链接器会改变汇编器的目标代码输出吗?如果是,它会改变什么?
我听说链接器还进行了一些内存映射操作。我不明白如何做到。程序没有运行,它只处于制造阶段。链接器如何映射到内存?它看起来像什么?链接器的所有功能是什么?
当人们提到“重定位”、“地址绑定”时,我真的不知道他们是什么意思。它是什么,它的目的是什么?
一些调试器显示信息,例如: 调用堆栈:0xfffef32、0xf3234fe等。这是在运行时吧?或者是所谓的链接器“内存映射”的内存地址?
当人们提到像
我在互联网上搜索了信息,但没有找到有用的东西。也许我不知道要搜索什么。我不想读大部头的书。但如果有任何能够清晰概念的文章、教程,那也会很有帮助。
我是一名初学者程序员。所以,如果您能用简单但技术性的术语解释一下,那就太好了。
如果没有任何东西需要链接(即我没有使用任何库。我知道它没有任何用处),链接器会改变汇编器的目标代码输出吗?如果是,它会改变什么?
我听说链接器还进行了一些内存映射操作。我不明白如何做到。程序没有运行,它只处于制造阶段。链接器如何映射到内存?它看起来像什么?链接器的所有功能是什么?
当人们提到“重定位”、“地址绑定”时,我真的不知道他们是什么意思。它是什么,它的目的是什么?
一些调试器显示信息,例如: 调用堆栈:0xfffef32、0xf3234fe等。这是在运行时吧?或者是所谓的链接器“内存映射”的内存地址?
当人们提到像
symbols
或symbol table
这样的东西时,他们是否指标识符(变量名、常量名、函数名)?我在互联网上搜索了信息,但没有找到有用的东西。也许我不知道要搜索什么。我不想读大部头的书。但如果有任何能够清晰概念的文章、教程,那也会很有帮助。
我是一名初学者程序员。所以,如果您能用简单但技术性的术语解释一下,那就太好了。