void get_return_value(struct user *usr) { t_sysinfo syscall; if (usr->regs.orig_rax > NB_SYSCALL) return ; syscall = g_syscalls[usr->regs.orig_rax]; print_return_value(usr->regs.rax, syscall.return_type); }
static int exec(int using_readline) { jmp_buf buf; if (loop_frame_list == NULL) { loop_frame_list = new_array(); } val_t null_value; null_value.ptr = NULL; loop_frame_push(&buf, null_value); if (setjmp(buf) == 0) { val_t val = vm_exec(memory + current_index, stack_value); if (!IS_NULL(val) && using_readline) { print_return_value(val); printf("\n"); } loop_frame_t *frame = loop_frame_pop(); FREE(frame); return 0; } else { cstack_cons_cell_clear(); environment_clear(); return 1; } }