编译会报错

[复制链接]
852|4
 楼主| pangb 发表于 2015-4-22 22:24 | 显示全部楼层 |阅读模式
我在Vectors.asm中声明了中断向量表.global_vectorstable,并且进行了定义,在main.c中通过extern far vectorstable(void)进行了声明,然后在main中配置ISTP=(unsigned int)(&vectorstable),这时候编译会报错:
unresolved symbol _vectorstable, first referenced in ./Source/Main.obj

请问是什么原因?
chenjunt 发表于 2015-4-22 22:25 | 显示全部楼层
这个楼主查下main函数的链接地址的啥的看可不可以解决的
 楼主| pangb 发表于 2015-4-22 22:25 | 显示全部楼层
我在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,这样就能编译过,这是为啥呢
ousj 发表于 2015-4-22 22:26 | 显示全部楼层
汇编语言是低级语言,能够直接操作硬件,并且生成机器码的效率高。但汇编对平台的依赖性强,可移植性差,开发效率低。 而C语言则处于二者之间,移植性比较好,代码效率也比较高,可以对部分硬件直接访问。开发效率较高。写得好的C代码,可移植性是很好的,很多时候都不用修改或者只做少量修改。
 楼主| pangb 发表于 2015-4-22 22:26 | 显示全部楼层
你说的这个什么意思?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部