0

我想在 HACK 程序集(nand2tetris)中进行位旋转。例如:

11110000 变为:11100001

我将如何做到这一点?我看到普通程序集具有执行此操作的 rol 语法,但我找不到用于 HACK 程序集的语法

4

1 回答 1

4

这个答案在本质上会有点苏格拉底,因为 Nand2Tetris 的重点是学习东西,如果你自己弄清楚这一点,你会学到更多。

HACK 中没有 ROL 指令,因此您必须根据可用的内容构建它。这里有一些问题要问自己:

  • 如何在 HACK 中进行正常的左移操作?
  • 何时左移与左旋转相同,何时不同?
  • 我如何测试以查看是否仅左移可以解决问题?
  • 如果仅靠左移还不够,我该怎么办?

如果您需要对小于全字(16 位)的值执行 ROL,我建议您解决全字的问题,然后对其进行调整以处理您需要的位长度。

  • 额外的功劳:如果位长度相对较小(例如 8 位或更少)并且您将经常执行此操作,有没有办法以您可用的其他资源为代价使操作更快给你?
于 2021-05-20T11:01:07.923 回答