#pragma once #include "common/arch.h" #include "parse.h" #include "resolve.h" #include #include typedef enum { EoTy_Err, EoTy_Reg, EoTy_Imm, EoTy_Str, EoTy_Mem8Reg, EoTy_Mem8Imm, EoTy_MemU16Reg, EoTy_MemU16Imm, } EvaledOperandTy; typedef struct { EvaledOperandTy ty; union { Reg reg; uint16_t imm; }; uint16_t offset; } EvaledOperand; typedef struct { IdentResolver* re; Reporter* rep; bool second_pass; } OperandEvaluator; EvaledOperand eval_operand_to_imm( OperandEvaluator* evaluator, POperand* operand); EvaledOperand eval_operand_indirection_expr( OperandEvaluator* evaluator, POperand* operand); EvaledOperand eval_operand(OperandEvaluator* evaluator, POperand* operand);