|
想编一个汇编程序,新建一个工程,加入默认的startup.s,
根据个人理解,之所以能够在CRT初始化以后,跳到main函数开始执行,是因为下面代码
EXPORT Reset_Handler
Reset_Handler
IMPORT __main
LDR R0, =__main
BX R0
(前提是 Reset_Handler放到了vector 数组的第二个位置上面)。
所以我就自己岁便建了一个aa.s文件,编辑内容如下
EXPORT main
main
B main
end
编译以后提示
abc.s(1): error: A1163E: Unknown opcode _main , expecting opcode or Macro
abc.s(2): error: A1355U: A Label was found which was in no AREA
怎么理解这两个错误呢,没有搜到什么合理的解释在网上。
如果用汇编编写程序,应该是一个什么样的模板呢。
看了一下zlg提供的os_cpu_a.asm,在汇编程序前面多了以下的声明,
AREA UCOSII_ASM, CODE, READONLY
THUMB
//asm code
是不是就是因为这个问题呢?
为什么需要上面的声明呢?换句话说,为什么C语言的函数就不需要类似的声明呢?
感谢各位回答?
原来用51的时候,感觉对keil的理解主要通过C51和A51两个文档?
现在用cortex-m3,对keil的理解主要要看什么东西呢?
感谢各位不吝赐教? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|