📄 cpu_threaded.c
字号:
case 1: \ /* LDRH rd, [rn], -imm */ \ arm_access_memory(load, down, post, u16, half_imm); \ break; \ \ case 2: \ /* LDRSB rd, [rn], -imm */ \ arm_access_memory(load, down, post, s8, half_imm); \ break; \ \ case 3: \ /* LDRSH rd, [rn], -imm */ \ arm_access_memory(load, down, post, s16, half_imm); \ break; \ } \ } \ else \ { \ /* SUBS rd, rn, reg_op */ \ arm_data_proc(subs, reg, flags); \ } \ break; \ \ case 0x06: \ if((opcode & 0x90) == 0x90) \ { \ /* STRH rd, [rn], -imm */ \ arm_access_memory(store, down, post, u16, half_imm); \ } \ else \ { \ /* RSB rd, rn, reg_op */ \ arm_data_proc(rsb, reg, no_flags); \ } \ break; \ \ case 0x07: \ if((opcode & 0x90) == 0x90) \ { \ switch((opcode >> 5) & 0x03) \ { \ case 1: \ /* LDRH rd, [rn], -imm */ \ arm_access_memory(load, down, post, u16, half_imm); \ break; \ \ case 2: \ /* LDRSB rd, [rn], -imm */ \ arm_access_memory(load, down, post, s8, half_imm); \ break; \ \ case 3: \ /* LDRSH rd, [rn], -imm */ \ arm_access_memory(load, down, post, s16, half_imm); \ break; \ } \ } \ else \ { \ /* RSBS rd, rn, reg_op */ \ arm_data_proc(rsbs, reg, flags); \ } \ break; \ \ case 0x08: \ if((opcode & 0x90) == 0x90) \ { \ if(opcode & 0x20) \ { \ /* STRH rd, [rn], +rm */ \ arm_access_memory(store, up, post, u16, half_reg); \ } \ else \ { \ /* UMULL rd, rm, rs */ \ arm_multiply_long(u64, no, no); \ } \ } \ else \ { \ /* ADD rd, rn, reg_op */ \ arm_data_proc(add, reg, no_flags); \ } \ break; \ \ case 0x09: \ if((opcode & 0x90) == 0x90) \ { \ switch((opcode >> 5) & 0x03) \ { \ case 0: \ /* UMULLS rdlo, rdhi, rm, rs */ \ arm_multiply_long(u64, no, yes); \ break; \ \ case 1: \ /* LDRH rd, [rn], +rm */ \ arm_access_memory(load, up, post, u16, half_reg); \ break; \ \ case 2: \ /* LDRSB rd, [rn], +rm */ \ arm_access_memory(load, up, post, s8, half_reg); \ break; \ \ case 3: \ /* LDRSH rd, [rn], +rm */ \ arm_access_memory(load, up, post, s16, half_reg); \ break; \ } \ } \ else \ { \ /* ADDS rd, rn, reg_op */ \ arm_data_proc(adds, reg, flags); \ } \ break; \ \ case 0x0A: \ if((opcode & 0x90) == 0x90) \ { \ if(opcode & 0x20) \ { \ /* STRH rd, [rn], +rm */ \ arm_access_memory(store, up, post, u16, half_reg); \ } \ else \ { \ /* UMLAL rd, rm, rs */ \ arm_multiply_long(u64_add, yes, no); \ } \ } \ else \ { \ /* ADC rd, rn, reg_op */ \ arm_data_proc(adc, reg, no_flags); \ } \ break; \ \ case 0x0B: \ if((opcode & 0x90) == 0x90) \ { \ switch((opcode >> 5) & 0x03) \ { \ case 0: \ /* UMLALS rdlo, rdhi, rm, rs */ \ arm_multiply_long(u64_add, yes, yes); \ break; \ \ case 1: \ /* LDRH rd, [rn], +rm */ \ arm_access_memory(load, up, post, u16, half_reg); \ break; \ \ case 2: \ /* LDRSB rd, [rn], +rm */ \ arm_access_memory(load, up, post, s8, half_reg); \ break; \ \ case 3: \ /* LDRSH rd, [rn], +rm */ \ arm_access_memory(load, up, post, s16, half_reg); \ break; \ } \ } \ else \ { \ /* ADCS rd, rn, reg_op */ \ arm_data_proc(adcs, reg, flags); \ } \ break; \ \ case 0x0C: \ if((opcode & 0x90) == 0x90) \ { \ if(opcode & 0x20) \ { \ /* STRH rd, [rn], +imm */ \ arm_access_memory(store, up, post, u16, half_imm); \ } \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -