这取决于您使用的字节大小。Knuth 故意不定义字节的底层实现——每个字节可以支持 64 到 100 个底层值,但最小值是 64,这似乎是大多数实现所使用的。
假设每个字节包含 64 个值,并假设您在 rA 中有以下寄存器内容:
+ 01 02 03 04 05
最低有效字节在右侧。因此,整个 rA 寄存器的“整体”值将是:
= (1 * 64^4) + (2 * 64^3) + (3 * 64^2) + (4 * 64^1) + (5 * 64^0)
= (1 * 16777216) + (2 * 262144) + (3 * 4096) + (4 * 64) + (5 * 1)
= 17314053
这正是 GNU MDK 将为您提供的:
MIX> weval 1(1:1),2(2:2),3(3:3),4(4:4),5(5:5)
+ 01 02 03 04 05 (0017314053)
对于 rAX(rA 和 rX 被视为一个寄存器),这是相同的想法,除了将 rA 放在 rX 的左侧。因此,如果您有:
rA = + 01 02 03 04 05
rX = + 06 07 08 09 10
总价值为:
(1 * 64^9) + (2 * 64^8) + (3 * 64^7) + (4 * 64^6) + (5 * 64^5) +
(6 * 64^4) + (7 * 64^3) + (8 * 64^2) + (9 * 64^1) + (10 * 64^0)
对于十进制实现,您只需使用 100 而不是 64 作为基数。所以在最初的例子中,你最终会得到:
= (1 * 100^4) + (2 * 100^3) + (3 * 100^2) + (4 * 100^1) + (5 * 100^0)
= 102030405
希望有帮助。