问题标签 [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.
bit-manipulation - Nand2tetris 中的减法实现
我目前正在通过 Nand2tetris 为一门大学课程工作,这很简单。但是 alu 可以一步做减法,我完全不明白这是如何工作的。
我在网上找不到任何解释。即使 quickcheck 说它是正确的,我自己尝试推导它的最后一步看起来也是无稽之谈:
最后一步感觉就像它依赖于类似的东西
但我不知道为什么会这样,因此非常感谢您的解释。谢谢阅读!
cpu - 第 1 行出现“预期表达式”错误。如何解决?
我收到“在第 1 行,预期表达式”错误,我不知道为什么。
我正在使用 nand2tetris 的 CPU 模拟器。我尝试将第 1 行更改为 5 行,但并没有解决问题。我只是不明白首先是什么问题。
我要重新创建的是这个循环: J=5 for(i=1; i<5; i++) { j-- }
architecture - 如果指令是 c 指令,在这个(nand2tetris)CPU 实现中应该发生什么?
看到这个 CPU 实现,我完全糊涂了(这不仅仅是因为控制位没有与任何东西连接;连接这些是我的任务)。
首先让我感到困惑的是,如果即将到来的指令是一个 c 指令,那么会发生什么?假设 Mux16 将让 c 指令通过……然后指令通过 A 寄存器……你为什么要这样?!
如果我的理解是正确的,那取决于控制位,要么什么都不做(控制位(加载)为假),要么无论指令指定什么,A寄存器现在都将存储指令......
我在这里错过了什么吗?!到底是怎么回事?为什么需要该功能?
(CPU实现的来源是:link go to time 3:30)
architecture - (Nand2tetris CPU)(什么/多少)在每个时钟周期发生?
在Nand2tetris CPU的基础上,如下图,想知道以下几点:
(什么/多少)在每个时钟周期内发生? (见 IMG_1 和 IMG_2)
作为问题 1 的后续问题,程序计数器应该何时更改?
请注意,我知道时钟是什么以及何时
IMG_1
IMG_2
cpu - D寄存器没有更新,这是为什么呢?
要复制cpu.out
下面显示的文件(尽管没有我的评论),
请使用 thiscpu.hdl
,它通过了所有测试。
现在,我的问题是,在时钟周期 3+、4 和 4+。请注意,DRegise
(D 寄存器)没有更新,尽管命令是“D=AD”,这是为什么呢?
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
assembly - '@R0',...,'@R15',而不是'@0',...,'@15'有什么意义?
这种记忆法的意义何在?'@R0',...,'@R15',而不是'@0',...,'@15'?
他们可能在课程中提到过,但我忘记了,而且如果不阅读几页文字就很难得到答案。
nand2tetris - 在第 0 行,表达式预期错误(Nand2tetris CPU-emulator)
这不是这个的重复,因为我没有任何语法错误——我只有两行代码,所以我确定!
笔记:
我确实记得
BasicLoop.asm
在尝试加载它之前先保存。我可以将 .asm 代码更改为我喜欢的任何代码,错误仍然存在。
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 以不同的值结束是如何发生的?
我希望他们是一样的...
python - 从具有特定符号和其他字符的字符串中拆分符号
我已经编写了将特定符号从符号列表中拆分出来的代码,但是它有问题并且无法正常工作。我希望有人能澄清和帮助我。
我想做的是将这个字符串(例如)拆分到这个字符串'game.run();'
列表中——['game','.','run','(', ')',';']
其中符号列表——
我的初始代码:
注意 - 这是 Nand2Tetris 编译器任务的一部分。