message: Add uint64_stack::peek helper
diff: @@ -21,6 +21,8 @@ public:
  pop_back();
  return res;
  }
  +
  + uint64_t peek(difference_type depth = 1) const noexcept { return *(end() - depth); }
  };
  template <typename T>
  @@ -128,8 +130,8 @@ execution_result execute(const module& _module, funcidx _function, std::vector<u
  break;
  }
  case instr::i32_div_s: {
  - auto const lhs = static_cast<int32_t>(*(stack.end() - 1));
  - auto const rhs = static_cast<int32_t>(*(stack.end() - 2));
  + auto const lhs = static_cast<int32_t>(stack.peek(1));
  + auto const rhs = static_cast<int32_t>(stack.peek(2));
  if (rhs == 0 || (lhs == std::numeric_limits<int32_t>::min() && rhs == -1))
  {
  trap = true;
  @@ -139,7 +141,7 @@ execution_result execute(const module& _module, funcidx _function, std::vector<u
  break;
  }
  case instr::i32_div_u: {
  - auto const rhs = static_cast<uint32_t>(*(stack.end() - 2));
  + auto const rhs = static_cast<uint32_t>(stack.peek(2));
  if (rhs == 0)
  {
  trap = true;
  @@ -149,7 +151,7 @@ execution_result execute(const module& _module, funcidx _function, std::vector<u
  break;
  }
  case instr::i32_rem_s: {
  - auto const rhs = static_cast<int32_t>(*(stack.end() - 2));
  + auto const rhs = static_cast<int32_t>(stack.peek(2));
  if (rhs == 0)
  {
  trap = true;
  @@ -159,7 +161,7 @@ execution_result execute(const module& _module, funcidx _function, std::vector<u
  break;
  }
  case instr::i32_rem_u: {
  - auto const rhs = static_cast<uint32_t>(*(stack.end() - 2));
  + auto const rhs = static_cast<uint32_t>(stack.peek(2));
  if (rhs == 0)
  {
  trap = true;
  