nand2vm - pure python implement of nand2tetris Hack platform
BSD-3-CLAUSE License
The goal of this project is to create a Python version of nand2tetris, nand2vm include the full test suite of nand2tetris, and assembler with python version.
BitArray is used when manipulate bit data, using BitArray API, we can quickly create a small endian bit array:
>>> import nand2vm
# Init from list using big endian
>>> b = nand2vm.BitArray([True, True, False, True])
>>> b
1101
>>> b[0]
True
>>> b[1] # Internal using small endian
False
>>> b.data
[True, False, True, True]
# Init from integer, default using 16 bits
>>> b = nand2vm.BitArray(-1)
>>> b # 16 bits 2's complement
1111111111111111
# Init from string
>>> b = nand2vm.BitArray('1101')
>>> b
1101
The only gate using python operator to construct
>>> def Nand(a: bool, b: bool) -> bool:
... return not (a and b)
>>> nand2vm.Nand(True, True)
False
>>> nand2vm.Nand(True, False)
True
>>>
Project 1 implement:
Project 2 implement:
Project 3 implement:
Project 6 implement: