Skip to content

Conversation

@bombaris34
Copy link

@bombaris34 bombaris34 commented Dec 15, 2025

Adds C++ backend for the decoder, encoder and formatters.

Decoder (decoder.cpp, handlers.cpp)
Encoder (encoder.cpp, encoder_methods.cpp, encoder_handlers.cpp)
Instruction API (generated via CppInstructionGenerator.cs)
Formatters

  • Intel, MASM, NASM, Gas syntax formatters
  • Fast formatter for high-performance output
    Catch2 tests for decoder/encoder/formatter

Might be a bit too strict since it requires C++23 for std::format, could theoretically scale it down to C++17/C++20 by using fmt instead. I think the generator implementation should be mostly consistent. Naming is also mostly consistent. The high-level assembler library is missing support for some instructions but that's not critical and I might add it later on.

adds an option (on by default) to do table deserialization at compile time (for environments with limited stack space), removes exception throwing, gets rid of stl features that require rtti

this should allow for a more smooth transition in using this in kernel-mode/baremetal environments, as long as CRT implementation is subsidized, and the std:: exception related functions are overriden if /NODEFAULTLIB, also improves compatibility with llvm-msvc, adds some missing things into generator
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant