In this project you write an assembler for the Hack machine language.
The assembler must take a command line argument for the name of the input file (for instance Test.asm), and write the generated machine instructions to a file with the same name but extension .hack (so Test.asm is translated to Test.hack).
More detailed instructions and tips for testing are on the Nand2Tetris page.
You can use any of the following programming languages: Python, Java, Kotlin, Scala, C, C++. If you want to use a language not in this list, you need to get permission from me on Piazza first.
You can either submit a single source file or a zip file with all sources to our submission server.
Do not submit any executable files (no JVM .class files!). If compilation is nontrivial, you must include a Makefile.