ultimatepp/uppsrc/plugin/ndisasm/ndisupp.cpp
mdelfede 263ff5f895 changed svn layout
git-svn-id: svn://ultimatepp.org/upp/trunk@281 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-06-07 22:31:27 +00:00

37 lines
806 B
C++

#include <Core/Core.h>
#include "ndisasm.h"
extern "C" {
#include "lib/disasm.h"
}
NAMESPACE_UPP
#ifdef CPU_32
int NDisassemble(char *output, const byte *data, long offset)// returns instruction length
#else
int NDisassemble(char *output, const byte *data, int64 offset)// returns instruction length
#endif
{
unsigned preferences = 0; // see lib/insns.h(84)
long len = (long)disasm(const_cast<unsigned char *>(data), output, 32, offset, false, preferences);
if(len <= 0) {
eatbyte(const_cast<unsigned char *>(data), output);
len = 1;
}
return (int)len;
}
#ifdef flagMAIN
CONSOLE_APP_MAIN
{
long start = 0x4012f8, end = start + 256;
while(start < end) {
char line[NDISASM_OUTBUF_SIZE];
start += NDisassemble(line, (const byte *)start, start);
puts(line);
}
}
#endif
END_UPP_NAMESPACE