algorithm - Donald Knuth 的 MIX 计算机

标签 algorithm knuth

在 MIX 计算机中,一个单词由五个字节和一个符号组成。符号在内存中是如何表示的?是另一个字节,所以每个字真的是六个字节吗?

谢谢。

最佳答案

你的问题不是很清楚。体系结构规范未指定实际实现。它仅指定可观察的行为。

重要的是,在 MIX 中,对内存的访问与单词对齐。在 x86 等其他一些体系结构中,您可以从任意地址开始读取一个字,即使是非字对齐的,但在 MIX 中则不行。这意味着除了作为相应单词的符号之外,您不能以任何其他方式访问“符号”。这反过来意味着,如果有人想在硬件中实现 MIX,每个字仅使用 31 位就足够了,即 1 位用于符号 + 5 个“字节”(6 位)。

如果您想在使用 8 位乘积的“字节”的标准现代硬件上模拟 MIX,您有几个选择:

  • 对整个字使用 32 位值,并通过一些位掩码操作模拟其内部结构
  • 使用 6 个 8 位字节:每个 MIX 6 位字节一个 8 位字节,另外一个用于符号。

显然,还有更多人为设计的选项。

关于algorithm - Donald Knuth 的 MIX 计算机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184280/

相关文章:

c - 为什么在计算数组的中间时更喜欢 start + (end - start)/2 而不是 (start + end)/2?

python - 从带有限制的列表中选择加权项目

c - C中的Knuth列表插入方法

assembly - MIX DIV 运算符,以及打包字节数的转换

具有最少随机数的 Java 排列

python - 如何快速创建不替换总体的随机样本?

java - 找到表达式 (2^x)*(3^y)*(5^z) 的第 K 个最小数

algorithm - Knuth 的 Dancing Links 算法的数据结构

确定两个给定数字在整数序列中是否相邻的 Pythonic 方法

c - 为什么 Knuth 使用这种笨拙的减量?