diff --git a/docs/documentation.md b/docs/documentation.md index 29aa3a7..25584f6 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -88,6 +88,7 @@ The syntax is very close to x86 Intel Assembly. Here is a list of the operands a | **push** 69 | Pushes the value 69 to the top of the stack | no | | **call** put | Calls the `put` API | yes/no | +All the `jmp`-related operands (`je`, `jna`, ...) can have a number as argument, this way the program will jump to `x` lines (ex: `jmp 3` will jump 3 lines down).
All the operands are case-sensitive, meaning that `ADD` will be an invalid operand.
Please note that additional operands will be added in the future. diff --git a/src/instructions.c b/src/instructions.c index 6c9317d..00268b5 100644 --- a/src/instructions.c +++ b/src/instructions.c @@ -140,6 +140,11 @@ void jmp() { return; } } + int line_off = atoi(state->args->arg1); + if (line_off) { + state->curr_line += line_off; + return; + } state->last_jmp_code = 1; return;