MCPcopy Create free account
hub / github.com/N64Recomp/N64Recomp / write_indirect_jumps

Function write_indirect_jumps

RSPRecomp/src/rsp_recomp.cpp:576–593  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

574}
575
576void write_indirect_jumps(std::ofstream& output_file, const BranchTargets& branch_targets, const std::string& output_function_name) {
577 fmt::print(output_file,
578 "do_indirect_jump:\n"
579 " switch ((jump_target | 0x1000) & {:#X}) {{ \n", rsp_mem_mask);
580 for (uint32_t branch_target: branch_targets.indirect_targets) {
581 fmt::print(output_file, " case 0x{0:04X}: goto L_{0:04X};\n", branch_target);
582 }
583 fmt::print(output_file,
584 " }}\n"
585 " printf(\"Unhandled jump target 0x%04X in microcode {}, coming from [%s:%d]\\n\", jump_target, debug_file, debug_line);\n"
586 " printf(\"Register dump: r0 = %08X r1 = %08X r2 = %08X r3 = %08X r4 = %08X r5 = %08X r6 = %08X r7 = %08X\\n\"\n"
587 " \" r8 = %08X r9 = %08X r10 = %08X r11 = %08X r12 = %08X r13 = %08X r14 = %08X r15 = %08X\\n\"\n"
588 " \" r16 = %08X r17 = %08X r18 = %08X r19 = %08X r20 = %08X r21 = %08X r22 = %08X r23 = %08X\\n\"\n"
589 " \" r24 = %08X r25 = %08X r26 = %08X r27 = %08X r28 = %08X r29 = %08X r30 = %08X r31 = %08X\\n\",\n"
590 " 0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16,\n"
591 " r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31);\n"
592 " return RspExitReason::UnhandledJumpTarget;\n", output_function_name);
593}
594
595void write_overlay_swap_return(std::ofstream& output_file) {
596 fmt::print(output_file,

Callers 1

create_functionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected