about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-10-01 15:56:05 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-10-01 15:56:05 +0200
commit5ac53d6be2fd9f1d0c3679fac1cc14259c335243 (patch)
tree7d970d955b6ead1bca59d62fe03044cece9fa854 /src/emu
parenta02873b9ee1abaf252fbc596fc6bab093587f85d (diff)
downloadbox64-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.c17
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
+}