diff --git a/.gitignore b/.gitignore index 58fc25ff..390d5433 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +Data/ +_test/ + .DS_Store StatsConfig.cfg SymSettings.cfg diff --git a/Makefile b/Makefile index a655f0fe..821fd0bb 100644 --- a/Makefile +++ b/Makefile @@ -2,12 +2,13 @@ TEST_DIR := source/catch EMP_DIR := Empirical/include SGP_DIR := signalgp-lite/include +CEREAL_DIR := signalgp-lite/third-party/cereal/include TAG_NUM_BITS = 32 # Flags to use regardless of compiler VENDORIZE_EMP_FLAGS := -DUIT_VENDORIZE_EMP -DUIT_SUPPRESS_MACRO_INSEEP_WARNINGS COMPILE_TIME_ARGS := -DTAG_NUM_BITS=$(TAG_NUM_BITS) -CFLAGS_all := -Wall -Wno-unused-function -std=c++20 $(COMPILE_TIME_ARGS) -I$(EMP_DIR)/ -I$(SGP_DIR)/ ${VENDORIZE_EMP_FLAGS} +CFLAGS_all := -Wall -Wno-unused-function -std=c++20 $(COMPILE_TIME_ARGS) -I$(EMP_DIR)/ -I$(SGP_DIR)/ -I$(CEREAL_DIR)/ ${VENDORIZE_EMP_FLAGS} # Native compiler information CXX_nat := g++ diff --git a/example-settings-cfg/NandProgram100.json b/example-settings-cfg/NandProgram100.json new file mode 100644 index 00000000..5e227a9c --- /dev/null +++ b/example-settings-cfg/NandProgram100.json @@ -0,0 +1,1487 @@ +{ + "value0": [ + { + "operation": "Global Anchor", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "register a global jump-to destination, maybe terminate" + }, + { + "key": "tag bits", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "tag moniker", + "value": "sad ibex" + } + ] + }, + { + "operation": "IO", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "IO", + "args": { + "value0": 1, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "IO", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nand", + "args": { + "value0": 0, + "value1": 1, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Reproduce", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + } + ] +} \ No newline at end of file diff --git a/example-settings-cfg/NotNandProgram100.json b/example-settings-cfg/NotNandProgram100.json new file mode 100644 index 00000000..aaf90250 --- /dev/null +++ b/example-settings-cfg/NotNandProgram100.json @@ -0,0 +1,1482 @@ +{ + "value0": [ + { + "operation": "Global Anchor", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "register a global jump-to destination, maybe terminate" + }, + { + "key": "tag bits", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "tag moniker", + "value": "sad ibex" + } + ] + }, + { + "operation": "IO", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nand", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "IO", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "IO", + "args": { + "value0": 1, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nand", + "args": { + "value0": 0, + "value1": 1, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Reproduce", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + } + ] +} \ No newline at end of file diff --git a/example-settings-cfg/NotProgram100.json b/example-settings-cfg/NotProgram100.json new file mode 100644 index 00000000..4fa831be --- /dev/null +++ b/example-settings-cfg/NotProgram100.json @@ -0,0 +1,1497 @@ +{ + "value0": [ + { + "operation": "Global Anchor", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "register a global jump-to destination, maybe terminate" + }, + { + "key": "tag bits", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "tag moniker", + "value": "sad ibex" + } + ] + }, + { + "operation": "IO", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nand", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Reproduce", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + } + ] +} \ No newline at end of file diff --git a/example-settings-cfg/ReproProgram100.json b/example-settings-cfg/ReproProgram100.json new file mode 100644 index 00000000..afa02815 --- /dev/null +++ b/example-settings-cfg/ReproProgram100.json @@ -0,0 +1,1507 @@ +{ + "value0": [ + { + "operation": "Global Anchor", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "register a global jump-to destination, maybe terminate" + }, + { + "key": "tag bits", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "key": "tag moniker", + "value": "sad ibex" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Nop-0", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [ + { + "key": "summary", + "value": "perform no operation" + } + ] + }, + { + "operation": "Reproduce", + "args": { + "value0": 0, + "value1": 0, + "value2": 0 + }, + "bitstring": "0000000000000000000000000000000000000000000000000000000000000000", + "descriptors": [] + } + ] +} \ No newline at end of file diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index b13d5816..df5e385e 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -1,8 +1,18 @@ #pragma once +#include +#include +#include +#include + #include "hardware/SGPHardwareSpec.h" #include "hardware/GenomeLibrary.h" +#include "cereal/archives/binary.hpp" +#include "cereal/archives/json.hpp" + +#include "emp/base/assert_warning.hpp" +#include "emp/base/error.hpp" #include "emp/base/vector.hpp" #include "sgpl/program/Instruction.hpp" @@ -32,7 +42,31 @@ class ProgramBuilder { rectifier_t& rectifier; + /** + * Input: A program object to be rectified inplace. + * + * Output: None + * + * Purpose: Removes disabled instructions from a program, warning if any + * were actually removed. + */ + void RectifyWithWarning(program_t& program) const { + const program_t before{program}; + program.Rectify(rectifier); + emp_assert_warning( + before == program, + "ProgramBuilder program contained disabled instructions." + ); + } + public: + /** + * Input: A sgp opcode rectifier object, which must outlive this builder. + * + * Output: None + * + * Purpose: Constructs a ProgramBuilder, storing the rectifier by reference. + */ ProgramBuilder( rectifier_t& opcode_rectifier ) : rectifier(opcode_rectifier) @@ -41,10 +75,25 @@ class ProgramBuilder { // TODO - finish drafting // TODO - add functions for switching "instruction modes" + /** + * Input: A tag. + * + * Output: None + * + * Purpose: Configures the tag to be assigned to the global anchor that marks where execution + * begins. + */ void SetStartTag(const tag_t& tag) { start_tag = tag; } + /** + * Input: None + * + * Output: The tag used for the global anchor. + * + * Purpose: Accessor function. + */ const tag_t& GetStartTag() const { return start_tag; } @@ -70,6 +119,14 @@ class ProgramBuilder { nand_op = opcode; } + /** + * Input: Program to extend, instruction name, up to three register arguments, and an optional + * tag. + * + * Output: None + * + * Purpose: Appends an instruction, looking its opcode up by name. + */ void AddInst( program_t& program, const std::string& op_name, @@ -88,6 +145,13 @@ class ProgramBuilder { ); } + /** + * Input: Program to extend, opcode, up to three register arguments, and an optional tag. + * + * Output: None + * + * Purpose: Appends an instruction using directly-specified opcode. + */ void AddInst( program_t& program, uint8_t opcode, @@ -107,6 +171,13 @@ class ProgramBuilder { program.emplace_back(inst); } + /** + * Input: Program being built, instruction name, and a tag. + * + * Output: None + * + * Purpose: Appends a tagged instruction, looking its opcode up by name. + */ void AddInst( program_t& program, const std::string& op_name, @@ -115,6 +186,13 @@ class ProgramBuilder { AddInst(program, op_name, 0, 0, 0, tag); } + /** + * Input: Program being built, opcode, and a tag. + * + * Output: None + * + * Purpose: Appends a tagged instruction, using directly-specified opcode. + */ void AddInst( program_t& program, uint8_t opcode, @@ -123,6 +201,14 @@ class ProgramBuilder { AddInst(program, opcode, 0, 0, 0, tag); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Appends the global anchor instruction with start tag, that marks where execution + * begins. + */ void AddStartAnchor(program_t& program) { AddInst( program, @@ -131,22 +217,50 @@ class ProgramBuilder { ); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate NOT, without I/O. + */ void AddTask_Not(program_t& program) { // nand r0, r0, r0 AddInst(program, nand_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the NOT task, including I/O. + */ void AddTask_NotIO(program_t& program) { AddInst(program, io_op); AddTask_Not(program); AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate NAND, without I/O. + */ void AddTask_Nand(program_t& program) { // nand r0, r1, r0 AddInst(program, nand_op, 0, 1, 0); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the NAND task, including I/O. + */ void AddTask_NandIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -154,6 +268,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate AND, without I/O. + */ void AddTask_And( program_t& program ) { @@ -164,6 +285,13 @@ class ProgramBuilder { AddInst(program, nand_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the AND task, including I/O. + */ void AddTask_AndIO( program_t& program ) { @@ -173,6 +301,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate OR-NOT, without I/O. + */ void AddTask_OrNot(program_t& program) { // (~a) nand b // nand r0, r0, r0 @@ -183,6 +318,13 @@ class ProgramBuilder { } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the OR-NOT task, including I/O. + */ void AddTask_OrNotIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -190,6 +332,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate OR, without I/O. + */ void AddTask_Or(program_t& program) { // (~a) nand (~b) // nand r0, r0, r0 @@ -200,6 +349,13 @@ class ProgramBuilder { AddInst(program, nand_op, 0, 1, 0); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the OR task, including I/O. + */ void AddTask_OrIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -207,6 +363,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate AND-NOT, without I/O. + */ void AddTask_AndNot(program_t& program) { // ~(a nand (~b)) // nand r1, r1, r1 @@ -217,6 +380,13 @@ class ProgramBuilder { AddInst(program, nand_op, 0, 0, 0); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the AND-NOT task, including I/O. + */ void AddTask_AndNotIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -224,6 +394,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate NOR, without I/O. + */ void AddTask_Nor(program_t& program) { // ~((~a) nand (~b)) // nand r0, r0, r0 @@ -236,6 +413,13 @@ class ProgramBuilder { AddInst(program, nand_op, 0, 0, 0); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the NOR task, including I/O. + */ void AddTask_NorIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -243,6 +427,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate XOR, without I/O. + */ void AddTask_Xor(program_t& program) { // (a & ~b) | (~a & b) --> (a nand ~b) nand (~a nand b) // nand r3, r1, r1 @@ -261,6 +452,13 @@ class ProgramBuilder { } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the XOR task, including I/O. + */ void AddTask_XorIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -268,6 +466,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to calculate equals, without I/O. + */ void AddTask_Equ(program_t& program) { // ~(a ^ b) // @@ -289,6 +494,13 @@ class ProgramBuilder { AddInst(program, nand_op, 0, 0, 0); } + /** + * Input: Program being built. + * + * Output: None + * + * Purpose: Extends a program to complete the EQU task, including I/O. + */ void AddTask_EquIO(program_t& program) { AddInst(program, io_op); AddInst(program, io_op, 1); @@ -296,6 +508,13 @@ class ProgramBuilder { AddInst(program, io_op); } + /** + * Input: Desired program length. + * + * Output: The constructed program, padded to length with no-ops. + * + * Purpose: Builds a program that can reproduce and perform the NOT task. + */ program_t CreateNotProgram(size_t length) { program_t program; // Create empty program // Add start anchor @@ -311,10 +530,17 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - program.Rectify(rectifier); + RectifyWithWarning(program); return program; } + /** + * Input: Desired program length. + * + * Output: The constructed program, padded to length with no-ops. + * + * Purpose: Builds a program that can reproduce but performs no tasks. + */ program_t CreateReproProgram(size_t length) { program_t program; // Add start anchor @@ -331,6 +557,13 @@ class ProgramBuilder { return program; } + /** + * Input: Desired program length. + * + * Output: The constructed program, padded to length with no-ops. + * + * Purpose: Builds a program that can perform the NOT and NAND tasks and reproduce. + */ program_t CreateNotNandProgram(size_t length) { program_t program; // Create empty program // Add start anchor @@ -350,10 +583,17 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - program.Rectify(rectifier); + RectifyWithWarning(program); return program; } + /** + * Input: Desired program length. + * + * Output: The constructed program, padded to length with no-ops. + * + * Purpose: Builds a program that can performs the NAND task and reproduce. + */ program_t CreateNandProgram(size_t length) { program_t program; // Create empty program // Add start anchor @@ -372,10 +612,80 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - program.Rectify(rectifier); + RectifyWithWarning(program); return program; } + /** + * Input: A JSON-serialized program string. + * + * Output: The deserialized program object. + * + * Purpose: Loads a human-readable program representation from a string. + * + * Note: Warns if the program contains disabled instructions. + */ + program_t ParseJsonString(const std::string& json_str) { + program_t program(json_str.c_str()); + RectifyWithWarning(program); + return program; + } + + /** + * Input: Path to a program file with a ".json" or ".bin" extension. + * + * Output: The deserialized program object. + * + * Purpose: Loads a program from a JSON or binary file, depending on the path's file extension. + * + * Note: Warns if the program contains disabled instructions. + */ + program_t LoadProgramFile(const std::filesystem::path& path) { + program_t program(path); + RectifyWithWarning(program); + return program; + } + + /** + * Input: A program object to serialize. + * + * Output: A JSON string representing the program. + * + * Purpose: Converts a program object to human-readable format. + */ + std::string MakeJsonString(const program_t& program) { + std::ostringstream oss; + { + cereal::JSONOutputArchive archive(oss); + archive(program); + } + return oss.str(); + } + + /** + * Input: A program to serialize, and a destination path with a ".json" or ".bin" extension. + * + * Output: None + * + * Purpose: Saves a program to a file, choosing JSON or binary serialization based on the file + * extension. + */ + void SaveProgramFile( + const program_t& program, const std::filesystem::path& path + ) { + if ( path.extension() == ".json" ) { + std::ofstream os(path); + cereal::JSONOutputArchive archive(os); + archive( program ); + } else if ( path.extension() == ".bin" ) { + std::ofstream os(path); + cereal::BinaryOutputArchive archive(os); + archive( program ); + } else emp_error( + "unknown sgpl::Program file format ", path.extension(), " ", path + ); + } + }; } \ No newline at end of file diff --git a/source/sgp_mode/hardware/Instructions.h b/source/sgp_mode/hardware/Instructions.h index 1a0f9614..fa074860 100644 --- a/source/sgp_mode/hardware/Instructions.h +++ b/source/sgp_mode/hardware/Instructions.h @@ -11,7 +11,9 @@ #include "sgpl/utility/ThreadLocalRandom.hpp" #include +#include #include +#include namespace sgpmode::inst { @@ -28,6 +30,7 @@ namespace sgpmode::inst { */ #define INST(InstName, InstCode) \ struct InstName { \ + /* Runtime call path, run when this instruction executes in a program. */ \ template \ static void run( \ sgpl::Core& core, \ @@ -42,8 +45,20 @@ namespace sgpmode::inst { a = a, b = b, c = c; \ InstCode \ } \ + /* Make all instruction types eqiprobable to mutate in. */ \ static size_t prevalence() { return 1; } \ + /* Instruction class name e.g., "Nop" */ \ static std::string name() { return #InstName; } \ + /* Metadata for instruction instance, left empty (needed by JSON write). */\ + template \ + static auto descriptors(const sgpl::Instruction&) { \ + return std::map{}; \ + } \ + /* Metadata for instruction instance, left empty (needed by JSON write). */\ + template \ + static auto categories(const sgpl::Instruction&) { \ + return std::set{}; \ + } \ }; INST(Increment, { diff --git a/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc b/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc index 36461c27..ff38c0ad 100644 --- a/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc +++ b/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc @@ -1,3 +1,7 @@ +#include +#include +#include + #include "../../test_utils.h" #include "../../../default_mode/SymWorld.h" #include "../../../default_mode/WorldSetup.cc" @@ -480,8 +484,118 @@ TEST_CASE("CreateNotNandProgram()", "[sgp][sgp-unit]") { } } -TEST_CASE("CreateNandProgram()", "[sgp][sgp-unit]") { - GIVEN("A program builder") { +TEST_CASE("ParseJsonString()", "[sgp][sgp-unit]"){ + GIVEN("A program builder and a program serialized to a JSON string"){ + const size_t program_len = 100; + sgpl::OpCodeRectifier rectifier; + sgpmode::ProgramBuilder builder(rectifier); + + program_t original = builder.CreateNandProgram(program_len); + std::ostringstream oss; + { + cereal::JSONOutputArchive archive(oss); + archive(original); + } + const std::string json_str = oss.str(); + + WHEN("ParseJsonString is called on the serialized program"){ + program_t program = builder.ParseJsonString(json_str); + + THEN("The parsed program matches the original program"){ + REQUIRE(program == original); + } + + } + } +} + +TEST_CASE("LoadProgramFile()", "[sgp][sgp-unit]"){ + GIVEN("A program builder and a program written to a JSON file on disk"){ + const size_t program_len = 100; + sgpl::OpCodeRectifier rectifier; + sgpmode::ProgramBuilder builder(rectifier); + + program_t original = builder.CreateNandProgram(program_len); + + const std::filesystem::path path = std::filesystem::temp_directory_path() + / "ProgramBuilder_test_LoadProgramFile.json"; + { + std::ofstream os(path); + cereal::JSONOutputArchive archive(os); + archive(original); + } + + WHEN("LoadProgramFile is called on the file path"){ + program_t program = builder.LoadProgramFile(path); + + THEN("The loaded program matches the original program"){ + REQUIRE(program == original); + } + + } + + std::filesystem::remove(path); + } +} + +TEST_CASE("MakeJsonString()", "[sgp][sgp-unit]"){ + GIVEN("A program builder and a program"){ + const size_t program_len = 100; + sgpl::OpCodeRectifier rectifier; + sgpmode::ProgramBuilder builder(rectifier); + + program_t original = builder.CreateNandProgram(program_len); + + WHEN("MakeJsonString is called on the program"){ + const std::string json_str = builder.MakeJsonString(original); + program_t program(json_str.c_str()); + + THEN("The parsed program matches the original program"){ + REQUIRE(program == original); + } + + } + } +} + +TEST_CASE("SaveProgramFile()", "[sgp][sgp-unit]"){ + GIVEN("A program builder and a program"){ + const size_t program_len = 100; + sgpl::OpCodeRectifier rectifier; + sgpmode::ProgramBuilder builder(rectifier); + + program_t original = builder.CreateNandProgram(program_len); + + WHEN("SaveProgramFile is called with a .json path"){ + const std::filesystem::path path = std::filesystem::temp_directory_path() + / "ProgramBuilder_test_SaveProgramFile.json"; + builder.SaveProgramFile(original, path); + program_t program(path); + + THEN("The saved program matches the original program"){ + REQUIRE(program == original); + } + + std::filesystem::remove(path); + } + + WHEN("SaveProgramFile is called with a .bin path"){ + const std::filesystem::path path = std::filesystem::temp_directory_path() + / "ProgramBuilder_test_SaveProgramFile.bin"; + builder.SaveProgramFile(original, path); + program_t program(path); + + THEN("The saved program matches the original program"){ + REQUIRE(program == original); + } + + std::filesystem::remove(path); + } + } +} + +TEST_CASE("CreateNandProgram()", "[sgp][sgp-unit]"){ + GIVEN("A program builder"){ size_t program_len = 100; sgpl::OpCodeRectifier rectifier; sgpmode::ProgramBuilder builder(rectifier); @@ -515,4 +629,67 @@ TEST_CASE("CreateNandProgram()", "[sgp][sgp-unit]") { } } } -} \ No newline at end of file +} + +std::string ReadFileContents(const std::filesystem::path& path) { + std::ifstream is(path); + std::ostringstream oss; + oss << is.rdbuf(); + return oss.str(); +} + +TEST_CASE("Example program files regenerate identically", "[sgp][sgp-unit]"){ + GIVEN("A program builder"){ + const size_t program_len = 100; + sgpl::OpCodeRectifier rectifier; + sgpmode::ProgramBuilder builder(rectifier); + + WHEN("NotProgram100.json is regenerated"){ + const std::string json_str = builder.MakeJsonString( + builder.CreateNotProgram(program_len) + ); + THEN("its content matches the checked-in example file"){ + REQUIRE( + json_str + == ReadFileContents("example-settings-cfg/NotProgram100.json") + ); + } + } + + WHEN("ReproProgram100.json is regenerated"){ + const std::string json_str = builder.MakeJsonString( + builder.CreateReproProgram(program_len) + ); + THEN("its content matches the checked-in example file"){ + REQUIRE( + json_str + == ReadFileContents("example-settings-cfg/ReproProgram100.json") + ); + } + } + + WHEN("NotNandProgram100.json is regenerated"){ + const std::string json_str = builder.MakeJsonString( + builder.CreateNotNandProgram(program_len) + ); + THEN("its content matches the checked-in example file"){ + REQUIRE( + json_str + == ReadFileContents("example-settings-cfg/NotNandProgram100.json") + ); + } + } + + WHEN("NandProgram100.json is regenerated"){ + const std::string json_str = builder.MakeJsonString( + builder.CreateNandProgram(program_len) + ); + THEN("its content matches the checked-in example file"){ + REQUIRE( + json_str + == ReadFileContents("example-settings-cfg/NandProgram100.json") + ); + } + } + } +}