mirror of https://github.com/mgba-emu/mgba.git
Show s flag for ARM instructions
This commit is contained in:
parent
d245eb3f88
commit
a2eec31632
|
@ -392,6 +392,7 @@ static const ARMDecoder _armDecoderTable[0x1000] = {
|
|||
};
|
||||
|
||||
void ARMDecodeARM(uint32_t opcode, struct ARMInstructionInfo* info) {
|
||||
info->execMode = MODE_ARM;
|
||||
info->opcode = opcode;
|
||||
info->branches = 0;
|
||||
info->traps = 0;
|
||||
|
|
|
@ -312,6 +312,7 @@ static const ThumbDecoder _thumbDecoderTable[0x400] = {
|
|||
};
|
||||
|
||||
void ARMDecodeThumb(uint16_t opcode, struct ARMInstructionInfo* info) {
|
||||
info->execMode = MODE_THUMB;
|
||||
info->opcode = opcode;
|
||||
info->branches = 0;
|
||||
info->traps = 0;
|
||||
|
|
|
@ -247,6 +247,22 @@ int ARMDisassemble(struct ARMInstructionInfo* info, uint32_t pc, char* buffer, i
|
|||
case ARM_MN_SWP:
|
||||
flags = _armAccessTypeStrings[info->memory.width];
|
||||
break;
|
||||
case ARM_MN_ADD:
|
||||
case ARM_MN_ADC:
|
||||
case ARM_MN_AND:
|
||||
case ARM_MN_BIC:
|
||||
case ARM_MN_EOR:
|
||||
case ARM_MN_MOV:
|
||||
case ARM_MN_MVN:
|
||||
case ARM_MN_ORR:
|
||||
case ARM_MN_RSB:
|
||||
case ARM_MN_RSC:
|
||||
case ARM_MN_SBC:
|
||||
case ARM_MN_SUB:
|
||||
if (info->affectsCPSR && info->execMode == MODE_ARM) {
|
||||
flags = "s";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef ARM_DECODER_H
|
||||
#define ARM_DECODER_H
|
||||
|
||||
#include "arm.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// Bit 0: a register is involved with this operand
|
||||
|
@ -165,6 +167,7 @@ enum ARMMnemonic {
|
|||
};
|
||||
|
||||
struct ARMInstructionInfo {
|
||||
enum ExecutionMode execMode;
|
||||
uint32_t opcode;
|
||||
enum ARMMnemonic mnemonic;
|
||||
union ARMOperand op1;
|
||||
|
|
Loading…
Reference in New Issue