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.

[参考译文] TMDSCNCD28035ISO:了解汇编加载与存储命令

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/898368/tmdscncd28035iso-understanding-assembly-load-versus-store-command

器件型号:TMDSCNCD28035ISO

你好!

我目前有这个 Piccolo TMS320F28035 隔离式 controlCARD。

卡:

http://www.ti.com/tool/TMDSCNCD28035ISO

集线站:

https://www.ti.com/tool/TMDSDOCK28035

微型逆变器基板:

http://www.ti.com/tool/TMDSSOLARUINVKIT

我正在使用位于".../controlSUITE/development_kits/TMDSSOLARUINVKIT_v100/MicroInv_F2803x中的太阳能微型逆变器示例代码。  

我使用   CCS 文件夹中的 dis2000工具从该项目中反汇编了可执行文件。 我现在正在编写一个脚本、该脚本会经过汇编代码并跟踪所有算术指令、分支、加载和存储。

我使用了:

http://www.ti.com/lit/ug/spru430f/spru430f.pdf

以帮助我了解从第116页开始的可用说明。  

前两个操作收集起来非常简单。 我无法区分商店和负载。 我注意到"MOV"和"MOVal"等命令可用于存储或加载。 是否有方法可以判断使用该命令的方式?

手册第155页提供了一个使我感到困惑的示例代码:

MOV AL、@Vara;负载 AL、包含 Vara 的内容

添加 AL、@VarB;添加到 VarB 的 AL 内容

ANDB AL、#0xFF;和 AL 的内容、带0x00FF

MOV @VarC、AL;将结果存储在 VarC 中

 "MOV 命令用作加载和存储。

我还会看到"MOVL XAR4、XAR6"等指令       

我看不出如何区分它们? 如果有任何建议、我们都会很感激! 谢谢!  

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

    就 C28x 指令集而言、加载和存储之间没有差异;两者都只是作为数据移动处理。 区别在于源地址和目的地址。

    如果要查找加载和存储寄存器的指令、则需要解析寄存器名称的反汇编。 CPU 寄存器位于您提到的文档的第2.2章中。  

    在 C28x 上、指令之后的第一个操作数是目的操作数、第二个操作数是源操作数、那么

    MOVx 目的、源

    通常、您可以说、当寄存器名称是目的时、它是一个加载。 如果不是、寄存器名称是源代码、它是存储。 我认为这涵盖了 MOVx 的所有可能性。  BTW、PREAD 是可以执行加载/存储的另一条指令。

    希望这对您有所帮助。

    此致、

    Richard

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

    感谢 Richard 的回答。  

    正如您提到的、如果我在目标位置看到寄存器、那么我一直在将指令作为加载计数、如果它在源位置、则作为存储计数。  

    但是、我仍然不确定在两个位置获取寄存器的情况?

    MOVL XAR5、XAR4

     

    我的汇编代码中有几个类似的用例、我想知道是否有方法区分这些用例?  

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

    我将其称为加载、因为数据会进入寄存器。  如果要将加载定义为仅当数据从存储器传入寄存器时、我假设您可以通过检查第一个操作数是寄存器时、第二个操作数不是寄存器来排除上述情况。

    即、当寄存器名称是目的且源不是寄存器名称时、将会加载。 否则、寄存器名称是源、它是存储。   

    那么、上述情况既不是加载也不是存储。  它取决于您如何定义负载。

    此致、

    Richard