Skip to content

An assembler for 16-bit Hack machine language written in Rust

License

Notifications You must be signed in to change notification settings

onatm/hackerman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hackerman

An assembler for 16-bit Hack machine language written in Rust.

hackerman logo

Instructions

Build and test

$ cargo build
$ cargo test

Run

$ cargo run --release /path/to/input.asm /path/to/output.hack

Example Hack Assembly Program

Note: You can learn about Hack machine language specification from here.

Rect.asm

// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/06/rect/Rect.asm

// Draws a rectangle at the top-left corner of the screen.
   @0
   D=M
   @INFINITE_LOOP
   D;JLE
   @counter
   M=D
   @SCREEN
   D=A
   @address
   M=D
(LOOP)
   @address
   A=M
   M=-1
   @address
   D=M
   @32
   D=D+A
   @address
   M=D
   @counter
   MD=M-1
   @LOOP
   D;JGT
(INFINITE_LOOP)
   @INFINITE_LOOP
   0;JMP

Rect.hack

0000000000000000
1111110000010000
0000000000010111
1110001100000110
0000000000010000
1110001100001000
0100000000000000
1110110000010000
0000000000010001
1110001100001000
0000000000010001
1111110000100000
1110111010001000
0000000000010001
1111110000010000
0000000000100000
1110000010010000
0000000000010001
1110001100001000
0000000000010000
1111110010011000
0000000000001010
1110001100000001
0000000000010111
1110101010000111

License

MIT

About

An assembler for 16-bit Hack machine language written in Rust

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages