我在CCS中建了一个工程,在某个C文件件里有一句 asm("pop r4");,然后编译器提示非法的指令,是在CCS里没办法使用汇编吗?
灰小子:
ccs中可以嵌入汇编的。
你用的什么处理器?msp430,tiva,还是dsp?
每种处理器支持的汇编指令不同,具体请参看每种处理器的指令集。
hengyou zhang:
回复 灰小子:
430f6638,嵌入asm("nop")是可以的,但是用其他的会出问题,汇编指令应该没问题,我在iar里嵌入的汇编是能用的,现在要移到ccs。
灰小子:
回复 hengyou zhang:
能否提供下上下文的汇编代码?
只看这一句看不出有什么问题。POP是字从堆栈弹出到目的操作数。
hengyou zhang:
回复 灰小子:
我是打算写一个简单的任务切换程序,教学用,下面是一个任务切换的函数,里面的每一句指令都提示非法
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");}
HG:
CCS实现C和汇编的混合编程当然没有问题,网上资料很多啊,比如
http://read.pudn.com/downloads136/ebook/579276/CCS.pdf
hengyou zhang:
回复 HG:
在asm文件编写函数然后在C调用应该是可以的,但是我不大懂汇编的格式,那个pdf是dsp的,我在430的ccs里试了其中一段代码,报错找不到符号