aboutsummaryrefslogtreecommitdiff
path: root/source/disasm.c
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-05-24 16:48:22 +0200
committerToni Uhlig <matzeton@googlemail.com>2020-05-25 21:57:14 +0200
commit31c69b6ca1b91e7fd9fd8e14082fd2584c5f538c (patch)
tree16e789c7d68608831b498f41f54d9482b82a711a /source/disasm.c
first public release
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'source/disasm.c')
-rw-r--r--source/disasm.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/disasm.c b/source/disasm.c
new file mode 100644
index 0000000..b36abae
--- /dev/null
+++ b/source/disasm.c
@@ -0,0 +1,24 @@
+#include "compat.h"
+#include "disasm.h"
+#include "distorm/distorm.h"
+
+
+_DecodeResult disasm(_OffsetType codeOffset, const unsigned char* code, int codeLen, _DecodeType dt, _DInst instructions[], unsigned int maxInstructions, unsigned int* usedInstructionsCount)
+{
+ _DecodeResult res;
+ _CodeInfo ci;
+ unsigned int instsCount = 0;
+
+ ci.codeOffset = codeOffset;
+ ci.code = code;
+ ci.codeLen = codeLen;
+ ci.dt = dt;
+ ci.features = DF_NONE;
+
+ if (dt == Decode16Bits) ci.features = DF_MAXIMUM_ADDR16;
+ else if (dt == Decode32Bits) ci.features = DF_MAXIMUM_ADDR32;
+
+ res = distorm_decompose(&ci, instructions, maxInstructions, &instsCount);
+ *usedInstructionsCount = instsCount;
+ return res;
+}