open Spice let[@warning "-26"] () = Logs.set_reporter (Logs.format_reporter ()); Logs.set_level (Some Logs.Debug); try let int n = Code.Cst_int (Int64.of_int n) in let reg n = Code.Reg n in let vtable = Value.make_vtable [ "x"; "y" ] in let ep = Code.make_basic_block [ (* obj o {...} *) CON (0, vtable); (* o.x = 999 *) MOV (2, int 999); MOV (1, int 0); SET (0, 1); (* o.y = 11 *) MOV (2, int 11); MOV (1, int 1); SET (0, 1); (* _1 = o.x *) MOV (1, int 0); GET (0, 1); (* _2 = o.y *) MOV (2, int 1); GET (0, 2); (* _3 = _1 * _2 *) MUL (2, reg 1); (* o.x = _3 *) MOV (1, int 0); SET (0, 1); ] in let prog = Code.make_program ep in let ret = run prog in Fmt.pr "{\"program\":%a,\"output\":%a}" Code.pp_program prog Value.pp ret with Error msg -> Logs.err (fun m -> m "%s" msg)