Assembly 从.elf创建的.bin中的未定义符号

Assembly 从.elf创建的.bin中的未定义符号,assembly,embedded,arm,elf,Assembly,Embedded,Arm,Elf,假设我有一个从asm源创建的对象文件(elf文件): .text .code 32 MOV R1, #10 LDR R2, [R1] .string "hello world" fun1: MOV R1, #1 LDR R2, =_symbol1 LDR R3, =_symbol2 b _reset .end 跑步手臂elf nm为我提供了符号: U _reset U _symbol1 U _symbol2 t fun1 因此,用于将某些地址加

假设我有一个从asm源创建的对象文件(elf文件):

.text
.code 32
    MOV R1, #10
    LDR R2, [R1]
.string "hello world"
fun1:
    MOV R1, #1
    LDR R2, =_symbol1
    LDR R3, =_symbol2
    b _reset
.end
跑步手臂elf nm为我提供了符号:

U _reset
U _symbol1
U _symbol2
t fun1
因此,用于将某些地址加载到寄存器的3个符号未定义。现在,让我们使用arm elf objcopy创建一个二进制文件。我假设二进制文件由普通位组成,没有任何重新定位

我的问题是:如果未定义_symbol1和_symbol2,它们会被0替换吗?另一方面,如果它们被定义

.equ _symbol1 0x400
.equ _symbol2 0x500

它们会被那些值所取代吗?

我不知道。您尝试时发生了什么?:-)我还没有解析.bin文件,我将尝试解码指令,看看会发生什么。但我指望从一个假设的角度得到确认。Afaik汇编程序不执行链接步骤,而且在询问地址方面非常宽松。所以你应该得到一些默认的位模式。是的,我忘了没有链接我不能有一个可执行文件。当某些符号未定义时,链接器将显示错误。当所有符号地址都已知时,必须使用链接器生成的.elf文件创建.bin文件。