Began removal of platform/. The Monitor:: namespace is completely converted.
[aesalon.git] / src / monitor / asm / Operand.h
blob89f41188e591f83060cdfec16b247d9992dd3c91
1 #ifndef AESALON_MONITOR_ASM_OPERAND_H
2 #define AESALON_MONITOR_ASM_OPERAND_H
4 #include "Types.h"
5 #include "Register.h"
7 namespace Aesalon {
8 namespace Monitor {
9 namespace ASM {
11 class Operand {
12 public:
13 enum operand_type_e {
14 REGISTER,
15 MEMORY_ADDRESS,
16 REGISTER_OFFSET
18 private:
19 operand_type_e operand_type;
20 Word address;
21 SWord offset;
22 Register reg;
23 Register::data_size_e data_size;
24 public:
25 Operand(std::string operand_string);
26 Operand(operand_type_e operand_type, Word address = 0, Register reg = Register::INVALID, SWord offset = 0)
27 : operand_type(operand_type), address(address), reg(reg) {}
28 virtual ~Operand() {}
30 Word get_address() const { return address; }
31 void set_address(Word new_address) { address = new_address; }
33 Register get_register() const { return reg; }
34 void set_register(Register new_register) { reg = new_register; }
37 } // namespace ASM
38 } // namespace Monitor
39 } // namespace Aesalon
41 #endif