{"id":21493591,"url":"https://github.com/alienkevin/hack-assembler-web","last_synced_at":"2025-03-17T11:41:55.442Z","repository":{"id":39186021,"uuid":"249224397","full_name":"AlienKevin/hack-assembler-web","owner":"AlienKevin","description":"Web version of the Hack Assembler","archived":false,"fork":false,"pushed_at":"2023-01-07T16:14:04.000Z","size":3157,"stargazers_count":7,"open_issues_count":24,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-23T21:24:59.678Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://alienkevin.github.io/hack-assembler-web/","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlienKevin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-22T16:27:54.000Z","updated_at":"2024-10-20T15:29:05.000Z","dependencies_parsed_at":"2023-02-07T15:01:10.587Z","dependency_job_id":null,"html_url":"https://github.com/AlienKevin/hack-assembler-web","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlienKevin%2Fhack-assembler-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlienKevin%2Fhack-assembler-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlienKevin%2Fhack-assembler-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlienKevin%2Fhack-assembler-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlienKevin","download_url":"https://codeload.github.com/AlienKevin/hack-assembler-web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244029513,"owners_count":20386423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T15:43:34.392Z","updated_at":"2025-03-17T11:41:55.421Z","avatar_url":"https://github.com/AlienKevin.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hack-assembler\nAssembler for the Hack computer written in Rust.\n\n# What is Hack?\nHack is an assembly language included in the online course [\"Build a Modern Computer from First Principles: From Nand to Tetris\"](https://www.coursera.org/learn/build-a-computer/home/welcome) and the book \"The Elements of Computing Systems\" by Noam Nisan and Shimon Schocken (MIT Press). Hack is also the name of the computer Noam and Shimon designed as the project for the course \"From Nand to Tetris\".\n\n# Hack Specification\nThe Hack assembly language has two types of instructions:\n\n## A Instructions\n\n![A instructions spec](media/A-instruction-spec.PNG)\n\n## C Instructions\n\n![C instructions spec](media/C-instruction-spec.PNG)\n\n## Symbols\n\n![symbols](media/Symbols-spec.PNG)\n\n# Hack Assembler\nThe assembler compiles symbolic Hack code to binary code that the Hack machine understands.\nThis project is structured in four parts:\n1. [Parser](src/hack_parser.rs)\n2. [Emitter](src/hack_emitter.rs)\n3. [Assembler](src/hack_assembler.rs)\n4. [Browser interface written in Elm](www/index.html)\n\nIf you prefer a command line interface, try the original project [hack-assembler](https://github.com/AlienKevin/hack-assembler).\n\n# Want to learn more about Hack?\n\nCheck out the [course video on Hack assembly](https://www.coursera.org/learn/build-a-computer/lecture/AYPo6/unit-6-2-the-hack-assembly-language) and the whole [From Nand to Tetris course](https://www.coursera.org/learn/build-a-computer/home/welcome).\n\n# Credits\nThanks to Noam Nisan and Shimon Schocken for developing the amazing From Nand to Tetris course and Bodil Stokke for her [excellent tutorial](https://bodil.lol/parser-combinators/) on parser combinators in Rust\n\n# License\n[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falienkevin%2Fhack-assembler-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falienkevin%2Fhack-assembler-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falienkevin%2Fhack-assembler-web/lists"}