Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1106 (jez) 0 [intcode program start index] [data pointer] [instruction pointer] [brainfuck code start index] [data tape start index] [bracket count = 0] [temp]
- begin:
- initialize code_start_index = data_tape_start_index = data_pointer = instruction_pointer = offset = a safe value (after end of intcode code)
- load brainfuck program into memory:
- load_loop:
- input character to offset location
- increment data_tape_start_index, data_pointer, offset
- jez offset-1 end_load
- end_load:
- increment data_tape_start_index, data_pointer, offset (to keep the NUL character)
- loop:
- exit program if reached end
- switch (brainfuck instruction):
- >: 109 (offset mode 2 ptr) 1; 101 1 3 3
- <: 109 -1; 101 -1 3 3
- +: 22101 1 0 0
- -: 22101 -1 0 0
- .: 204 0
- ,: 203 0
- [: jnz end; reset offset; set offset to instruction pointer; goto loop_exit
- ]: jnz end; reset offset; set offset to instruction pointer; goto loop_enter
- end:
- increment instruction pointer
- goto loop
- loop_exit:
- switch (brainfuck instruction):
- [: increment bracket count
- ]: decrement bracket count; jez loop_end
- increment instruction pointer and offset
- goto loop_exit
- loop_enter:
- switch (brainfuck instruction):
- ]: increment bracket count
- [: decrement bracket count; jez loop_end
- decrement instruction pointer and offset
- goto loop_enter
- loop_end:
- reset offset; set offset to data pointer; goto loop
Add Comment
Please, Sign In to add comment