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.

[参考译文] Compiler/AM3357:_ASM语句in C函数

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/576860/compiler-am3357-_asm-statement-in-c-function

部件号:AM3357

工具/软件:TI C/C++编译器

您好,

我看到TI在其源代码中使用了以下内容(例如,在StarterWare 2.0 1.1 的文件"CPU.c"中):

/***

IRQ禁用功能的Wrapper函数
**
*/
void CPUirqd(void){

/*在CPSR中禁用IRQ */
ASM (" Mrs. R0,CPSR\n\t"
" Orr. r0,r0,#0x80\n\t"
" MSR cpsr_c,r0");
} 

同时,TI说在C函数主体中使用_ASM语句可能会出现问题:

e2e.ti.com/.../83.022万

我想问一下,上面的实施是否会引起任何问题,或者是否应该写以下内容(上面 链接中的代码):

__ASM(".sect \".text:CPUirqd\"\n"\}
".clink\n"
".global CPUirqd\n"
"CPUirqd:\n"
"夫人 R0,CPSR\n\t"
" Orr. r0,r0,#0x80\n\t"
" MSR cpsr_c,r0\n\t"
" LR");

我期待着从TI编译器专家那里得到一个清晰的陈述。 谢谢。

此致,
Patrick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    PRUF 说:
    我期待从TI编译器专家那里获得一份清晰的陈述。[/QUOT]

    该语句位于  ARM编译器手册中标题为__asm语句的部分

    该部分一般讨论__asm。  对于这种特定情况,首选实现是程序集源文件中的一个函数。  我不能说为什么StarterWare开发团队做得不一样。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    George,

    感谢您的回复。 我们将在常规ASM文件中重写文件"cpu.c"中的所有函数。 这样,我认为不会有任何问题留下。

    此致,
    Patrick