From 22c7245ce41a567b181f86f12bccd0a518b8786a Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 7 Jul 2026 11:38:49 -0400 Subject: [PATCH 01/10] Add warning to ProgramBuilder rectification --- source/sgp_mode/ProgramBuilder.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index b13d5816..d34f8ff3 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -32,6 +32,15 @@ class ProgramBuilder { rectifier_t& rectifier; + void rectify_with_warning(program_t& program) const { + const program_t before{program}; + program.Rectify(rectifier); + emp_assert_warning( + before == program, + "ProgramBuilder program contained disabled instructions." + ); + } + public: ProgramBuilder( rectifier_t& opcode_rectifier @@ -311,7 +320,7 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - program.Rectify(rectifier); + rectify_with_warning(program); return program; } @@ -350,7 +359,7 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - program.Rectify(rectifier); + rectify_with_warning(program); return program; } @@ -372,7 +381,7 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - program.Rectify(rectifier); + rectify_with_warning(program); return program; } From d89cf11b22481f9410afba7bbeb6dfb0b3dbd4f0 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 7 Jul 2026 12:12:32 -0400 Subject: [PATCH 02/10] Add test files to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) 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 From 60b45430219a1d8a60645f3427526927e5058d6e Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 7 Jul 2026 12:37:56 -0400 Subject: [PATCH 03/10] Add JSON load to ProgramBuilder Add empty descriptors/categories to Inst template to allow JSON serialization. Tests drafted by @claude --- source/sgp_mode/ProgramBuilder.h | 13 +++++ source/sgp_mode/hardware/Instructions.h | 10 ++++ .../unit_tests/ProgramBuilder.test.cc | 58 +++++++++++++++++++ 3 files changed, 81 insertions(+) diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index d34f8ff3..83d515bd 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -3,6 +3,7 @@ #include "hardware/SGPHardwareSpec.h" #include "hardware/GenomeLibrary.h" +#include "emp/base/assert_warning.hpp" #include "emp/base/vector.hpp" #include "sgpl/program/Instruction.hpp" @@ -385,6 +386,18 @@ class ProgramBuilder { return program; } + program_t ParseJsonString(const std::string& json_str) { + program_t program(json_str.c_str()); + rectify_with_warning(program); + return program; + } + + program_t LoadProgramFile(const std::filesystem::path& path) { + program_t program(path); + rectify_with_warning(program); + return program; + } + }; } \ No newline at end of file diff --git a/source/sgp_mode/hardware/Instructions.h b/source/sgp_mode/hardware/Instructions.h index 449db87d..0b6191cb 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 { @@ -44,6 +46,14 @@ namespace sgpmode::inst { } \ static size_t prevalence() { return 1; } \ static std::string name() { return #InstName; } \ + template \ + static auto descriptors(const sgpl::Instruction&) { \ + return std::map{}; \ + } \ + 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 b8cf7bd6..310a136b 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 "../../../sgp_mode/SGPWorld.h" #include "../../../sgp_mode/SGPWorld.cc" #include "../../../sgp_mode/SGPWorldSetup.cc" @@ -472,6 +476,60 @@ TEST_CASE("CreateNotNandProgram()", "[sgp][sgp-unit]"){ } } +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("CreateNandProgram()", "[sgp][sgp-unit]"){ GIVEN("A program builder"){ size_t program_len = 100; From b51a72b611c75ca87e137e0ed134bb3867793efd Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Tue, 7 Jul 2026 13:53:52 -0400 Subject: [PATCH 04/10] Add json save/write utilities Tests implemented by @claude --- Makefile | 3 +- example-settings-cfg/NandProgram100.json | 1487 ++++++++++++++++ example-settings-cfg/NotNandProgram100.json | 1482 ++++++++++++++++ example-settings-cfg/NotProgram100.json | 1497 ++++++++++++++++ example-settings-cfg/ReproProgram100.json | 1507 +++++++++++++++++ source/sgp_mode/ProgramBuilder.h | 34 + .../unit_tests/ProgramBuilder.test.cc | 121 +- 7 files changed, 6129 insertions(+), 2 deletions(-) create mode 100644 example-settings-cfg/NandProgram100.json create mode 100644 example-settings-cfg/NotNandProgram100.json create mode 100644 example-settings-cfg/NotProgram100.json create mode 100644 example-settings-cfg/ReproProgram100.json diff --git a/Makefile b/Makefile index 9adabebc..e40d00b0 100644 --- a/Makefile +++ b/Makefile @@ -2,10 +2,11 @@ TEST_DIR := source/catch EMP_DIR := Empirical/include SGP_DIR := signalgp-lite/include +CEREAL_DIR := signalgp-lite/third-party/cereal/include # Flags to use regardless of compiler VENDORIZE_EMP_FLAGS := -DUIT_VENDORIZE_EMP -DUIT_SUPPRESS_MACRO_INSEEP_WARNINGS -CFLAGS_all := -Wall -Wno-unused-function -std=c++20 -I$(EMP_DIR)/ -I$(SGP_DIR)/ ${VENDORIZE_EMP_FLAGS} +CFLAGS_all := -Wall -Wno-unused-function -std=c++20 -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 83d515bd..7fc92c21 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -1,9 +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" @@ -398,6 +407,31 @@ class ProgramBuilder { return program; } + std::string MakeJsonString(const program_t& program) { + std::ostringstream oss; + { + cereal::JSONOutputArchive archive(oss); + archive(program); + } + return oss.str(); + } + + 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/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc b/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc index 310a136b..98c9a07d 100644 --- a/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc +++ b/source/test/sgp_mode_test/unit_tests/ProgramBuilder.test.cc @@ -530,6 +530,62 @@ TEST_CASE("LoadProgramFile()", "[sgp][sgp-unit]"){ } } +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; @@ -565,4 +621,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") + ); + } + } + } +} From 791572a5aa60b1c21882cb52f4b4a682e0d5bb6d Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Mon, 13 Jul 2026 13:47:53 -0400 Subject: [PATCH 05/10] Add docstrings to new ProgramBuilder content Docstrings drafted via @claude and hand-reviewed. --- source/sgp_mode/ProgramBuilder.h | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index 7fc92c21..377ccc7c 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -42,6 +42,14 @@ class ProgramBuilder { rectifier_t& rectifier; + /** + * Input: A program to rectify. + * + * Output: None + * + * Purpose: Removes disabled instructions from a program, warning if any + * were actually removed. + */ void rectify_with_warning(program_t& program) const { const program_t before{program}; program.Rectify(rectifier); @@ -395,18 +403,44 @@ class ProgramBuilder { 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()); rectify_with_warning(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); rectify_with_warning(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; { @@ -416,6 +450,15 @@ class ProgramBuilder { 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 ) { From 31220d0ac90e2dd8b30e1cb7e255864794674c13 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Mon, 13 Jul 2026 13:49:29 -0400 Subject: [PATCH 06/10] Convert helper method to PascalCase --- source/sgp_mode/ProgramBuilder.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index 377ccc7c..d8693450 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -50,7 +50,7 @@ class ProgramBuilder { * Purpose: Removes disabled instructions from a program, warning if any * were actually removed. */ - void rectify_with_warning(program_t& program) const { + void RectifyWithWarning(program_t& program) const { const program_t before{program}; program.Rectify(rectifier); emp_assert_warning( @@ -338,7 +338,7 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - rectify_with_warning(program); + RectifyWithWarning(program); return program; } @@ -377,7 +377,7 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - rectify_with_warning(program); + RectifyWithWarning(program); return program; } @@ -399,7 +399,7 @@ class ProgramBuilder { program.resize(length - 1); AddInst(program, repro_op); // Remove any deleted instructions - rectify_with_warning(program); + RectifyWithWarning(program); return program; } @@ -414,7 +414,7 @@ class ProgramBuilder { */ program_t ParseJsonString(const std::string& json_str) { program_t program(json_str.c_str()); - rectify_with_warning(program); + RectifyWithWarning(program); return program; } @@ -430,7 +430,7 @@ class ProgramBuilder { */ program_t LoadProgramFile(const std::filesystem::path& path) { program_t program(path); - rectify_with_warning(program); + RectifyWithWarning(program); return program; } From 9b63f594d555090a0699c7111ad40992b2388b20 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Mon, 13 Jul 2026 14:07:34 -0400 Subject: [PATCH 07/10] Add hand-written docstrings for macro additions --- source/sgp_mode/hardware/Instructions.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/sgp_mode/hardware/Instructions.h b/source/sgp_mode/hardware/Instructions.h index 18ada029..d4c6c032 100644 --- a/source/sgp_mode/hardware/Instructions.h +++ b/source/sgp_mode/hardware/Instructions.h @@ -46,10 +46,12 @@ namespace sgpmode::inst { } \ static size_t prevalence() { return 1; } \ 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{}; \ From 8e0f0ba501c7160db5b0a78e2980ba7a35640269 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Mon, 13 Jul 2026 14:08:59 -0400 Subject: [PATCH 08/10] Add hand-written docstrings elsewhere in macro --- source/sgp_mode/hardware/Instructions.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/sgp_mode/hardware/Instructions.h b/source/sgp_mode/hardware/Instructions.h index d4c6c032..fa074860 100644 --- a/source/sgp_mode/hardware/Instructions.h +++ b/source/sgp_mode/hardware/Instructions.h @@ -30,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, \ @@ -44,7 +45,9 @@ 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 \ From a88e64ac304ad3ca22cd7b74ad7db3023b02d9d3 Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Mon, 13 Jul 2026 14:40:32 -0400 Subject: [PATCH 09/10] Add docstrings for rest of Programbuilder Generated via @claude and hand-edited/reviewed. --- source/sgp_mode/ProgramBuilder.h | 215 ++++++++++++++++++++++++++++++- 1 file changed, 214 insertions(+), 1 deletion(-) diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index d8693450..023f127b 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -43,7 +43,7 @@ class ProgramBuilder { rectifier_t& rectifier; /** - * Input: A program to rectify. + * Input: A program object to be rectified inplace. * * Output: None * @@ -60,6 +60,13 @@ class ProgramBuilder { } 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) @@ -68,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; } @@ -97,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, @@ -115,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, @@ -134,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, @@ -142,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, @@ -150,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, @@ -158,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); @@ -181,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 ) { @@ -191,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 ) { @@ -200,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 @@ -210,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); @@ -217,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 @@ -227,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); @@ -234,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 @@ -244,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); @@ -251,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 @@ -263,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); @@ -270,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 @@ -288,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); @@ -295,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) // @@ -316,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); @@ -323,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 @@ -342,6 +534,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 reproduce but performs no tasks. + */ program_t CreateReproProgram(size_t length) { program_t program; // Add start anchor @@ -358,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 @@ -381,6 +587,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 performs the NAND task and reproduce. + */ program_t CreateNandProgram(size_t length) { program_t program; // Create empty program // Add start anchor From 3eb0c09a39bd78cd993f7305f226948ecf0a6e5d Mon Sep 17 00:00:00 2001 From: Matthew Andres Moreno Date: Mon, 13 Jul 2026 14:41:08 -0400 Subject: [PATCH 10/10] Fix docstring wrap to match program convention --- source/sgp_mode/ProgramBuilder.h | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/source/sgp_mode/ProgramBuilder.h b/source/sgp_mode/ProgramBuilder.h index 023f127b..df5e385e 100644 --- a/source/sgp_mode/ProgramBuilder.h +++ b/source/sgp_mode/ProgramBuilder.h @@ -636,8 +636,7 @@ class ProgramBuilder { * * Output: The deserialized program object. * - * Purpose: Loads a program from a JSON or binary file, depending on the - * path's file extension. + * 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. */ @@ -664,13 +663,12 @@ class ProgramBuilder { } /** - * Input: A program to serialize, and a destination path with a ".json" or - * ".bin" extension. + * 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. + * 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