#include "impl_macros.h" #define mathOperator2Impl(NAME, OPERATOR)\ i32 NAME##_impl (VM* vm) {\ u8 dst_register_i = 0, src_register_i = 0;\ readRegisterVar(dst_register_i);\ readRegisterVar(src_register_i);\ /*u8 value_size = 0;\ readValueSizeVar(value_size);*/\ u8 value_size = 4;\ \ switch(value_size){\ case 1: \ vm->registers.array[dst_register_i].u8v0 OPERATOR##= vm->registers.array[src_register_i].u8v0;\ break;\ case 2: \ vm->registers.array[dst_register_i].u16v0 OPERATOR##= vm->registers.array[src_register_i].u16v0;\ break;\ case 4: \ vm->registers.array[dst_register_i].u32v0 OPERATOR##= vm->registers.array[src_register_i].u32v0;\ break;\ case 8: \ vm->registers.array[dst_register_i].u64v OPERATOR##= vm->registers.array[src_register_i].u64v;\ break;\ }\ return sizeof(dst_register_i) + sizeof(src_register_i) /*+ sizeof(value_size)*/;\ } /// ADD [dst_register] [src_register] mathOperator2Impl(ADD, +) /// SUB [dst_register] [src_register] mathOperator2Impl(SUB, -) /// MUL [dst_register] [src_register] mathOperator2Impl(MUL, *) /// DIV [dst_register] [src_register] mathOperator2Impl(DIV, /) /// MOD [dst_register] [src_register] mathOperator2Impl(MOD, %)