我在 C28xx 的 CPU 和指令集参考指南中遇到了一些问题。
《TMS320C28xx CPU 和指令集参考指南》的第96页介绍了* br0--、ARPn 间接地址模式。 但下面的例子似乎有一些矛盾。 该示例指示注释中的后增量、但我假设它应该递减。 注释为"POST−Increment XAR3 with AR0 reverse borrow subaction"。 假设递减、这意味着 XAR3 在加载 ACC 后递减、然后执行减法。 还是减法执行减量? 页面顶部似乎表示后者、但示例中的注释表示前者。 由于存在错误和模棱两可的情况、这让我不太清楚。
我找到了多个引用,其中--在间接地址段中被称为增量。 我想知道是否有一些强调表明了递增。 这个公会还有几十个改变含义的印刷错误。 几个示例:
第78页:
示例1显示了在写受保护作为管道保护的内容之后读取的非保护内容(3)、而示例2显示了在写受保护的内容后读取的非保护内容与无保护内容相同。 我认为一定是错误的、但我不确定是什么。
第89页下面的示例:
MOVL XAR2、#Array1;使用 Array1的起始地址加载 XAR2
MOVL XAR2、#Array2;使用 Array2的起始地址加载 XAR3
实际代码用阵列2的地址覆盖 XAR2。
一般而言,我能够通过错误来解释意图,但是否有一个更好的已被校对的副本? 几天前、我从 TI 网站上提取了这一信息。 最后一次修订是在2015年5月进行的。 尝试学习具有适用于整个 C2000系列的成熟文档并具有这些类型错误的新处理器是令人沮丧的。 我希望我只是使用一个过时的。
示例:
;以位反向顺序将 Array1的内容传输到 Array2:
MOVL XAR2、#Array1+(N-1)*2;使用 Array1的起始地址加载 XAR2
MOVL XAR3、#Array2+(N-1)*2;使用 Array2的起始地址加载 XAR3
MOV @AR0 #N;加载 AR0、阵列大小、
;N 必须是2的倍数(2、4、8、16、...)
MOV @AR1、#N-1;使用环路计数 N 加载 AR1
NOP *、ARP2;将 ARP 指针设置为指向 XAR2
SETC AMODE;确保 AMODE = 1
lp_amode;告诉汇编器 AMODE = 1
循环:
MOVL ACC、*--、ARP3;加载 ACC、其位置由 XAR2指向、
;后增量 XAR2,将 ARP 指针设置为指向 XAR3
MOVL *++、ACC、ARP1;将 ACC 存储在 XAR3指向的位置、
; POST−使 XAR3递增,将 ARP 指针设置为指向 tp XAR1
MOVL *br0--,ACC,ARP1;存储 ACC,其位置由 XAR3指向,
; POST−使 XAR3递增,AR0反向借位减法,
;将 ARP 指针设置为指向 XAR1
XBANZ 循环、*-、ARP2;循环、直到 AR1 = 0、POST−递减 AR1、
;将 ARP 设置为指向 XAR2