From 1a8417bd577248f3d6fbbb1313afca2963eec396 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 13:52:09 +0100 Subject: [PATCH 1/9] as/as.c: only close if fd_out is not stdout --- as/as.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/as/as.c b/as/as.c index 5218307..36e8196 100644 --- a/as/as.c +++ b/as/as.c @@ -55,6 +55,7 @@ int main(int argc, char **argv) { parse(fd_in, fd_out); fclose(fd_in); - fclose(fd_out); + if (fd_out != stdout) + fclose(fd_out); return 0; } From 8c119a983d91ee6b488c999c5f7aae8d34ac7988 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 13:52:28 +0100 Subject: [PATCH 2/9] as/as.c: minor fixes --- as/as.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/as/as.c b/as/as.c index 36e8196..d1a63f9 100644 --- a/as/as.c +++ b/as/as.c @@ -1,6 +1,6 @@ /* as.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2018-2019 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,7 +23,7 @@ int usage(char *program) { - fprintf(stderr, "Usage: %s [ [ ]\n", program); return -1; } From 3f5bbdb6040a56a6a69c02b7a5d8c5c9a9c387b2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 13:58:21 +0100 Subject: [PATCH 3/9] vm/mm.c: reduce default memory size. --- vm/mm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vm/mm.c b/vm/mm.c index 66ab22e..14e68ac 100644 --- a/vm/mm.c +++ b/vm/mm.c @@ -22,8 +22,8 @@ #include "mm.h" #ifndef MEM_SIZE -/* Set a default memory size. (2^16) */ -#define MEM_SIZE 65536 +/* Set a default memory size. (2^8) */ +#define MEM_SIZE 256 #endif // Get a WORD aligned (16-bit) address. From a005c8672c769d9a4964e79134d66ce2e4076444 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 14:00:23 +0100 Subject: [PATCH 4/9] vm/mm: move MEM_SIZE to header file. --- vm/mm.c | 5 ----- vm/mm.h | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/vm/mm.c b/vm/mm.c index 14e68ac..dabf812 100644 --- a/vm/mm.c +++ b/vm/mm.c @@ -21,11 +21,6 @@ #include #include "mm.h" -#ifndef MEM_SIZE -/* Set a default memory size. (2^8) */ -#define MEM_SIZE 256 -#endif - // Get a WORD aligned (16-bit) address. // Casts the 8-bit pointer (mm_base_addr) to 16-bit (WORD) and add offset. #define addr_align_word(offset) \ diff --git a/vm/mm.h b/vm/mm.h index 772c7c3..f136bf9 100644 --- a/vm/mm.h +++ b/vm/mm.h @@ -22,6 +22,11 @@ #include +#ifndef MEM_SIZE +/* Set a default memory size. (2^8) */ +#define MEM_SIZE 256 +#endif + extern uint8_t *mm_base_addr; void mm_init(); From c941c2b6e71c4a81c67d1dbb9066d0009f01a17e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 14:03:05 +0100 Subject: [PATCH 5/9] vm/debug.c: make debug_print_memory() print a nice table. --- vm/debug.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vm/debug.c b/vm/debug.c index e548270..578a5a4 100644 --- a/vm/debug.c +++ b/vm/debug.c @@ -20,14 +20,20 @@ #include #include "cpu.h" #include "debug.h" +#include "mm.h" void debug_print_memory(uint8_t *mm) { int i = 0; - printf("\n"); + printf("\n" + " 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n" + " ------------------------------------------------"); + + for(i = 0; i < MEM_SIZE; i++) { + if ((i % 16) == 0) + printf("\n%.2X| ", i); - for(i = 0; i < 32; i++) { printf("%.2X ", mm[i]); } printf("\n"); From 02ec1e12151202a1e2aa7b244394dc9fd29477c0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 14:14:38 +0100 Subject: [PATCH 6/9] Update copyright year and email --- as/as.c | 2 +- as/asm_error.h | 2 +- as/ast.c | 2 +- as/ast.h | 2 +- as/codegen.c | 2 +- as/codegen.h | 2 +- as/lexer.c | 2 +- as/lexer.h | 2 +- as/lexer/grammar.h | 2 +- as/lexer/number.c | 2 +- as/lexer/number.h | 2 +- as/parser.c | 2 +- as/parser.h | 2 +- as/symtab.c | 2 +- as/symtab.h | 2 +- lib/error.c | 2 +- lib/include/error.h | 2 +- lib/include/instr.h | 2 +- lib/include/vector.h | 2 +- lib/vector.c | 2 +- vm/cpu.c | 2 +- vm/cpu.h | 2 +- vm/debug.c | 2 +- vm/debug.h | 2 +- vm/instr_decode.c | 2 +- vm/instr_decode.h | 2 +- vm/mm.c | 2 +- vm/mm.h | 2 +- vm/program.c | 2 +- vm/program.h | 2 +- vm/syscall.c | 2 +- vm/syscall.h | 2 +- vm/vm.c | 14 +++++++++++--- 33 files changed, 43 insertions(+), 35 deletions(-) diff --git a/as/as.c b/as/as.c index d1a63f9..0c703db 100644 --- a/as/as.c +++ b/as/as.c @@ -1,6 +1,6 @@ /* as.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/asm_error.h b/as/asm_error.h index 950687c..f6bfbb9 100644 --- a/as/asm_error.h +++ b/as/asm_error.h @@ -1,6 +1,6 @@ /* asm_error.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/ast.c b/as/ast.c index fa78e68..752c1ff 100644 --- a/as/ast.c +++ b/as/ast.c @@ -1,6 +1,6 @@ /* ast.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/ast.h b/as/ast.h index 74c62e0..931a162 100644 --- a/as/ast.h +++ b/as/ast.h @@ -1,6 +1,6 @@ /* ast.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/codegen.c b/as/codegen.c index 334350d..8c1232d 100644 --- a/as/codegen.c +++ b/as/codegen.c @@ -1,6 +1,6 @@ /* codegen.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/codegen.h b/as/codegen.h index ae08acf..1d3b1e2 100644 --- a/as/codegen.h +++ b/as/codegen.h @@ -1,6 +1,6 @@ /* codegen.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/lexer.c b/as/lexer.c index d8ada70..98c4c39 100644 --- a/as/lexer.c +++ b/as/lexer.c @@ -1,6 +1,6 @@ /* lexer.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/lexer.h b/as/lexer.h index f9594a7..3e2a419 100644 --- a/as/lexer.h +++ b/as/lexer.h @@ -1,6 +1,6 @@ /* lexer.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/lexer/grammar.h b/as/lexer/grammar.h index 68ef410..29b9d8d 100644 --- a/as/lexer/grammar.h +++ b/as/lexer/grammar.h @@ -2,7 +2,7 @@ * * Macros for the grammar. * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/lexer/number.c b/as/lexer/number.c index 231cd42..2af610d 100644 --- a/as/lexer/number.c +++ b/as/lexer/number.c @@ -1,6 +1,6 @@ /* lexer/number.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/lexer/number.h b/as/lexer/number.h index 77404d2..43b07a9 100644 --- a/as/lexer/number.h +++ b/as/lexer/number.h @@ -1,6 +1,6 @@ /* lexer/number.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/parser.c b/as/parser.c index a8a6b70..239dd34 100644 --- a/as/parser.c +++ b/as/parser.c @@ -1,6 +1,6 @@ /* parser.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/parser.h b/as/parser.h index 12c6417..3c1dce5 100644 --- a/as/parser.h +++ b/as/parser.h @@ -1,6 +1,6 @@ /* parser.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/symtab.c b/as/symtab.c index 0aa3ab4..98a0260 100644 --- a/as/symtab.c +++ b/as/symtab.c @@ -1,6 +1,6 @@ /* symtab.c * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/as/symtab.h b/as/symtab.h index ac3c6f5..810ed7e 100644 --- a/as/symtab.h +++ b/as/symtab.h @@ -1,6 +1,6 @@ /* symtab.h * - * Copyright (C) 2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lib/error.c b/lib/error.c index e04616f..6bd365f 100644 --- a/lib/error.c +++ b/lib/error.c @@ -1,6 +1,6 @@ /* error.c * - * Copyright (C) 2018 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lib/include/error.h b/lib/include/error.h index 1f8754d..e24b44d 100644 --- a/lib/include/error.h +++ b/lib/include/error.h @@ -1,6 +1,6 @@ /* error.h * - * Copyright (C) 2018 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lib/include/instr.h b/lib/include/instr.h index 4dfe36c..064589e 100644 --- a/lib/include/instr.h +++ b/lib/include/instr.h @@ -1,6 +1,6 @@ /* instr.h * - * Copyright (C) 2012,2014 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lib/include/vector.h b/lib/include/vector.h index cf2d2b9..8365faf 100644 --- a/lib/include/vector.h +++ b/lib/include/vector.h @@ -1,6 +1,6 @@ /* vector.h * - * Copyright (C) 2018 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lib/vector.c b/lib/vector.c index 15c7f9f..41df56a 100644 --- a/lib/vector.c +++ b/lib/vector.c @@ -1,6 +1,6 @@ /* vector.c * - * Copyright (C) 2018 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/cpu.c b/vm/cpu.c index f8f6669..80674b1 100644 --- a/vm/cpu.c +++ b/vm/cpu.c @@ -1,6 +1,6 @@ /* cpu.c * - * Copyright (C) 2012,2014-2015,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/cpu.h b/vm/cpu.h index f4d4912..98817bb 100644 --- a/vm/cpu.h +++ b/vm/cpu.h @@ -1,6 +1,6 @@ /* cpu.h * - * Copyright (C) 2012,2014-2015,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/debug.c b/vm/debug.c index 578a5a4..42f2331 100644 --- a/vm/debug.c +++ b/vm/debug.c @@ -1,6 +1,6 @@ /* debug.c * - * Copyright (C) 2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/debug.h b/vm/debug.h index 731017f..1ebb0e6 100644 --- a/vm/debug.h +++ b/vm/debug.h @@ -1,6 +1,6 @@ /* debug.h * - * Copyright (C) 2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/instr_decode.c b/vm/instr_decode.c index 532d04e..0170aac 100644 --- a/vm/instr_decode.c +++ b/vm/instr_decode.c @@ -1,6 +1,6 @@ /* instr_decode.c * - * Copyright (C) 2012,2014,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/instr_decode.h b/vm/instr_decode.h index eff474b..cf09af1 100644 --- a/vm/instr_decode.h +++ b/vm/instr_decode.h @@ -1,6 +1,6 @@ /* instr_decode.h * - * Copyright (C) 2012,2014,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/mm.c b/vm/mm.c index dabf812..1dff772 100644 --- a/vm/mm.c +++ b/vm/mm.c @@ -1,6 +1,6 @@ /* mm.c * - * Copyright (C) 2012,2014,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/mm.h b/vm/mm.h index f136bf9..859ae1e 100644 --- a/vm/mm.h +++ b/vm/mm.h @@ -1,6 +1,6 @@ /* mm.h * - * Copyright (C) 2012,2014,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/program.c b/vm/program.c index 72e5e11..9e65738 100644 --- a/vm/program.c +++ b/vm/program.c @@ -1,6 +1,6 @@ /* program.c * - * Copyright (C) 2012,2014,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/program.h b/vm/program.h index f790102..3c8ce5c 100644 --- a/vm/program.h +++ b/vm/program.h @@ -1,6 +1,6 @@ /* program.h * - * Copyright (C) 2012,2014,2018-2019 Henrik Hautakoski + * Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/syscall.c b/vm/syscall.c index e5f3a00..5139055 100644 --- a/vm/syscall.c +++ b/vm/syscall.c @@ -1,6 +1,6 @@ /* syscall.c * -* Copyright (C) 2012,2014-2015,2018-2019 Henrik Hautakoski +* Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/syscall.h b/vm/syscall.h index 7c09994..cc272ba 100644 --- a/vm/syscall.h +++ b/vm/syscall.h @@ -1,6 +1,6 @@ /* syscall.h * -* Copyright (C) 2012,2014-2015,2018-2019 Henrik Hautakoski +* Copyright (C) 2012,2014-2015,2018-2019,2023 Henrik Hautakoski * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/vm/vm.c b/vm/vm.c index 6c65d7d..e424b61 100644 --- a/vm/vm.c +++ b/vm/vm.c @@ -50,15 +50,19 @@ void run(struct program *prog) { mm_exit(); } +int usage(const char* name) { + fprintf(stderr, "usage: %s [ --dmem | --dreg ] \n", name); + return 1; +} + int main(int argc, char **argv) { struct program prog = { 0 }; - const char *filename; + const char *filename = NULL; int i; if (argc < 2) { - fprintf(stderr, "usage: %s [ --dmem | --dreg ] \n", argv[0]); - return 1; + return usage(argv[0]); } // Parse options. @@ -78,6 +82,10 @@ int main(int argc, char **argv) { } } + if (filename == NULL) { + return usage(argv[0]); + } + if (program_loadfromfile(&prog, filename) < 0) return 1; From 7e027678cb81c962a4002e0c7fb803df4fdd3920 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 15:05:42 +0100 Subject: [PATCH 7/9] README.md: add compile instructions --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/README.md b/README.md index 0e22dda..0d90467 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,50 @@ The design is taken from the real world and tries to mimic existing RISC-archite The instruction set is by no means designed to be "fast" or "optimal" but focus more on being easy to understand and modify/play with. +Compile +------- + +The code is compiled via Makefile. + +```sh +$ make +``` + +The code is compiled into 2 programs: + +* `m16as` - Assembler - Compiles assembler code into binary form. +* `m16vm` - Virtual Machine, will run binary code from a file. + + +Example for first compile assembly code and then run it: + +```sh +$ ./m16as examples/asm/hello_world.as > prog.bin +$ ./m16vm ./prog.bin +HELLO WORLD +``` + +Usage +----- + +#### m16as + +``` +Usage: ./m16as [ ] +``` + +`m16as` is pretty streigth forward. if no `outputfile` is given, the output is written to `stdout` + +#### m16vm + +``` +usage: ./m16vm [ --dmem | --dreg ] +``` + +* `--dmem` - debug memory, after the program has executed the last instruction, the contents of the memory is printed to `stdout`. NOTE: only the first 32 bytes are printed to + +* `--dreg` - debug registers, after the program has executed the last instruction, the contents of the registers is printed to `stdout`. + Specification ------------- From 99c2f3dd05a7212fd00a488ed737b1210a633ccb Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 15:08:57 +0100 Subject: [PATCH 8/9] Adding examples/bin/invalid_inst.m16 --- examples/bin/invalid_inst.m16 | 1 + 1 file changed, 1 insertion(+) create mode 100644 examples/bin/invalid_inst.m16 diff --git a/examples/bin/invalid_inst.m16 b/examples/bin/invalid_inst.m16 new file mode 100644 index 0000000..3c9ffd5 --- /dev/null +++ b/examples/bin/invalid_inst.m16 @@ -0,0 +1 @@ +/Hú/Eú/Lúú/Oúï ú/Wú/Oú/Rú/Lú/Dú \ No newline at end of file From f33b84f25a631af3bc2a08ab0ca37826c91884e9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Nov 2023 15:10:29 +0100 Subject: [PATCH 9/9] gitignore: ignore .bin files. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 03fa769..814ac03 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.o *.a +*.bin m16vm m16as