{"id":22178175,"url":"https://github.com/newcomb-luke/brisc-assembler","last_synced_at":"2025-09-05T10:38:07.819Z","repository":{"id":208478600,"uuid":"718292911","full_name":"newcomb-luke/brisc-assembler","owner":"newcomb-luke","description":"An assembler for the BRISC assembly language.","archived":false,"fork":false,"pushed_at":"2023-12-14T17:21:25.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-29T23:26:07.251Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/newcomb-luke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-13T19:34:41.000Z","updated_at":"2023-12-14T17:16:36.000Z","dependencies_parsed_at":"2023-11-21T18:27:29.968Z","dependency_job_id":"42b4d4ae-534a-4b64-9f1b-85273439d154","html_url":"https://github.com/newcomb-luke/brisc-assembler","commit_stats":null,"previous_names":["newcomb-luke/brisc-assembler"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newcomb-luke%2Fbrisc-assembler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newcomb-luke%2Fbrisc-assembler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newcomb-luke%2Fbrisc-assembler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/newcomb-luke%2Fbrisc-assembler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/newcomb-luke","download_url":"https://codeload.github.com/newcomb-luke/brisc-assembler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245330573,"owners_count":20597791,"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-12-02T08:45:44.418Z","updated_at":"2025-03-24T18:43:02.661Z","avatar_url":"https://github.com/newcomb-luke.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# brisc-assembler\n\nAn assembler for the BRISC assembly language.\n\n## Build Instructions\n\nWith Rust installed, simply use cargo to build the project:\n\n```bash\ncd brisc-assembler/\ncargo build --release\n```\n\n## Usage Instructions\n\nThis will assemble the file **prog.basm** into **prog.bin**:\n\n```bash\nbrisc-assembler prog.basm\n```\n\nThese will both assemble the file **prog.basm** into **output.bin**:\n\n```bash\nbrisc-assembler prog.basm -o output.bin\n\nbrisc-assembler prog.basm --output-path output.bin\n```\n\nDisplay help:\n\n```bash\nbrisc-assembler --help\n```\n\n## Language Reference\n\n### Notation\n\nAny Register - `rX`  \nLabel - `\u003clabel\u003e`  \nInteger - `\u003cinteger\u003e`  \n\n### Math Instructions\n\n#### Add\n```\nadd rX, rx\n```\n#### Subtract\n```\nsub rX, rX\n```\n#### Bitwise And\n```\nand rX, rX\n```\n#### Bitwise Or\n```\nor rX, rX\n```\n#### Bitwise Exclusive Or\n```\nxor rX, rX\n```\n#### Bitwise Invert\n```\ninv rX\n```\n#### Bitwise Shift Right\n```\nsr rX, rX\n```\n#### Bitwise Shift Left\n```\nsl rX, rX\n```\n\n### Memory Instructions\n\n#### Load Immediate Value\n```\nldi rX, \u003cinteger\u003e\n```\n\n### I/O Instructions\n\n#### Input from Source\n```\nin rX, \u003cinteger\u003e\n```\n\n#### Output to Sink\n```\nout rX, \u003cinteger\u003e\n```\n\n#### Sources (Input)\n\n| Name     | Value |\n|----------|-------|\n| Switches | 0     |\n| BTNC     | 1     |\n| BTNU     | 2     |\n| BTNL     | 3     |\n| BTNR     | 4     |\n| BTND     | 5     |\n| COUNTER  | 6     |\n\n#### Sinks (Output)\n\n| Name            | Value |\n|-----------------|-------|\n| 7 Segment Right | 0     |\n| 7 Segment Left  | 1     |\n\n### Jump Instructions\n\n#### Jump if Zero\n```\njz rX, \u003cinteger\u003e\njz rX, \u003clabel\u003e\n```\n\n#### Jump if Less Than\n```\njlt rX, \u003cinteger\u003e\njlt rX, \u003clabel\u003e\n```\n\n#### Jump Always\n```\nj \u003cinteger\u003e\nj \u003clabel\u003e\n```\n\n### Labels\n\nFor loop example:\n\n```\nldi r0, 0 ; Our counter 'i'\nldi r1, 1 ; A register just to hold our increment, 1\n\nfor_loop:\n    ldi r2, 5           ; Our maximum value, 5\n\n    ; Do something here you want to happen 5 times\n\n    sub r2, r0          ; r2 = r2 - r0\n    jz r2, for_loop_end ; If (5 - i) == 0, break the loop\n    add r0, r1          ; i++\n    j for_loop          ; Loop again\nfoor_loop_end:\n    nop                 ; Continue with the rest of the program\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewcomb-luke%2Fbrisc-assembler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewcomb-luke%2Fbrisc-assembler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewcomb-luke%2Fbrisc-assembler/lists"}