Skip to content

Machine language assembler for the Hack assembly language, designed for the 16-bit Hack computer. Written in Python.

License

Notifications You must be signed in to change notification settings

jamespolley/Hack-Assembler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hack-Assembler

Hack-Assembler is a machine language assembler for the 16-bit Hack assembly language. This is the final project in part 1 of the course Build a Modern Computer from First Principles: From Nand to Tetris.

Description

Hack-Assembler accepts a program written in the Hack Assembly Language as a .asm file, converts it into Hack Machine Language (binary), and finally writes the assembled code to a .hack file of the same name (creates file if necessary).

The assembler is implemented in the following components:

  1. HackAssembler.py: Main class. Drives the assembly process. Handles reading of the assembly file (.asm) and writing the of hack file (.hack).
  2. SymbolTable.py: Class responsible for holding pre-defined symbols, and setting new symbols and variables.
  3. Parser.py: Class responsible for formatting, identifying symbol types, and handling conversion of instructions.
  4. Code.py: Class responsible for converting assembly instructions into binary code.

For more information about the Hack Assembly Language, the Hack Machine Language, and this project's specifications, see The Elements of Computer Systems: Chapter 6.

Example Usage

$ python HackAssembler.py assets\Add.asm

About

Machine language assembler for the Hack assembly language, designed for the 16-bit Hack computer. Written in Python.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published