26 if (stored_tag ==
tag) {
41 if (!memory_address.has_value()) {
44 auto absolute_address = memory_address.value();
47 absolute_address =
address.pointer_address;
50 absolute_address -=
address.base_offset;
53 absolute_address =
address.pointer_address;
54 absolute_address -=
address.base_offset;
59 return absolute_address;
64 auto absolute_address =
address.address;
67 absolute_address =
address.pointer_address;
70 absolute_address -=
address.base_offset;
73 absolute_address =
address.pointer_address;
74 absolute_address -=
address.base_offset;
79 return absolute_address;
105 if (!absolute_address.has_value()) {
108 if (absolute_address.value() > 255) {
111 auto operand = OperandBuilder::from<uint8_t>(
static_cast<uint8_t
>(absolute_address.value()));
122 if (!absolute_address.has_value()) {
125 if (absolute_address.value() > 255) {
128 auto operand = OperandBuilder::from<uint8_t>(
static_cast<uint8_t
>(absolute_address.value()));
136 if (!absolute_address.has_value()) {
139 if (absolute_address.value() > 65535) {
142 auto operand = OperandBuilder::from<uint16_t>(
static_cast<uint16_t
>(absolute_address.value()));
151 if (!absolute_address.has_value()) {
154 if (absolute_address.value() > 65535) {
157 auto operand = OperandBuilder::from<uint16_t>(
static_cast<uint16_t
>(absolute_address.value()));
167 auto& arr = it->second;
168 return arr[
index % arr.size()];
174 if (!
value.has_value()) {
178 if (
value.value() > 255) {
182 return static_cast<uint8_t
>(
value.value());
bb::avm2::testing::OperandBuilder get_memory_address_operand(bb::avm2::testing::OperandBuilder operand, AddressingMode mode)
std::map< bb::avm2::MemoryTag, std::vector< uint32_t > > stored_variables
MemoryManager & operator=(const MemoryManager &other)
std::vector< bb::avm2::FF > emitted_note_hashes
std::optional< bb::avm2::FF > get_emitted_note_hash(uint16_t note_hash_index)
std::map< uint32_t, bb::avm2::MemoryTag > memory_address_to_tag
std::optional< std::pair< uint32_t, bb::avm2::testing::OperandBuilder > > get_memory_address_and_operand_8(AddressRef address)
std::optional< bb::avm2::FF > get_slot(uint16_t slot_offset_index)
bool is_memory_address_set(uint16_t address)
std::optional< uint8_t > get_memory_offset_8_bit(bb::avm2::MemoryTag tag, uint16_t address_index)
std::optional< uint16_t > get_leaf_index(uint16_t note_hash_index)
void set_memory_address(bb::avm2::MemoryTag tag, uint32_t address)
std::optional< std::pair< uint32_t, bb::avm2::testing::OperandBuilder > > get_memory_address_and_operand_16(AddressRef address)
void append_slot(bb::avm2::FF slot)
std::optional< uint32_t > get_memory_address_to_resolve(AddressRef address)
std::optional< uint32_t > get_memory_offset(bb::avm2::MemoryTag tag, uint32_t address_index)
void append_emitted_note_hash(bb::avm2::FF note_hash)
std::vector< bb::avm2::FF > storage_addresses
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
OperandBuilder & indirect()
OperandBuilder & relative()