diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-10-01 15:56:05 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-10-01 15:56:05 +0200 |
| commit | 5ac53d6be2fd9f1d0c3679fac1cc14259c335243 (patch) | |
| tree | 7d970d955b6ead1bca59d62fe03044cece9fa854 /src/emu | |
| parent | a02873b9ee1abaf252fbc596fc6bab093587f85d (diff) | |
| download | box64-5ac53d6be2fd9f1d0c3679fac1cc14259c335243.tar.gz box64-5ac53d6be2fd9f1d0c3679fac1cc14259c335243.zip | |
[TRACE] Added tooling to check if x86/x64 opcode is valid
Diffstat (limited to 'src/emu')
| -rw-r--r-- | src/emu/x64trace.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/emu/x64trace.c b/src/emu/x64trace.c index 891867f8..65157958 100644 --- a/src/emu/x64trace.c +++ b/src/emu/x64trace.c @@ -238,3 +238,20 @@ const char* DecodeX64Trace(zydis_dec_t* dec, uintptr_t p, int withhex) return buff; #endif } + +int OpcodeOK(zydis_dec_t* dec, uintptr_t p) +{ +#ifndef HAVE_TRACE + return 1; +#else +#ifndef ZYDIS3 + if (ZYAN_SUCCESS(dec->ZydisDecoderDecodeFull(&dec->decoder, (char*)p, 15, + &dec->instruction, dec->operands))) +#else + if (ZYAN_SUCCESS(dec->ZydisDecoderDecodeBuffer(&dec->decoder, (char*)p, 15, + &dec->instruction))) +#endif + return 1; + return 0; +#endif +} |