编译会报错

2019-07-27 16:42发布

我在Vectors.asm中声明了中断向量表.global_vectorstable,并且进行了定义,在main.c中通过extern far vectorstable(void)进行了声明,然后在main中配置ISTP=(unsigned int)(&vectorstable),这时候编译会报错:
unresolved symbol _vectorstable, first referenced in ./Source/Main.obj

请问是什么原因?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
chenjunt
1楼-- · 2019-07-27 21:36
 精彩回答 2  元偷偷看……
pangb
2楼-- · 2019-07-27 23:56
我在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
3楼-- · 2019-07-28 00:34
汇编语言是低级语言,能够直接操作硬件,并且生成机器码的效率高。但汇编对平台的依赖性强,可移植性差,开发效率低。 而C语言则处于二者之间,移植性比较好,代码效率也比较高,可以对部分硬件直接访问。开发效率较高。写得好的C代码,可移植性是很好的,很多时候都不用修改或者只做少量修改。
pangb
4楼-- · 2019-07-28 04:03
你说的这个什么意思?

一周热门 更多>