主题中讨论的其他器件:C2000WARE
您好!
我想在 C 项目中管理一个汇编网关来计算一个微分方程。 但我有很多问题(我的问题是错的)。 我希望有人能帮助我。
让我们考虑这个示例:我想把这两个向量 X'相乘。 y
所以,我创建了一个应该这样做的函数,使用了执行 MACF32 R7H、R3H、*XAR4++、*XAR7++
输入值分别为2个指针和一个整数、因此可转换到 XAR4、XAR5和 ACC 中。
由于输出值为浮点值、因此它将存储到 R0H 中。
在此函数中、我首先要做的是将 XAR5内容传输到 XAR7中。 我在寻找这样的函数 MOV32 XARn,XARm ,但它似乎不存在。
所以我写道:
它不优雅,有一个警告:
做这个转移的最佳方式是什么?
其余的代码是:
结果正确、但是:
-我预计重复的次数将是5次,而不是7次。 我的错在哪里?
-重复的次数不应该是一个常数,但最后的输入值,即 uint16_myDim,存储在 ACC 中。 如何将此值转换为重复次数? 我想 RPT @ACC 可以起作用、但不能。
最后、我还有一个最后的问题、一般性问题:
我尝试在 asm 函数中声明一个变量:
但是、当使用断点停止程序时、表达式窗口中不会出现这种情况。
在程序集网关中声明变量的方式是什么?
感谢你的帮助。
下面是我的汇编函数的代码:
;/!\格式 EABI /!\
; fonment pouvant être appel é e directement par asmfunc() dans un fickier C
.global asmfuncEQDIM
.数据
VAR .int 8
.text
asmfunCEQDIM:
NOP
NOP
MOV32 R1H、XAR5
NOP
MOV32 XAR7、R1H
ZERO R2H ; effacement du regime tampon pour le r é sultat de l'accumulation impaire
ZERO R6H ; effacement du registre tampon pour le r é sultat de l'accumulation paire
ZERO R3H;effacement du registre d'accumulation impaire
ZERO R6H;effacement du registre d'accumulation paire
; XAR7 doit contenir l'adresse du tableau Y (en XAR5)
7号 RPT
|| MACF32 R7H、R3H、*XAR4++、*XAR7++
ADDF32 R0H、R7H、R3H;
LRETR