搜索
bottom↓
回复: 4

关于keil下面 汇编程序的模板请教

[复制链接]

出0入0汤圆

发表于 2009-6-21 17:20:35 | 显示全部楼层 |阅读模式
想编一个汇编程序,新建一个工程,加入默认的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周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-6-24 01:24:32 | 显示全部楼层
__main的出口是main, 如果你不使用__main,自然也不能使用main,这是ADS和KEIL的默认设定。将main改为Main或其它名字就可。当然这样并没有进行C库的初始化。


AREA    UCOSII_ASM, CODE, READONLY
是声明一个段,段名是UCOSII_ASM,CODE表示代码段,READONLY表示只读属性。

为什么需要上面的声明呢?
因为链接器是以段为单位作链接的,用汇编时需声明一个段,供链接器使用。而在C中编译器会自动将C文件适当拆成一个个段,这样链接器就可以链接了。

AREA为汇编的特定语法,C不可以用。

个人理解

出0入0汤圆

 楼主| 发表于 2009-6-24 09:03:27 | 显示全部楼层
感谢 dzqqqq 的解释哈,终于有人说话了。


敢情是不能用main这个关键字,是么。

如果改成了其他的名字,比如说start,是不是还要一个类似于上面的段的声明。

AREA    aaa, CODE, READONLY

start B start

这样是不是就没问题了。

出0入0汤圆

发表于 2009-6-24 22:30:18 | 显示全部楼层
是。
如果start 是在C中的函数名,需要用IMPROT引入。
比如:
    PRESERVE8  ;//堆栈以8字节对齐
    IMPORT start
    AREA    aaa, CODE, READONLY
RESET
    ldr pc,=start

出0入0汤圆

 楼主| 发表于 2009-6-25 09:58:59 | 显示全部楼层
感谢dzqqqq

十分感谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 12:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表