0

我在链接我的程序集时遇到了一些问题。我使用 NASM 进行组装,然后将其与 ld 链接。一个小问题是 GLOBAL 指令仅在我定义 .data 部分时才有效。我相信它背后有一些合理的东西,但对于导出符号来说这仍然很重要吗?(我决定使用 coff ,因为这是与带有 -c 选项的 g++ 最相似的格式)。主要问题是,即使在我设法链接它之后,调用也会导致某个地址并且该函数不存在。感谢您的阅读时间,如果您有一些建议或关键字,我应该在谷歌上搜索有关链接和符号的信息,那将非常棒。

4

1 回答 1

1

我没有在 Windows 上使用 nasm,但从查看输出nasm -hf我猜你想要win32格式,而不是coff. COFF 格式是较旧的对象文件格式,现在在 Windows 上使用的 PE-COFF(或简称“PE”)格式是较新的版本。

至于为什么需要在 GLOBAL 指令生效之前指定一个 SECTION ,我没有看到这种行为。您是否可能没有在标签之前声明您的 GLOBAL?或者,可能正在发出符号,但如果它打算作为数据变量但在 .text 部分中分配了空间,则无法提供正确的链接。

于 2010-09-12T11:41:41.503 回答