ARMv6M ADD(寄存器)T2编码规范中"DN"什么?



我正在研究ARMV6M的规范,指令的T2编码如下。

01 0 0 0 1 | 0 0 |DN |马币 |目录

DN 始终用作 Rdn 寄存器文件位置的前缀,我不明白为什么它不只是放在 Rdn 中。

许多拇指指令,尤其是ALU操作的指令,具有以较低的6位编码的三位寄存器规格,每个位表示r0-r7。 此特定的 ADD 指令允许对低寄存器和高寄存器 R0-R15 进行操作,因此其他两个位需要一个家,他们碰巧将一个放在 5:3 的位 6 中,因此另一个高于该位。

因此,也许他们正在考虑保存一些门或可读性或其他一些在SO无法回答的原因。 因此,他们没有像在全尺寸手臂指令中使用 7:4 和 3:0 来执行这个特殊的一次性指令,而是将上部部分放在 7:6 中,一个更好的问题是为什么他们不把左右放在与其他两个相同为什么不是 [7,5,4,3] [6,2,1,0] 而不是 [6,5,4,3] 和 [7,2,1,0]? IMO 这将有助于可读性,尤其是如果您从最初 H1/H2 似乎交换的印刷(纸张(的手臂拇指文档开始。

在伪代码中,他们显示(DN:Rdn(并谈论一个四位数字,然后Rm是一个4位数字,因此这表明旧文档以不同的方式做了什么。

我怀疑他们使用末尾的 n 作为较低的位,将大写的 N 用作较大的位,是的,它读作 RdN 而不是 DN 会更好。 否则 Rd3 会比这更好。

指令集在某种程度上可以做任何他们想做的事情,ARM在这里没有什么不同,当拇指开始选择他们选择的东西时,设计师们就已经知道了。 武断的决定,你会很幸运地在这里找到当时在房间里的人,我也见过这些事情是错误的,在会议上决定一件事,某人的实现是落后的,但是当到达房间时,已经在测试方面进行了大量投资, 等等,就这样离开了。 可能/那些工程师已经退休了,或者不久前得到了金色降落伞,也许你会很幸运。

还要明白,文档人员通常是一个独立的部门的情况并不少见,所以这可能是个别技术作家的游戏时间决定(或错别字(,后来决定不更改文档。

不要在这个或一些行业术语中读出任何神奇的东西,无论如何,这是一个坏习惯,重要的是你了解这些位是什么,而不是它们是如何被标记的。

最新更新