Assembly 链接器脚本中的组织程序集指令和位置计数器

Assembly 链接器脚本中的组织程序集指令和位置计数器,assembly,linker,nasm,linker-scripts,Assembly,Linker,Nasm,Linker Scripts,据我所知,在汇编中使用ORG指令(尤其是NASM汇编) 将链接器脚本中的位置计数器设置为某个值可以执行相同的功能。但是我想知道,如果我同时使用org指令和位置计数器,它们将具有优先权。 例如,如果我有一个以ORG 0x10000开头的汇编代码和一个以 SECTIONS { . = 0xC0000000 代码将链接到哪个地址?据我所知,如果告诉NASM生成一个对象文件(而不是平面二进制文件或其他文件),则不允许使用ORG指令,并将导致错误。您只能将ORG用于不需要链接的内容(不涉及链接器或链接

据我所知,在汇编中使用ORG指令(尤其是NASM汇编) 将链接器脚本中的位置计数器设置为某个值可以执行相同的功能。但是我想知道,如果我同时使用org指令和位置计数器,它们将具有优先权。 例如,如果我有一个以
ORG 0x10000开头的汇编代码和一个以

SECTIONS {
 . = 0xC0000000

代码将链接到哪个地址?

据我所知,如果告诉NASM生成一个对象文件(而不是平面二进制文件或其他文件),则不允许使用ORG指令,并将导致错误。您只能将ORG用于不需要链接的内容(不涉及链接器或链接器脚本)。请尝试查看。还要检查您的工具文档(NASM和您正在使用的任何其他工具)。顺便说一句,有什么有用的例子可以这样做吗?我在看linux内核源代码,它在一些程序集文件中使用了链接器脚本vmlinux.lds和org指令。我不知道完整的构建是如何进行的,但我只是想知道两者是否都可以被使用。除非我遗漏了什么,否则两者都使用是没有意义的,而且可能是不可能的。但是,使用其中一个来构建不同的二进制文件是有意义的,您可以(有时也很有用)构建一个二进制文件,然后将其包含在另一个二进制文件中(作为数据),在这种情况下,您可以使用不同的“组织”来构建这两个二进制文件,但这本身并不会改变任何事情。