#pragma once #include #include #include #include #include #include "isa.hh" namespace assembler { struct literal_t { ssize_t num; }; struct reference_t { size_t symbol; }; struct implied_t { }; struct instruction_t { std::optional symbol; isa::op op; isa::mode mode; std::variant value; size_t location; ssize_t row; // debug }; struct blob_t { struct { size_t start; size_t start_l; size_t start_h; size_t size_l; size_t size_h; size_t end_l; size_t end_h; } symbol; size_t location; std::shared_ptr buf; }; using program_t = std::vector>; struct symbol_strings_t { size_t current_symbol; std::unordered_map map; }; using symbol_table_t = std::unordered_map; }