diff --git a/17-Chernobyl/Code/crappy_python/caller_id.py b/17-Chernobyl/Code/crappy_python/caller_id.py new file mode 100644 index 0000000..a7dad25 --- /dev/null +++ b/17-Chernobyl/Code/crappy_python/caller_id.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +""" +caller_id: Call a function with arbitrary parameters in microcorruption +""" + +import re + +preamble = "reset; break main; continue; unbreak main;" + +while 1: + address, *args = re.split(r"[(,) ]",input("> ")) + if address == "": break + print(f"{preamble} Let pc = {address}", end=";") + reg = 15 + for arg in args: + if arg: + print(f"Let r{reg} = {arg}", end=";") + reg -= 1 + print("\b ")