Iar环境c语言调用汇编函数,如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?...

作者在使用IAREWARM编程时遇到困难,试图通过内联汇编调用另一模块的C函数SavePC,但遇到符号识别错误。他们尝试了IMPORT和EXTERN导入,寻求解决方案。讨论了extern原型定义和可能的编译器设置问题。
摘要由CSDN通过智能技术生成

我在硬故障处理程序中有一些程序集。程序集基本上是为了传递当前堆栈指针作为参数(在R0中)。它看起来像这样...如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?

__asm(" mov r0, sp\n"

" bl SavePC\n"

" bx lr");

当SavePC在同一个c文件中时,这工作正常。但是,当SavePC被放置在另一个c文件中时,我没有运气。我试图导入这样的功能...

__asm("IMPORT SavePC\n"

" mov r0, sp\n"

" bl SavePC\n"

" bx lr");

...但我必须做一些不正确的事情。编译器报告以下...

Error[Og005]: Unknown symbol in inline assembly: "IMPORT"

Error[Og005]: Unknown symbol in inline assembly: "SavePC"

Error[Og006]: Syntax error in inline assembly: "Error[54]: Expression can not be forward"

Error[Og005]: Unknown symbol in inline assembly: "SavePC"

Error while running C/C++ Compiler

与组件C文件包括与SavePC原型的头文件...

extern void SavePC(unsigned long);

建议?

2012-10-05

Jason

+0

你具备的功能** SavePC **在文件中定义为extern这个asm代码驻留? –

+0

@ maths-help-seeker我包含SavePC的头文件,它的原型定义为extern - 'extern void SavePC(unsigned long);'。好? –

+0

是的。我正在通过汇编程序的手册。它使用EXTERN 。你能否检查一下,而不是导入? –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值