⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tables.c

📁 这是模拟器源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	}
	
	setup_sdt_strings (0x600, "str");
	setup_sdt_strings (0x640, "strb");
	setup_sdt_strings (0x400, "str");
	setup_sdt_strings (0x440, "strb");
	setup_sdt_strings (0x610|0x10, "ldr");
	setup_sdt_strings (0x640|0x10, "ldrb");
	setup_sdt_strings (0x400|0x10, "ldr");
	setup_sdt_strings (0x440|0x10, "ldrb");	

	opcode_strings [0x5B] = "ldrh";
	opcode_strings [0x20|0x5B] = "ldrh";
	opcode_strings [0x80|0x5B] = "ldrh";
	opcode_strings [0x80|0x20|0x5B] = "ldrh";
	opcode_strings [0x100|0x5B] = "ldrh";
	opcode_strings [0x100|0x20|0x5B] = "ldrh";
	opcode_strings [0x100|0x80|0x5B] = "ldrh";
	opcode_strings [0x100|0x80|0x20|0x5B] = "ldrh";

	opcode_strings [0x5B|0x4] = "ldrsh";
	opcode_strings [0x20|0x5B|0x4] = "ldrsh";
	opcode_strings [0x80|0x5B|0x4] = "ldrsh";
	opcode_strings [0x80|0x20|0x5B|0x4] = "ldrsh";
	opcode_strings [0x100|0x5B|0x4] = "ldrsh";
	opcode_strings [0x100|0x20|0x5B|0x4] = "ldrsh";
	opcode_strings [0x100|0x80|0x5B|0x4] = "ldrsh";
	opcode_strings [0x100|0x80|0x20|0x5B|0x4] = "ldrsh";
	
	opcode_strings [0x5D] = "ldrsb";
	opcode_strings [0x20|0x5D] = "ldrsb";
	opcode_strings [0x80|0x5D] = "ldrsb";
	opcode_strings [0x80|0x20|0x5D] = "ldrsb";
	opcode_strings [0x100|0x5D] = "ldrsb";
	opcode_strings [0x100|0x20|0x5D] = "ldrsb";
	opcode_strings [0x100|0x80|0x5D] = "ldrsb";
	opcode_strings [0x100|0x80|0x20|0x5D] = "ldrsb";

	opcode_strings [0x1B] = "ldrh";
	opcode_strings [0x20|0x1B] = "ldrh";
	opcode_strings [0x80|0x1B] = "ldrh";
	opcode_strings [0x80|0x20|0x1B] = "ldrh";
	opcode_strings [0x100|0x1B] = "ldrh";
	opcode_strings [0x100|0x20|0x1B] = "ldrh";
	opcode_strings [0x100|0x80|0x1B] = "ldrh";
	opcode_strings [0x100|0x80|0x20|0x1B] = "ldrh";

	opcode_strings [0x1B|0x4] = "ldrsh";
	opcode_strings [0x20|0x1B|0x4] = "ldrsh";
	opcode_strings [0x80|0x1B|0x4] = "ldrsh";
	opcode_strings [0x80|0x20|0x1B|0x4] = "ldrsh";
	opcode_strings [0x100|0x1B|0x4] = "ldrsh";
	opcode_strings [0x100|0x20|0x1B|0x4] = "ldrsh";
	opcode_strings [0x100|0x80|0x1B|0x4] = "ldrsh";
	opcode_strings [0x100|0x80|0x20|0x1B|0x4] = "ldrsh";

	opcode_strings [0x1D] = "ldrsb";
	opcode_strings [0x20|0x1D] = "ldrsb";
	opcode_strings [0x80|0x1D] = "ldrsb";
	opcode_strings [0x80|0x20|0x1D] = "ldrsb";
	opcode_strings [0x100|0x1D] = "ldrsb";
	opcode_strings [0x100|0x20|0x1D] = "ldrsb";
	opcode_strings [0x100|0x80|0x1D] = "ldrsb";
	opcode_strings [0x100|0x80|0x20|0x1D] = "ldrsb";

	opcode_strings [0x4B] = "strh";
	opcode_strings [0x20|0x4B] = "strh";
	opcode_strings [0x80|0x4B] = "strh";
	opcode_strings [0x80|0x20|0x4B] = "strh";
	opcode_strings [0x100|0x4B] = "strh";
	opcode_strings [0x100|0x20|0x4B] = "strh";
	opcode_strings [0x100|0x80|0x4B] = "strh";
	opcode_strings [0x100|0x80|0x20|0x4B] = "strh";

	opcode_strings [0xB] = "strh";
	opcode_strings [0x20|0xB] = "strh";
	opcode_strings [0x80|0xB] = "strh";
	opcode_strings [0x80|0x20|0xB] = "strh";
	opcode_strings [0x100|0xB] = "strh";
	opcode_strings [0x100|0x20|0xB] = "strh";
	opcode_strings [0x100|0x80|0xB] = "strh";
	opcode_strings [0x100|0x80|0x20|0xB] = "strh";

	opcode_strings [0x9] = "mul";
	opcode_strings[0x19] = "muls";
	opcode_strings[0x29] = "mla";
	opcode_strings[0x39] = "mlas";
	opcode_strings[0x89] = "mull";
	opcode_strings[0x99] = "mulls";
	opcode_strings[0xC9] = "mull";
	opcode_strings[0xE9] = "mulls";
	opcode_strings[0xA9] = "mlal";
	opcode_strings[0xB9] = "mlals";
	opcode_strings[0xE9] = "mlal";
	opcode_strings[0xF9] = "mlals";

	opcode_strings[0x121] = "bx";

	for (i=0; i<0x100; i++) {
		opcode_strings[0xF00|i] = "swi";
	}
	
	for (i=0; i<0x100; i++) {
		opcode_strings[(0xA<<8)|i] = "b";
		opcode_strings[(0xB<<8)|i] = "bl";
	}
}

