问题标签 [nand2tetris]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
438 浏览

bit-manipulation - Nand2tetris 中的减法实现

我目前正在通过 Nand2tetris 为一门大学课程工作,这很简单。但是 alu 可以一步做减法,我完全不明白这是如何工作的。

我在网上找不到任何解释。即使 quickcheck 说它是正确的,我自己尝试推导它的最后一步看起来也是无稽之谈:

最后一步感觉就像它依赖于类似的东西

但我不知道为什么会这样,因此非常感谢您的解释。谢谢阅读!

0 投票
1 回答
2011 浏览

cpu - 第 1 行出现“预期表达式”错误。如何解决?

我收到“在第 1 行,预期表达式”错误,我不知道为什么。

我正在使用 nand2tetris 的 CPU 模拟器。我尝试将第 1 行更改为 5 行,但并没有解决问题。我只是不明白首先是什么问题。

我要重新创建的是这个循环: J=5 for(i=1; i<5; i++) { j-- }

0 投票
1 回答
1825 浏览

architecture - 如果指令是 c 指令,在这个(nand2tetris)CPU 实现中应该发生什么?

看到这个 CPU 实现,我完全糊涂了(这不仅仅是因为控制位没有与任何东西连接;连接这些是我的任务)。

首先让我感到困惑的是,如果即将到来的指令是一个 c 指令,那么会发生什么?假设 Mux16 将让 c 指令通过……然后指令通过 A 寄存器……你为什么要这样?!

如果我的理解是正确的,那取决于控制位,要么什么都不做(控制位(加载)为假),要么无论指令指定什么,A寄存器现在都将存储指令......

我在这里错过了什么吗?!到底是怎么回事?为什么需要该功能?

在此处输入图像描述

(CPU实现的来源是:link go to time 3:30)

0 投票
2 回答
936 浏览

architecture - (Nand2tetris CPU)(什么/多少)在每个时钟周期发生?

Nand2tetris CPU的基础上,如下图,想知道以下几点:

  1. (什么/多少)在每个时钟周期内发生? (见 IMG_1 和 IMG_2)

  2. 作为问题 1 的后续问题,程序计数器应该何时更改?


请注意,我知道时钟是什么以及何时

IMG_1

在此处输入图像描述


IMG_2

在此处输入图像描述

0 投票
1 回答
52 浏览

cpu - D寄存器没有更新,这是为什么呢?

要复制cpu.out下面显示的文件(尽管没有我的评论), 请使用 thiscpu.hdl,它通过了所有测试。

现在,我的问题是,在时钟周期 3+、4 和 4+。请注意,DRegise(D 寄存器)没有更新,尽管命令是“D=AD”,这是为什么呢?

0 投票
1 回答
81 浏览

jvm - 将“让静态 2 = 参数 1”翻译为 VM 代码

将“让静态 2 = 参数 1”翻译为 VM 代码。

虚拟机代码(答案):

推论 1

流行静态2

我的问题

我们不是忘记了吗let。我们不应该将另一个参数 1 推入堆栈,然后也将其弹出到本地 2 吗?为了保留“本地类型”。

https://www.coursera.org/learn/nand2tetris2/lecture/z1wbL/unit-1-3-vm-abstraction-memory-segments 在此处输入图像描述

0 投票
1 回答
79 浏览

assembly - '@R0',...,'@R15',而不是'@0',...,'@15'有什么意义?

这种记忆法的意义何在?'@R0',...,'@R15',而不是'@0',...,'@15'?

他们可能在课程中提到过,但我忘记了,而且如果不阅读几页文字就很难得到答案。

0 投票
2 回答
675 浏览

nand2tetris - 在第 0 行,表达式预期错误(Nand2tetris CPU-emulator)

这不是这个的重复因为我没有任何语法错误——我只有两行代码,所以我确定!

在此处输入图像描述

笔记:

  • 我确实记得BasicLoop.asm在尝试加载它之前先保存。

  • 我可以将 .asm 代码更改为我喜欢的任何代码,错误仍然存​​在。

0 投票
1 回答
221 浏览

nand2tetris - nand2tetris CPU.cmp 第 17 行问题;outM/(RAM[A]) 使用 MD=D-1 指令递减两次;

我正在尝试处理 CPU.cmp 文件,写出指令,看看 CPU.cmp 中写的内容是否有意义。

在第 17 行(时间 8)

如您所见,D 寄存器的值从(十进制)11111 减 1 到 11110,而 outM 的值反映了这一点。但是,然后 outM 再次递减到 11109。为什么要这样做?指令为 MD = D-1,因此它应该将 D reg 递减一次,并将值存储在两个位置。RAM[A] 和 D 以不同的值结束是如何发生的?

我希望他们是一样的...

0 投票
1 回答
120 浏览

python - 从具有特定符号和其他字符的字符串中拆分符号

我已经编写了将特定符号从符号列​​表中拆分出来的代码,但是它有问题并且无法正常工作。我希望有人能澄清和帮助我。

我想做的是将这个字符串(例如)拆分到这个字符串'game.run();'列表中——['game','.','run','(', ')',';']其中符号列表——

我的初始代码:

注意 - 这是 Nand2Tetris 编译器任务的一部分。