Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
memory_trace.cpp
Go to the documentation of this file.
2
3#include <memory>
4#include <vector>
5
8
9// Permutations.
13
14namespace bb::avm2::tracegen {
15
18{
19 // Create a vector of pointers to avoid copying the events
21 event_ptrs.reserve(events.size());
22
23 for (const auto& event : events) {
24 event_ptrs.push_back(&event);
25 }
26
27 std::ranges::sort(event_ptrs, [](const auto* lhs, const auto* rhs) { return lhs->operator<(*rhs); });
28
29 using C = Column;
30
31 uint32_t row = 0;
32 for (const auto* event_ptr : event_ptrs) {
33 trace.set(row,
34 { {
35 { C::memory_sel, 1 },
36 { C::memory_clk, event_ptr->execution_clk },
37 { C::memory_address, event_ptr->addr },
38 { C::memory_value, event_ptr->value },
39 { C::memory_tag, static_cast<uint8_t>(event_ptr->value.get_tag()) },
40 { C::memory_rw, event_ptr->mode == simulation::MemoryMode::WRITE ? 1 : 0 },
41 { C::memory_space_id, event_ptr->space_id },
42 } });
43 row++;
44 }
45}
46
50 // Addressing.
59 // Keccak.
61 // Sha256.
71 // Others.
72 >(Column::memory_sel);
73
74} // namespace bb::avm2::tracegen
InteractionDefinition & add(auto &&... args)
static const InteractionDefinition interactions
void process(const simulation::EventEmitterInterface< simulation::MemoryEvent >::Container &events, TraceContainer &trace)
TestTraceContainer trace
permutation_settings< perm_sha256_mem_mem_op_6_settings_ > perm_sha256_mem_mem_op_6_settings
permutation_settings< perm_addressing_indirect_from_memory_3_settings_ > perm_addressing_indirect_from_memory_3_settings
permutation_settings< perm_addressing_indirect_from_memory_5_settings_ > perm_addressing_indirect_from_memory_5_settings
permutation_settings< perm_addressing_base_address_from_memory_settings_ > perm_addressing_base_address_from_memory_settings
permutation_settings< perm_sha256_mem_mem_op_2_settings_ > perm_sha256_mem_mem_op_2_settings
permutation_settings< perm_addressing_indirect_from_memory_1_settings_ > perm_addressing_indirect_from_memory_1_settings
permutation_settings< perm_sha256_mem_mem_op_4_settings_ > perm_sha256_mem_mem_op_4_settings
permutation_settings< perm_sha256_mem_mem_op_3_settings_ > perm_sha256_mem_mem_op_3_settings
permutation_settings< perm_addressing_indirect_from_memory_0_settings_ > perm_addressing_indirect_from_memory_0_settings
permutation_settings< perm_addressing_indirect_from_memory_2_settings_ > perm_addressing_indirect_from_memory_2_settings
permutation_settings< perm_keccak_memory_slice_to_mem_settings_ > perm_keccak_memory_slice_to_mem_settings
permutation_settings< perm_sha256_mem_mem_op_0_settings_ > perm_sha256_mem_mem_op_0_settings
permutation_settings< perm_sha256_mem_mem_op_1_settings_ > perm_sha256_mem_mem_op_1_settings
permutation_settings< perm_sha256_mem_mem_op_7_settings_ > perm_sha256_mem_mem_op_7_settings
permutation_settings< perm_addressing_indirect_from_memory_4_settings_ > perm_addressing_indirect_from_memory_4_settings
permutation_settings< perm_addressing_indirect_from_memory_6_settings_ > perm_addressing_indirect_from_memory_6_settings
permutation_settings< perm_sha256_mem_mem_op_5_settings_ > perm_sha256_mem_mem_op_5_settings
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
simulation::PublicDataTreeReadWriteEvent event