* Warning: returns static buffer.
*/
const char *
-map (guint32 code, map_t *table)
+map (guint32 code, dis_map_t *table)
{
int i;
* Warning: returns static buffer.
*/
const char *
-flags (guint32 code, map_t *table)
+flags (guint32 code, dis_map_t *table)
{
static char buffer [1024];
int i;
for (i = 0; i < count; i++){
if (show_header)
if ((i % 16) == 0)
- printf ("\n0x%08x: ", (unsigned char) base + i);
+ printf ("\n0x%08X: ", (unsigned char) base + i);
- printf ("%02x ", (unsigned char) (buffer [i]));
+ printf ("%02X ", (unsigned char) (buffer [i]));
}
fflush (stdout);
}
+char*
+data_dump (const char *data, int len, const char* prefix) {
+ int i, j;
+ GString *str;
+ if (!len)
+ return g_strdup (" ()\n");
+ str = g_string_new (" (");
+ for (i = 0; i + 15 < len; i += 16) {
+ if (i == 0)
+ g_string_sprintfa (str, "\n");
+ g_string_sprintfa (str, "%s", prefix);
+ for (j = 0; j < 16; ++j)
+ g_string_sprintfa (str, "%02X ", (unsigned char) (data [i + j]));
+ g_string_sprintfa (str, i == len - 16? ") // ": " // ");
+ for (j = 0; j < 16; ++j)
+ g_string_sprintfa (str, "%c", data [i + j] >= 32 && data [i + j] <= 126? data [i + j]: '.');
+ g_string_sprintfa (str, "\n");
+ }
+ if (i == len)
+ return g_string_free (str, FALSE);
+ if (len > 16)
+ g_string_sprintfa (str, "%s", prefix);
+ j = i;
+ for (; i < len; ++i)
+ g_string_sprintfa (str, "%02X ", (unsigned char) (data [i]));
+ if (len > 16) {
+ /* align */
+ int count = 16 - (len % 16);
+ for (i = 0; i < count; ++i)
+ g_string_sprintfa (str, " ");
+ }
+ g_string_sprintfa (str, ") // ");
+ for (i = j; i < len; ++i)
+ g_string_sprintfa (str, "%c", data [i] >= 32 && data [i] <= 126? data [i]: '.');
+ g_string_sprintfa (str, "\n");
+ return g_string_free (str, FALSE);
+}
+