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.

[参考译文] MSP430FR5994:计算.macro 内其他寄存器名称中的 MSP430寄存器名称

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1121292/msp430fr5994-computing-msp430-register-names-from-other-register-names-inside-a-macro

器件型号:MSP430FR5994

我刚刚开始使用 CCS (也刚刚从11.2切换到12.0、尽管这两个版本都仍然安装)、我想能够为宏提供一个寄存器名称(例如 R15) 然后通过减去一个来计算不同的寄存器名称、从而获得 R14 (在本例中为)。 原因是我要处理32位浮点符号、它保存在两个相邻编号的寄存器中。 宏"知道这个"、我只想为宏提供一个参数、并允许它从它计算相邻的寄存器。

在阅读我的汇编语言工具文档(slau131r)的第6章时、我无法了解如何使用其中提供的内容来实现我想要的目标。

显而易见的解决方案是、我始终通过列出所有寄存器(还有其他寄存器)来调用它。 但是,如果可能的话,我想用一些更具假体的东西。

目前、我的重点是为各种浮点运算符打包和解包 FP 格式(实际上两种具有相同字大小的不同格式)。

有办法吗? 如果是、我希望得到线索。

谢谢。

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

    我不知道 CCS、但在 GNU 汇编器中、"r0"只是一个预定义符号。 "0"也同样起作用。 当然、您可以在表达式中包含宏参数。

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

    谢谢、David。 显然、它在 CCS 汇编器中不起作用。 (刚刚尝试过。) 虽然我对 GNU 工具有一些一般的经验,但我已经为手头的汇编器投入了足够的时间,现在就在这个问题上换马可能不在卡片上。

    但我真的很欣赏这项建议。 值得一试。

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

    如何使用汇编代码访问 Rx 并进行计算。 并将该汇编文件包含到其他 C 文件中?

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

    伊斯天,没有 C 代码。 该项目完全处于汇编状态。 它是一个全功能的基本解释器、包括矩阵运算、需要完全适应低内存地址 FRAM 部分。 其他作者不会提供库。 所有代码都由我编写。 包括所有浮点运算和超越(切比雪夫和非线性 Minimax 方法)。

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

    感谢您的详细解释。 很抱歉、我不是很熟悉汇编代码。 您似乎希望使用指针来访问 CPU 寄存器、以便处理浮点数据计算。 我只能提及 TI.com 上发布的文档、 我想您已经完成了所有这些内容。

    我想问您是否可以找到任何方法来解决这个问题? 例如、使用 C 代码中的反汇编代码来计算浮点数据。

    希望社区中的其他人能够解决您的问题。

     

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

    汇编语言编程器已经不多了。 我在使用 GNU 汇编器宏时发现、它需要一些尝试和错误才能使其实现我想要的功能。  

    我查看了您引用的文档、虽然它在表达式中提到了寄存器、但它没有提供任何详细信息。 这种情况总是令人厌烦。 但这是一个提示、提示您可能能够执行所需的操作。

    一些其他选项:

    使用 pushm 将寄存器对放在栈上、然后索引到栈中。 速度较慢、但它应该能够毫无问题地工作。

    一个不太理想的替代方法是自修改代码。

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

    David、感谢您的时间和想法。 尤其是、您花了一些时间阅读了文档、以便在添加回复之前阐明自己的想法。 这超出了我的预期、非常感谢。

    旧 TSB 系统可安装在大约12 KB 内(主存储器、其中大部分存储在磁盘上并作为叠加代码引入。) 由于扩展地址 FRAM 将用于其他用途(保存程序并为数据文件提供持久的"磁盘"存储)、因此我在 MSP430上可使用的 FRAM 不足50KB。 我想充分发挥绝对最大性能、堆栈使用将由我严格控制。 成本高昂。 (旧 TSB 系统没有堆栈、因为当时硬件堆栈的使用仍然被浪费、这是一种新的错误。)

    为了让您了解我将要使用的长度、我准备了多种替代方法来仅执行浮点除法例程: 使用非恢复方法的传统循环、使用非恢复方法的展开式8循环、第一类型的切比雪夫、一阶初始化程序方法以及带有调整方法的部分表查找方法。 所有这些工作都是为了了解 MSP430在实践中的一些相关知识。

    我知道我将面临许多妥协的情况。 但我不愿意开始浪费周期、然后回来、必须清理。 我从一个铁腕开始(我不是走简单的路、也不是懒惰地做当下看起来很方便的事情、而是在路上小心、精心地注意每一步) 并且将在整个项目中继续执行一个、这样我就不必再返回、稍后、当我意识到问题得到了我更充分的关注时、我应该会抽出周期。

    我只是希望我使用的汇编器和链接器不仅能保持我的工作状态、还能提供我可能需要的一切以及我需要的时间。 到目前为止、链接器对我来说似乎已经足够好了。 我昨天仔细研究了这些功能、它们涵盖了我甚至可能想到的每一个假设需求。 这很好。 我想、汇编器是我的剩余助记符。 该章尚未编写。

    不过、再次感谢!

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

    这是一种向后的方法。 通常的方法是使某个数据正常工作、然后仔细分析后、返回并仅优化可能产生影响的位。

    为了获得真正的乐趣、请尝试在 CDP1802上执行除法。 我尝试过一次。 非常乏味。 但并不像为 PIC 编写一个卡尔曼滤波器那样糟糕、因为它缺少带载的加法器!

    哦、请注意工具。 我为 MSP430编写了一个 eForth、当我更新工具时该电子 Forth 损坏。 事实证明、他们已经取消了在每个汇编器中执行几十年来允许的简单操作的能力。 还有另一种方法可以实现它、但这可能会改变。

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

    David、我同意、如果我不知道我正在做什么、那就会倒退。 但我花了整整一年时间研究 TSB 系统的源代码的每一行。 我不知道。 这是我已经多次推动的一条赛道。 我心里知道骨骼。 现在、我处于实现模式。 I 拖转启动。 生成代码并将内容刷出。 但我已经知道了前进的道路。 所以这只是一个细节工艺问题。 我对使其正常工作没有任何疑问。 这是"小心地布置每个砖头一次。"

    (数十年来、我一直在开发科学和商业仪器。 我之所以知道、是因为我的第一个版本是我的最后一个版本。 几天前、我刚刚与一位客户交谈、他们提到、在将近15年的运营之后、他们的产品的软件从未成功报告过错误。 他们仍在使用我的第一次交货。)

    很棒的关于 Kalman for PIC 的听声 我还没有尝试在汇编语言中实现一个。 但我熟悉卡尔曼-布西和卡尔曼。 给我留下了深刻的印象!! 嗯。 我可能希望通过实施卡尔曼的协方差矩阵运算来测试我的 TSB 矩阵运算。 我可以将其添加为一项任务。

    如果有人在我或链接器上破坏了此汇编器、那么我也将被迫控制它、只需编写我自己的代码。 如果我把它剥离到我需要的必需品上,可能需要一个星期的工作----假设我可以得到足够详细的文件。 上次我做了一个象征性的汇编器和链接器时、我从周五下午开始、到周日下午结束。 我并不是说尽量减少事情。 在这种情况下、我已经编写了加载程序。 在这里、我是依赖的。 因此、我确信它不会像我建议的那样快。 但是、在编写新的数据对时、问题将是尽量减少对源的更改。 但是、只有当我不得不这样做时、我才会面临这种情况。 不过、感谢您提供警告。

    我已经想到、我可能只想先完成汇编器/链接器、实现完全控制、然后继续。 但这实际上是我唯一的未知因素(以及我在这里撰写的原因)。 我需要充分了解 MSP430FR5994以及 TSB 系统如何配合以及需要哪些链接器功能。 就我所见、这个链接器非常棒。 但是、如果他们在我身上破坏了它、我必须自己编写一些内容、那么我将(希望如此)从项目中了解我需要了解的有关所需链接器功能的信息、以便我能够更充分地理解我需要编写的内容、 执行此操作。

    但我不认为我可能会面临这个问题。 当然、我也没有一个正常工作的晶振球。 )

    编辑:顺便说一句,我无法想象(我的想象力有限) 1802年的分部可能比8080A (我非常熟悉其中)的分部要糟糕得多。 1802年您是否认为会比8080A 或我在该日期之前使用的任何机器更难实现?