void setup_io_handle_tables (void)
{
	int i;

	for (i=0; i<0x3FF; i++) {
	
		io_write_handles [i] = standard_io_write_handle;
	}

	io_write_handles [0x00] = reg_dispcnt_write;
	io_write_handles [0xDC] = reg_dm3cnt_write;
	io_write_handles [0xDD] = reg_dm3cnt_write;
	io_write_handles [0xDE] = reg_dm3cnt_write;
	io_write_handles [0xDF] = reg_dm3cnt_write;
}

void setup_dp_debug_handle (u32 base, void *handle)
{
	int i;

	for (i=0; i<8; i++) {
		debug_handles [base|(i<<1)]     = handle;	debug_handles[base|0x200|(i<<1)]     = handle;
		debug_handles [base|(i<<1)|0x1] = handle;	debug_handles[base|0x200|(i<<1)|0x1] = handle;
	}
}

void setup_sdt_debug_handles (u32 base, void *handle)
{	
	int i;

	for (i=0; i<0x10; i++) {
		debug_handles  [base|i]					= handle;
		debug_handles  [base|0x20|i]			= handle;
		debug_handles  [base|0x80|i]			= handle;
		debug_handles  [base|0x80|0x20|i]		= handle;
		debug_handles  [base|0x100|i]			= handle;
		debug_handles  [base|0x100|0x80|i]		= handle;
		debug_handles  [base|0x100|0x20|i]		= handle;
		debug_handles  [base|0x100|0x80|0x20|i] = handle;
	}
}

void setup_hwdt_debug_handles (u32 base, void *handle)
{	
	debug_handles [base] = handle;
	debug_handles [base|0x20] = handle;
	debug_handles [base|0x80] = handle;
	debug_handles [base|0x80|0x20] = handle;
	debug_handles [base|0x100] = handle;
	debug_handles [base|0x100|0x20] = handle;
	debug_handles [base|0x100|0x80] = handle;
	debug_handles [base|0x100|0x80|0x20] = handle;
}

