TI中文支持网
TI专业的中文技术问题搜集分享网站

C语言中嵌入汇编

我在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里试了其中一段代码,报错找不到符号

赞(0)
未经允许不得转载:TI中文支持网 » C语言中嵌入汇编
分享到: 更多 (0)