ARM 汇编中符号表生成与 PLC 的使用
1. 标签处理与符号表构建
在 ARM 汇编中,标签处理是一个重要的环节,它需要对汇编源代码进行两次扫描:
1. 第一次扫描 :确定每个标签的地址。
2. 第二次扫描 :使用第一次扫描计算出的标签值来汇编指令。
在第一次扫描过程中,会构建一个符号表,用于存储每个符号的名称及其地址。符号表是通过从第一条指令到最后一条指令进行扫描来构建的。在扫描时,内存中的当前位置由程序位置计数器(PLC)记录。需要注意的是,PLC 与程序计数器不同,它不用于执行程序,仅用于为标签分配内存位置。例如,PLC 总是只对程序进行一次扫描,而程序计数器在循环中会多次扫描代码。
在第一次扫描开始时,PLC 被设置为程序的起始地址,汇编器会查看第一行代码。检查完这一行后,汇编器会将 PLC 更新到下一个位置(由于 ARM 指令为四字节长,PLC 会增加 4),然后查看下一条指令。如果指令以标签开头,则会在符号表中创建一个新条目,该条目包含标签名称及其值,标签的值等于 PLC 的当前值。第一次扫描结束后,汇编器会回到汇编语言文件的开头进行第二次扫描。在第二次扫描中,当找到标签名称时,会在符号表中查找该标签,并将其值替换到指令的相应位置。
下面是一个简单的示例,展示了符号表处理的过程:
PLC
xx
yy
add r0,r1,r2
add r3,r4,r5
cmp r0,r3
sub r5,r6,r7
Assembly code
Symbol table
xx
0x8
超级会员免费看
订阅专栏 解锁全文
1373

被折叠的 条评论
为什么被折叠?



