打印

请教:关于在C文件中引用asm文件中的函数

[复制链接]
3968|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
狗腿子小汤|  楼主 | 2012-12-4 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在Vectors.asm中声明了中断向量表.global_vectorstable,并且进行了定义,在main.c中通过extern far vectorstable(void)进行了声明,然后在main中配置ISTP=(unsigned int)(&vectorstable),这时候编译会报错:
unresolved symbol _vectorstable, first referenced in ./Source/Main.obj

请问是什么原因?

相关帖子

沙发
angerbird| | 2012-12-4 16:26 | 只看该作者
,这个楼主查下main函数的链接地址的啥的看可不可以解决的

使用特权

评论回复
板凳
狗腿子小汤|  楼主 | 2012-12-5 09:58 | 只看该作者
angerbird 发表于 2012-12-4 16:26
,这个楼主查下main函数的链接地址的啥的看可不可以解决的

兄弟,链接地址啥意思?
另外,我在map文件里看到如下显示:UNDEFED    _vectorstable
0099e800   _exit
0099e500   _main
0099eb20   _memcpy
0099e8e0   _memset
UNDEFED    _vectorstable
ffffffff   binit
00910ef0   cinit
00800400   edata
009a110c   end
0099ed40   etext
ffffffff   pinit

后来我在C里声明vectorstable,在汇编里引用 .ref _vectorstable,这样就能编译过,这是为啥呢兄弟?

使用特权

评论回复
地板
angerbird| | 2012-12-12 09:18 | 只看该作者
汇编语言是低级语言,能够直接操作硬件,并且生成机器码的效率高。但汇编对平台的依赖性强,可移植性差,开发效率低。 而C语言则处于二者之间,移植性比较好,代码效率也比较高,可以对部分硬件直接访问。开发效率较高。写得好的C代码,可移植性是很好的,很多时候都不用修改或者只做少量修改。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