From b350c06459dddafce2a360ace880d58a90be7e1e Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Mon, 9 Sep 2024 20:28:48 +0200 Subject: [PATCH] create README --- README.md | 23 +++++++++++++++++++++++ demo.png | Bin 0 -> 33454 bytes src/main.rs | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 README.md create mode 100644 demo.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..69d28c2 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# bf-debugger +An interactive brainfuck executor and debugger. It allows setting memory and code breakpoints, step a number of times, view the memory state and output. + +![screenshot](demo.png) + +## usage +Specify a source file and optionally an input file: +``` +brainfuck path/to/program.bf [path/to/input.txt] +``` +### Code breakpoints: +The `!` character will be treated as a breakpoint, stopping execution + +### Command list: +`[brackets]` are optional parameters. +- `step [n]` + - Step the progam n times (this is the default behavior when pressing enter with no command) +- `run` + - Run the program until the end +- `watch ` + - Create a breakpoint. Execution will stop when has +- `quit` | `q` | `exit` + - Exit the debugger diff --git a/demo.png b/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7933b3f290ff4be11e599cb4a49966e4cc008e GIT binary patch literal 33454 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�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 dhlKOX2dUh0-(bU