我有这部分使用ARMASM编译的代码:
/* Software Interrupt */
/* we must save lr in case it is called from SVC mode */
#define ngARMSwi( code) __asm { SWI code,{},{},{lr} }使用示例: ngARMSwi( 0x23);
我尝试将其转换为使用gcc (代码源码GCC-4.6.2eabi)进行编译。我找到了这个链接http://www.ethernut.de/en/documents/arm-inline-asm.html,但我找不到一种方法来正确编译这一行。
我最大的努力就是
#define ngARMSwi( code) __asm__ ("SWI " (code) : : :"lr" )但是我得到了编译错误:
error: expected ':' or ')' before '(' token如有任何帮助,我们不胜感激!
发布于 2012-01-12 05:11:30
你可能想要
#define ngARMSwi(code) __asm__("SWI %0" : : "I"(code) : "lr")请注意,code是指令的输入,因此将在第三部分中介绍。它在指令中的位置由字符串中的%0标记。I是对code的约束,表示它必须是8位常量。
https://stackoverflow.com/questions/8826594
复制相似问题