All pastes #589854 Raw Edit

Unnamed

public text v1 · immutable
#589854 ·published 2007-06-26 07:10 UTC
rendered paste body
#define log_translation(type)                                                 \
{                                                                             \
  static FILE *translation_log_fp = NULL;                                     \
  char disasm_buffer[512];                                                    \
  u8 *current_translation_ptr;                                                \
                                                                              \
  if(translation_log_fp == NULL)                                              \
    translation_log_fp = fopen("translation_log.txt", "wb");                  \
                                                                              \
  fprintf(translation_log_fp, "Block PC %x -> %p\n", block_start_pc,          \
   translation_ptr_start);                                                    \
                                                                              \
  pc = block_start_pc;                                                        \
                                                                              \
  while(pc < block_end_pc)                                                    \
  {                                                                           \
    check_pc_region(pc);                                                      \
    type##_load_opcode_disasm();                                              \
                                                                              \
    disasm_##type##_instruction(opcode, disasm_buffer, pc);                   \
    fprintf(translation_log_fp, "%08x: %s\n", pc, disasm_buffer);             \
  }                                                                           \
                                                                              \
  fprintf(translation_log_fp, "\n");                                          \
                                                                              \
  for(current_translation_ptr = translation_ptr_start;                        \
   current_translation_ptr < translation_ptr; current_translation_ptr += 4)   \
  {                                                                           \
    opcode = address32(current_translation_ptr, 0);                           \
    disasm_arm_instruction(opcode, disasm_buffer,                             \
     (u32)current_translation_ptr);                                           \
    fprintf(translation_log_fp, "%08x: %s\n", current_translation_ptr,        \
     disasm_buffer);                                                          \
  }                                                                           \
                                                                              \
  fprintf(translation_log_fp, "\n");                                          \
  fflush(translation_log_fp);                                                 \
}                                                                             \