This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C语言中嵌入汇编



我在CCS中建了一个工程,在某个C文件件里有一句 asm("pop r4");,然后编译器提示非法的指令,是在CCS里没办法使用汇编吗?

  • ccs中可以嵌入汇编的。

    你用的什么处理器?msp430,tiva,还是dsp?

    每种处理器支持的汇编指令不同,具体请参看每种处理器的指令集。

  • 430f6638,嵌入asm("nop")是可以的,但是用其他的会出问题,汇编指令应该没问题,我在iar里嵌入的汇编是能用的,现在要移到ccs。

  • 能否提供下上下文的汇编代码?

    只看这一句看不出有什么问题。POP是字从堆栈弹出到目的操作数。

  • 我是打算写一个简单的任务切换程序,教学用,下面是一个任务切换的函数,里面的每一句指令都提示非法

    void ostaskch()
    {

    asm("push sr");
    asm("push r4");
    asm("push r5");
    asm("push r6");
    asm("push r7");
    asm("push r8");
    asm("push r9");
    asm("push r10");
    asm("push r11");
    asm("push r12");
    asm("push r13");
    asm("push r14");
    asm("push r15");
    asm("mov _Sys_CurrentTask,r4");
    asm("mov sp,0(r4)");
    _Sys_CurrentTask=_Sys_CHTask;
    asm("mov _Sys_CurrentTask,r4");
    asm("mov 0(r4),sp");
    asm("pop r15");
    asm("pop r14");
    asm("pop r13");
    asm("pop r12");
    asm("pop r11");
    asm("pop r10");
    asm("pop r9");
    asm("pop r8");
    asm("pop r7");
    asm("pop r6");
    asm("pop r5");
    asm("pop r4");
    asm("pop sr");
    }

  • CCS实现C和汇编的混合编程当然没有问题,网上资料很多啊,比如

    http://read.pudn.com/downloads136/ebook/579276/CCS.pdf

  • 在asm文件编写函数然后在C调用应该是可以的,但是我不大懂汇编的格式,那个pdf是dsp的,我在430的ccs里试了其中一段代码,报错找不到符号