void setup_debug_handles (void)
{
	int i;

	for (i=0; i<0x1000; i++) {
		debug_handles [i] = standard_debug_handle;
	}

	setup_dp_debug_handle (0x1A0, dpsingle_debug_handle);
	setup_dp_debug_handle (0x1E0, dpsingle_debug_handle);
	setup_dp_debug_handle (0x1B0, dpsingle_debug_handle);
	setup_dp_debug_handle (0x1F0, dpsingle_debug_handle);

	setup_dp_debug_handle ( 0x00, dp_debug_handle);
	setup_dp_debug_handle ( 0x80, dp_debug_handle);
	setup_dp_debug_handle ( 0x40, dp_debug_handle);
	setup_dp_debug_handle (0x150, dpnw_debug_handle);
	setup_dp_debug_handle ( 0x20, dp_debug_handle);
	setup_dp_debug_handle ( 0x60, dp_debug_handle);
	setup_dp_debug_handle ( 0xA0, dp_debug_handle);
	setup_dp_debug_handle ( 0xC0, dp_debug_handle);
	setup_dp_debug_handle ( 0xE0, dp_debug_handle);
	setup_dp_debug_handle (0x110, dpnw_debug_handle);
	setup_dp_debug_handle (0x130, dpnw_debug_handle);
	setup_dp_debug_handle (0x170, dpnw_debug_handle);
	setup_dp_debug_handle (0x180, dp_debug_handle);
	setup_dp_debug_handle (0x1C0, dp_debug_handle);
	setup_dp_debug_handle ( 0x10, dp_debug_handle);
	setup_dp_debug_handle ( 0x90, dp_debug_handle);
	setup_dp_debug_handle ( 0x50, dp_debug_handle);
	setup_dp_debug_handle ( 0x30, dp_debug_handle);
	setup_dp_debug_handle ( 0x70, dp_debug_handle);
	setup_dp_debug_handle ( 0xB0, dp_debug_handle);
	setup_dp_debug_handle ( 0xD0, dp_debug_handle);
	setup_dp_debug_handle ( 0xF0, dp_debug_handle);
	setup_dp_debug_handle (0x190, dp_debug_handle);
	setup_dp_debug_handle (0x1D0, dp_debug_handle);

	setup_sdt_debug_handles (0x600, sdt_debug_handle);
	setup_sdt_debug_handles (0x640, sdt_debug_handle);
	setup_sdt_debug_handles (0x400, sdt_debug_handle);		
	setup_sdt_debug_handles (0x440, sdt_debug_handle);
	setup_sdt_debug_handles (0x600|0x10, sdt_debug_handle);
	setup_sdt_debug_handles (0x640|0x10, sdt_debug_handle);
	setup_sdt_debug_handles (0x400|0x10, sdt_debug_handle);
	setup_sdt_debug_handles (0x440|0x10, sdt_debug_handle);
	
	setup_hwdt_debug_handles (0x5B|0x4, hwdt_debug_handle);
	setup_hwdt_debug_handles (0x5D, hwdt_debug_handle);
	setup_hwdt_debug_handles (0x1B, hwdt_debug_handle);
	setup_hwdt_debug_handles (0x1B|0x4, hwdt_debug_handle);
	setup_hwdt_debug_handles (0x1D, hwdt_debug_handle);
	setup_hwdt_debug_handles (0x4B, hwdt_debug_handle);
	setup_hwdt_debug_handles (0xB, hwdt_debug_handle);
	setup_hwdt_debug_handles (0x5B, hwdt_debug_handle);

	debug_handles [0x9] = mul_debug_handle;
	debug_handles[0x19] = mul_debug_handle;
	debug_handles[0x29] = mul_debug_handle;
	debug_handles[0x39] = mul_debug_handle;
	debug_handles[0x89] = mull_debug_handle;
	debug_handles[0x99] = mull_debug_handle;
	debug_handles[0xC9] = mull_debug_handle;
	debug_handles[0xE9] = mull_debug_handle;
	debug_handles[0xA9] = mull_debug_handle;
	debug_handles[0xB9] = mull_debug_handle;
	debug_handles[0xE9] = mull_debug_handle;
	debug_handles[0xF9] = mull_debug_handle;

	for (i=0; i<0x100; i++) {
		debug_handles[(0xA<<8)|i] = b_debug_handle;
		debug_handles[(0xB<<8)|i] = b_debug_handle;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -