// file : test/ui/v1/addrs/ui.c // project : Salis-VM // author : Paul Oliver #include #include #include #include #include "arch_spec.h" #include "arch_inst.h" #include "compress.h" #include "salis.h" static void check_found(uint64_t addr, uint64_t lok, uint64_t regi) { assert(mvec_get_inst(g_cores, addr - 1) == (regi % 2 == 0 ? adrf : adrb)); assert(mvec_get_inst(g_cores, (&g_cores->pvec->r0x)[regi]) == lok); } int main(void) { uint64_t regi = 0; salis_init(); while (mvec_is_proc_owner(g_cores, g_cores->pvec->ip, g_cores->pcur)) { uint8_t inst = mvec_get_inst(g_cores, g_cores->pvec->ip); switch (inst) { #define CASE(id) \ case key##id: \ check_found(g_cores->pvec->ip, lok##id, regi); \ regi = (regi + 1) % 4; \ break; CASE(a) CASE(b) CASE(c) CASE(d) CASE(e) CASE(f) CASE(g) CASE(h) CASE(i) CASE(j) CASE(k) CASE(l) CASE(m) CASE(n) CASE(o) CASE(p) #undef CASE } salis_step(1); } salis_save_and_free(); return 0; }