aboutsummaryrefslogtreecommitdiff
path: root/executor/executor.h
diff options
context:
space:
mode:
Diffstat (limited to 'executor/executor.h')
-rw-r--r--executor/executor.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/executor/executor.h b/executor/executor.h
index fdf6e67..5be9abc 100644
--- a/executor/executor.h
+++ b/executor/executor.h
@@ -20,6 +20,10 @@ CHECK_RESULT int amal_executor_init(amal_executor **self);
void amal_executor_deinit(amal_executor *self);
CHECK_RESULT int amal_executor_run(amal_executor *self);
+/* These functions are called for every file in the program. Every file has its own list of strings, intermediates, functions and external functions */
+CHECK_RESULT int amal_executor_instructions_start(amal_executor *self, u16 num_functions);
+CHECK_RESULT int amal_executor_instructions_end(amal_executor *self);
+
CHECK_RESULT int amal_exec_nop(amal_executor *self);
CHECK_RESULT int amal_exec_setz(amal_executor *self, u8 dst_reg);
CHECK_RESULT int amal_exec_mov(amal_executor *self, u8 dst_reg, u8 src_reg);
@@ -34,12 +38,12 @@ CHECK_RESULT int amal_exec_div(amal_executor *self, u8 dst_reg, u8 src_reg1, u8
CHECK_RESULT int amal_exec_push(amal_executor *self, u8 reg);
CHECK_RESULT int amal_exec_pushi(amal_executor *self, i64 imm);
CHECK_RESULT int amal_exec_pushd(amal_executor *self, BufferView data);
-/*CHECK_RESULT int amal_exec_call(u8 dst_reg, BufferView data);
-CHECK_RESULT int amal_exec_callr(u8 dst_reg, BufferView data);*/
+CHECK_RESULT int amal_exec_call(amal_executor *self, u16 func_index, u8 num_args);
+/*CHECK_RESULT int amal_exec_callr(u8 dst_reg, BufferView data);*/
CHECK_RESULT int amal_exec_cmp(amal_executor *self, u8 dst_reg, u8 src_reg1, u8 src_reg2);
CHECK_RESULT int amal_exec_jz(amal_executor *self, u8 dst_reg, i16 offset);
CHECK_RESULT int amal_exec_jmp(amal_executor *self, i16 offset);
-CHECK_RESULT int amal_exec_ret(amal_executor *self);
+CHECK_RESULT int amal_exec_ret(amal_executor *self, u8 reg);
CHECK_RESULT int amal_exec_func_start(amal_executor *self, u16 num_regs);
CHECK_RESULT int amal_exec_func_end(amal_executor *self);