找回密码
 注册
搜索
查看: 862|回复: 1

[讨论] 内嵌汇编为何在MTK上编译不过

[复制链接]
发表于 2012-5-23 17:42:48 | 显示全部楼层 |阅读模式
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0282b/Cihccdja.html上的一段arm内嵌汇编,怎么都编译不过,请高手指点迷津:
__inline void enable_IRQ(void)
{
    int tmp;
    __asm
    {
        MRS tmp, CPSR
        BIC tmp, tmp, #0x80
        MSR CPSR_c, tmp
    }
}
__inline void disable_IRQ(void)
{
    int tmp;
    __asm
    {
        MRS tmp, CPSR
        ORR tmp, tmp, #0x80
        MSR CPSR_c, tmp
    }
}
int main(void)
{
    disable_IRQ();
    enable_IRQ();
}
我使用的是MTK 6235 09A 0952,编译器使用的是ARM ads 1.2。
编译的错误信息是:illegal instruction:MRS
 楼主| 发表于 2012-5-25 13:02:27 | 显示全部楼层
该问题是由于采用了tcc.exe编译器造成的,由于thumb指令集并没有包含所有的arm指令集,因此编译时会报:
Error: (Serious) C2020E: illegal instruction opcode: MRS
当采用了armcc.exe编译时,一切ok。
将option.mak中的COMPILE_MODE   =  INST16  
改为COMPILE_MODE   =  INST32就行了。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-24 20:44 , Processed in 0.056735 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表