CursedFlames

Intcode Brainf*ck interpreter pseudocode

Dec 9th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. 1106 (jez) 0 [intcode program start index] [data pointer] [instruction pointer] [brainfuck code start index] [data tape start index] [bracket count = 0] [temp]
  2. begin:
  3. initialize code_start_index = data_tape_start_index = data_pointer = instruction_pointer = offset = a safe value (after end of intcode code)
  4. load brainfuck program into memory:
  5. load_loop:
  6. input character to offset location
  7. increment data_tape_start_index, data_pointer, offset
  8. jez offset-1 end_load
  9. end_load:
  10. increment data_tape_start_index, data_pointer, offset (to keep the NUL character)
  11. loop:
  12. exit program if reached end
  13. switch (brainfuck instruction):
  14. >: 109 (offset mode 2 ptr) 1; 101 1 3 3
  15. <: 109 -1; 101 -1 3 3
  16. +: 22101 1 0 0
  17. -: 22101 -1 0 0
  18. .: 204 0
  19. ,: 203 0
  20. [: jnz end; reset offset; set offset to instruction pointer; goto loop_exit
  21. ]: jnz end; reset offset; set offset to instruction pointer; goto loop_enter
  22. end:
  23. increment instruction pointer
  24. goto loop
  25. loop_exit:
  26. switch (brainfuck instruction):
  27. [: increment bracket count
  28. ]: decrement bracket count; jez loop_end
  29.  
  30. increment instruction pointer and offset
  31. goto loop_exit
  32. loop_enter:
  33. switch (brainfuck instruction):
  34. ]: increment bracket count
  35. [: decrement bracket count; jez loop_end
  36.  
  37. decrement instruction pointer and offset
  38. goto loop_enter
  39.  
  40. loop_end:
  41. reset offset; set offset to data pointer; goto loop
Add Comment
Please, Sign In to add comment