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.

[参考译文] TMS320F28035:C28x CPU 的原子读取/修改/写入

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/627223/tms320f28035-atomic-read-modify-write-of-c28x-cpu

器件型号:TMS320F28035

大家好、在 F2803x 多日技术讲座中、介绍了 F28x 原子读/修改/写。 示例如下:

因此、我在我的代码中进行测试、如下所示、将会出现错误:

警告#99922:"../example_2803xLEDBlink.c"、第35行:汇编语句"and
*XAR1,#0x1234"创建一个标签,可能不是预期的。 使用
在标签或非标签前的空格后面加上冒号、以使警告静音。
警告#99922:"../example_2803xLEDBlink.c"、第35行:汇编语句"and
*XAR1,#0x1234"创建一个标签,可能不是预期的。 使用
在标签或非标签前的空格后面加上冒号、以使警告静音。
1组装错误、无组装警告

>>编译失败
subdir_rules.mk:65:目标'example_2803xLEDBlink.obj'的配方失败
"C:\Users\a0223719\AppData\Local\Temp\{4543FEC9-CF37-4246-8C43-FE6DB9DEDA45}"、错误! 在第138行:
[E0002]
助记符规范无效
和*XAR1、#0x1234

1.为什么会出现错误?

2.我在 SPRU430F 中找不到任何像 "and *XAR2,#1234h"这样的原子指令,我只能找到类似的基本汇编语言指令

"MOV AL、* XAR2.

和 AL、#1234h

MOV *XAR2, AL"

是否提供了原子指令列表?

3.在汇编语言中、我能否直接写入原子指令而不是汇编语言指令? 如果我用 C 语言编写代码、编译器会在可能的情况下自动生成原子指令吗?

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

    [引用用户="Howard Zou"]警告#99922:"../example_2803xLEDBlink.c",第35行:汇编语句"和
    *XAR1,#0x1234"创建一个标签,可能不是预期的。 使用
    在标签或非标签前的空格后面添加冒号以使警告静音。

    在 C28x 汇编中、第一列保留用于标签。  您需要在"和和之间输入一个空格。  这会将和移出第一列。

    asm ("和... ");

    一般而言、我会避免使用 asm ("...")。  我记得、如果您在 asm (")语句中修改寄存器、会使 C 环境混乱、并且会干扰优化。  编译器论坛中的专家将能够在实际应用中更好地评论这种做法。

    [引用用户="Howard Zou"]

    2.我在 SPRU430F 中找不到任何像 "and *XAR2,#1234h"这样的原子指令,我只能找到类似的基本汇编语言指令

    "MOV AL、* XAR2.

    和 AL、#1234h

    MOV *XAR2, AL"

    是否提供了原子指令列表?

    [/报价]

    没有列表。  通常、执行读-修改-写的指令是原子-示例:OR、AND、XOR... 浏览 SPRU430、一些指令在说明中提到了这一点。  很遗憾、没有完整的列表。

    XAR2、#1234h 是格式和 loc16、#16bitSigned 的指令、在第154页进行了说明。

    [引用用户="Howard Zou"]3. 在汇编语言中、我能否直接编写原子指令而不是汇编语言指令? 如果我用 C 语言编写代码、编译器会在可能的情况下自动生成原子指令吗?

    原子指令是汇编语言指令。

    是的、编译器会尽可能使用这些指令。

    -洛里