Error:Undefined symbols ....
找到引用符号的汇编源文件和定义符号的汇编源文件仔细检查和对比,符号没有写错,而且在引用符号之前确实把符号使用IMPORT引入了进来。百思不得其解时,突然想到在定义符号的文件中没有对符号EXPORT。非常低级的错误。
在汇编语言程序设计中,养成良好的编程习惯,形成良好的编码风格是非常重要的。
这里仅根据个人习惯和体会略谈一下使用ADS进行ARM汇编语言程序设计时的符号引用规则,主要是对不同性质的符号使用不同的引用办法:
(1)对于寄存器地址定义以及通用的常量或符号定义(使用EQU定义),可以按类定义在一个.s汇编文件中;在要使用这些定义的源文件中可使用INCLUDE将该.s汇编文件包含进来。
这样做的好处是:避免大量的IMPORT和EXPORT伪语句,增强代码的可读性,另外,对于多个源文件要使用许多相同寄存器地址定义或常量定义的场合,这样做可以大大压缩代码尺寸(经笔者实践证实)。
(2)对于代码段的地址标号或函数入口地址标号(函数名),在代码段或函数的定义处使用EXPORT输出;在要调用该代码段或函数的源文件中使用IMPORT将符号引入。
一定要保证IMPORT和EXPORT是成对使用的,若不EXPORT则IMPORT无效,若只EXPORT而不IMPORT也无法引用符号。
以上仅为个人见解,欢迎批评指正。
阅读(3494) | 评论(0) | 转发(0) |