问题标签 [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 投票
1 回答
677 浏览

hdl - 有符号二进制数乘法-芯片HDL代码

作为 Nand2Tetris 课程的一部分,我正在学习这个学期,我必须构建一个二进制数乘法芯片。

我已经构建了一些芯片,它可能可以很好地处理大多数情况。

但是当我将数字相乘 -5 和 -2 时,它会出现一些错误。

它给了我-32758。

这是HDL代码:

有人知道是什么问题吗?

谢谢!

0 投票
1 回答
429 浏览

hdl - HDL 中的多路复用器(8 位输入和 4 位输出)

如果 sel = false,则 out 应包含 in 的低 4 位(即 in[0]、in[1]、in[2]、in[3])
如果 sel = true,则 out 应包含高 4 -in 的位(即 in[4]、in[5]、in[6]、in[7])

这是我的代码以及如何修改它....?

0 投票
2 回答
487 浏览

hdl - 如何在HDL中制作位选择芯片?

BitSelect芯片具有:3 位输入和 8 位输出。

如何实现下面真值表描述的行为?

0 投票
1 回答
834 浏览

hdl - 在 nand2tetris 中实现 MUX 门时的比较错误

我正在尝试在 nand2tetris 课程中实现 MUX(多路复用器)门。我第一次尝试自己,我得到了一个错误。但无论我改变什么,我总是得到错误。所以我尝试在线检查一些代码,这是大多数人使用的:

但即使我尝试这段代码,我仍然会收到以下错误: 错误信息

我得到的真值表:

我应该得到什么:

我拥有每 2020-01-13 最新的软件套件

0 投票
1 回答
116 浏览

regex - 有没有办法正则表达式匹配`|`运算符中的所有标记组合

我正在为nand2tetris项目做一个解析器。我想检查目标字段是否是,M|D|MD|A|AM|AD|AMD以及它们的不同组合方式,例如MAnot only AM

此正则表达式正确匹配AM=,但不匹配MA=

我不想列出这些标记的所有可能组合,有没有办法简单地做到这一点?

0 投票
1 回答
84 浏览

c# - C# 打开作为参数传递的文件流 (Nand2Tetris Project 7)

关于 Nand2Tetris 课程,我已经完成了书中的项目 7,作为一个巨大的 C# 菜鸟,我想我会尝试用这种语言来实现它作为练习。具体来说,我正在尝试遵循 Parser 模块的规范,但我已经在第一步中遇到了困难,这表明 Parser 的构造函数具有:

  • 参数:输入文件/流
  • 功能:打开输入文件/流并准备解析它

到目前为止,我的主程序(Program.cs)是:

而解析器模块(Parser.cs)是:

我不知道这是否是构建 C# 程序的正确方法,但我的谷歌搜索已将我引向它,并且 Program.cs 和 Parser.cs 似乎可以毫无问题地集成。

问题是在 Parser 模块中,我试图将文件流作为参数,以便我可以在其构造函数中打开它。因此,我在 Program.cs 中使用File.Create(),尝试File.Open()为 Parser 模块保留。这是因为,正如书中所述,在 Parser 的构造函数中,我必须实际打开文件流,也就是说,我不应该在 Program.cs 中打开它。但是每个打开文件的 C# 示例都需要一个字符串路径作为它的第一个参数,我已经在 Program.cs 中提供了它。所以我不确定如何在项目中实施这第一步。任何帮助表示赞赏。

谢谢

0 投票
1 回答
534 浏览

virtual-machine - 由 Jack 中的 getter mwthod 导致 VMEmulator 中的“段空间不足”错误

我正在为 nand2tetris 做一个项目。我们在 Jack 中编写一个程序并在 VMEmulator 上对其进行测试。该类如下所示:

它有一个私有变量data和一个指针next。所以我写了 getter 和 setter 方法来返回这些值。其他方法都很好,只是getdata()方法不正确。当它通过 VMEmulator 运行时,它会显示错误Out of segment space in List.getdata.3。这显示在 VMEmulator 中。

错误在第 4 行return。当我更改 Jack 代码时,同样的错误仍然出现在第 4 行。

我的getter方法到底有什么问题?

0 投票
2 回答
190 浏览

cpu-architecture - 实现逻辑门的直觉

我被要求用半 HDL 语言实现逻辑门以进行练习。问题是我对实现缺乏直觉,并且看不到将真值表“转换”为逻辑门的方法或算法,即使是更简单的逻辑门(如 XOR);如何将一个运算符“转换”为多个逻辑门的形式?到现在为止,这个练习感觉就像“尝试所有可能的逻辑门组合”,我想它不会是这样的。

0 投票
1 回答
142 浏览

assembly - 我想知道如何计算计算机系统中给定虚拟机命令的跳转指令

我正在学习 Hack 汇编语言和跳转指令。谁能给我详细的解释,说明如何计算给定虚拟机代码的跳转指令。如果我有虚拟机命令,例如 push constant 0,我想了解如何找到跳转指令。

请给我详细的解释,以便我学习!

示例:虚拟机命令为“ push constant 0”。

如何从 THAT COMMAND 到以下书面 JUMP INSTRUCTIONS:

上面的跳转指令只是一个例子,不是答案。

0 投票
1 回答
710 浏览

assembly - Nand2tetris Project4- 测试失败 - Fill.asm:第 3 行比较失败

没有过多提及Nand2tetris课程和上传与键盘交互的程序集文件。

基本上这个程序的作用是当在键盘上按下一个键时屏幕变黑,即屏幕的每个像素都应该变黑,当键盘空闲时屏幕保持白色。

这是我的代码,它在我的计算机硬件模拟器上运行良好,但是当我将其上传到 coursera 上提交时失败。

我哪里错了?比较失败的原因是什么,我该如何解决?提前致谢