mvec_loop = False # Organisms consist of: # - instruction pointer # - seeker pointer # - main memory block # - child memory block # - 4 registers # - 8 value stack proc_fields = [ ("uint64_t", "ip"), ("uint64_t", "sp"), ("uint64_t", "mb0a"), ("uint64_t", "mb0s"), ("uint64_t", "mb1a"), ("uint64_t", "mb1s"), ("uint64_t", "r0x"), ("uint64_t", "r1x"), ("uint64_t", "r2x"), ("uint64_t", "r3x"), ("uint64_t", "s0"), ("uint64_t", "s1"), ("uint64_t", "s2"), ("uint64_t", "s3"), ("uint64_t", "s4"), ("uint64_t", "s5"), ("uint64_t", "s6"), ("uint64_t", "s7"), ] # Salis-v1 instruction set inst_set = [ (["noop"], " "), (["nop0"], "0"), (["nop1"], "1"), (["nop2"], "2"), (["nop3"], "3"), # ------------- (["jmpb"], "("), (["jmpf"], ")"), (["adrb"], "["), (["adrf"], "]"), (["ifnz"], "?"), # ------------- (["allb"], "{"), (["allf"], "}"), (["bswp"], "%"), (["bclr"], "|"), (["splt"], "$"), # ------------- (["addn"], "+"), (["subn"], "-"), (["muln"], "*"), (["divn"], "/"), (["incn"], "^"), (["decn"], "v"), (["notn"], "!"), (["shfl"], "<"), (["shfr"], ">"), (["zero"], "z"), (["unit"], "u"), # ------------- (["pshn"], "#"), (["popn"], "~"), # ------------- (["load"], "."), (["wrte"], ":"), (["dupl"], "="), (["swap"], "x"), # ------------- (["keya"], "a"), (["keyb"], "b"), (["keyc"], "c"), (["keyd"], "d"), (["keye"], "e"), (["keyf"], "f"), (["keyg"], "g"), (["keyh"], "h"), (["keyi"], "i"), (["keyj"], "j"), (["keyk"], "k"), (["keyl"], "l"), (["keym"], "m"), (["keyn"], "n"), (["keyo"], "o"), (["keyp"], "p"), # ------------- (["loka"], "A"), (["lokb"], "B"), (["lokc"], "C"), (["lokd"], "D"), (["loke"], "E"), (["lokf"], "F"), (["lokg"], "G"), (["lokh"], "H"), (["loki"], "I"), (["lokj"], "J"), (["lokk"], "K"), (["lokl"], "L"), (["lokm"], "M"), (["lokn"], "N"), (["loko"], "O"), (["lokp"], "P"), ] inst_count = len(inst_set) # Extra fields used exclusively for data aggregation core_fields = [ ("uint64_t", f"iexe[{inst_count}]", False), ("uint64_t", f"iwrt[{inst_count}]", False), ("uint64_t", "emb0", True), ("uint64_t", "emb1", True), ("uint64_t", "eliv", True), ("uint64_t", "edea", True), ("uint64_t", "wmb0", True), ("uint64_t", "wmb1", True), ("uint64_t", "wdea", True), # Event data aggregators # Allocation event vector ("uint64_t", "aevp", True), ("uint64_t", "aevc", True), ("uint64_t *", "aeva", False), ]