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.

[参考译文] CCS/TMS320F2.8027万:如何确定要使用的CPU寄存器?

Guru**** 2595805 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/623139/ccs-tms320f28027-how-to-determine-which-cpu-register-to-be-used

部件号:TMS320F2.8027万

工具/软件:Code Composer Studio

大家好,我在F2.8027万中编写了一个C代码进行测试,在将程序加载到主板后,我观察到如下的反汇编代码:

CpuTimer0.InterruptCount++;//代码I write

/***** 编译器生成的汇编代码******
3f44b2:0201 MOVB ACC,#1
3f44b3:761F0018 MOVW DP,#0x18
3f44b5:5601.0012万附加@0x12,符合

我可以理解代码:加载值1以注册ACC,将DP移动到0x18,将ACC添加到数据页0x18的地址@0x12。

我的问题是:

1.使用ACC寄存器存储值的原因1. 我是否可以使用不同的寄存器 (例如XARn)来存储值1? 是否由编译器确定?

2.我是否可以用不同的方法来实现CpuTimer0.InterruptCount++?

例如,我将 数据页0x18处的值@0x12加载到XARn,然后将XARn添加1,然后在 数据页0x18处将XARn返回到内存@0x12。

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

    [报价用户="Howard Zou"]2. 我是否可以通过不同的方式实现CpuTimer0.InterruptCount++?[/QUOT]

    我确信有不同的计算方法。  虽然我不知道C28x装配说明,但它不足以为您提供具体细节。   

    Howard Zou 说:
    例如,我在 数据页0x18将值@0x12加载到XARn,然后按1添加XARn,然后在 数据页0x18将XARn返回到内存@0x12。[/QUOT]

    这是一种方法。  但是,此序列有两个访问内存的指令。  上一个序列有一个用于访问存储器的指令。   

    谢谢,此致,

    -George