template <typename T, typename F> void OpcodeInfo::WriteArray(Stream& stream, F&& write_func) { auto [data, size] = GetDataArray<T>(); for (size_t i = 0; i < size; ++i) { // Write an initial space (to separate from the opcode name) first, then // comma-separate.
stream.Writef("%s", i == 0 ? " " : ", ");
write_func(data[i]);
}
}
case Kind::V128: { auto data = *GetData<v128>(); auto l0 = data.u32(0); auto l1 = data.u32(1); auto l2 = data.u32(2); auto l3 = data.u32(3);
stream.Writef(" %u %u %u %u (0x%x 0x%x 0x%x 0x%x)", l0, l1, l2, l3, l0,
l1, l2, l3); break;
}
case Kind::Uint32Uint32: case Kind::Uint32Uint32Uint32: case Kind::Uint32Uint32Uint32Uint32:
WriteArray<uint32_t>(
stream, [&stream](uint32_t value) { stream.Writef("%u", value); }); break;
case Kind::BlockSig: { auto type = *GetData<Type>(); if (type.IsIndex()) {
stream.Writef(" type:%d", type.GetIndex());
} elseif (type != Type::Void) {
stream.Writef(" %s", type.GetName().c_str());
} break;
}
class BinaryReaderOpcnt : public BinaryReaderNop { public: explicit BinaryReaderOpcnt(OpcodeInfoCounts* counts);
Result OnOpcode(Opcode opcode) override;
Result OnOpcodeBare() override;
Result OnOpcodeUint32(uint32_t value) override;
Result OnOpcodeIndex(Index value) override;
Result OnOpcodeUint32Uint32(uint32_t value, uint32_t value2) override;
Result OnOpcodeUint32Uint32Uint32(uint32_t value,
uint32_t value2,
uint32_t value3) override;
Result OnOpcodeUint64(uint64_t value) override;
Result OnOpcodeF32(uint32_t value) override;
Result OnOpcodeF64(uint64_t value) override;
Result OnOpcodeV128(v128 value) override;
Result OnOpcodeBlockSig(Type sig_type) override;
Result OnBrTableExpr(Index num_targets,
Index* target_depths,
Index default_target_depth) override;
Result OnEndExpr() override;
private: template <typename... Args>
Result Emplace(Args&&... args);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.