Unnamed
public text v1 · immutable#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); \
} \