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.

[参考译文] 编译器/TMS320F28335:内联汇编、将当前寄存器值放在函数符号地址

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/938264/compiler-tms320f28335-inline-assembly-to-put-the-current-register-value-at-the-function-symbol-address

器件型号:TMS320F28335

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

您好!

我目前正在编写一个内联汇编、该汇编将值放入堆栈上的寄存器中。

通常、函数符号会转换为地址、并且使用的汇编语言似乎如下所示:
_asm (" MOVL #0x3333、ACC");

假设我要使用的函数符号的名称是"function_name"、我希望将寄存器的值存储为符号、如下所示。
_asm (" MOVL_FUNCK_NAME、ACC");

gcc 中的__asm (" MOVL PTR[_function_name]、ACC");它似乎用作。

我很好奇如何在 TI 中将值存储为符号。

谢谢、此致

韩文

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

    抱歉。

    它是全局变量、而不是函数。

    您可以将其视为已将 function_name 声明为全局变量。

    此外、我想知道所使用的汇编代码之间是否存在差异、它是函数符号还是全局变量符号。

    谢谢

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

    遗憾的是、TI C28x 编译器中的 asm 语句不支持您尝试执行的操作。  不支持 GCC 样式 asm 语句。  有关更多详细信息、请在 C28x 编译器手册中搜索 标题 为_asm 语句的子章节。

    请考虑这些替代方案。  编译器内在函数提供了一种从 C 中访问异常 C28x 指令的方法。 有关更多详细 信息、请在同一编译器手册中搜索标题为"使用内在函数访问汇编语言语句"的子章节。  或者、您可能需要在手动编码的装配体功能中执行异常操作。  有关将此类函数与 C 代码一起使用的更多信息、请在同一编译器手册中搜索标题 为"将 C 和 C++与汇编语言连接"的子章节。

    谢谢、此致、

    乔治