mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
Fix issue with disassembler decoding CBZ/CBNZ immediates as negatives when the upper bit is set.
They should always be zero-extended, not sign extended. Added test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178275 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
93b10789c6
commit
ce88835110
@ -3049,9 +3049,9 @@ static DecodeStatus DecodeT2BROperand(MCInst &Inst, unsigned Val,
|
||||
|
||||
static DecodeStatus DecodeThumbCmpBROperand(MCInst &Inst, unsigned Val,
|
||||
uint64_t Address, const void *Decoder) {
|
||||
if (!tryAddingSymbolicOperand(Address, Address + SignExtend32<7>(Val<<1) + 4,
|
||||
if (!tryAddingSymbolicOperand(Address, Address + (Val<<1) + 4,
|
||||
true, 2, Inst, Decoder))
|
||||
Inst.addOperand(MCOperand::CreateImm(SignExtend32<7>(Val << 1)));
|
||||
Inst.addOperand(MCOperand::CreateImm(Val << 1));
|
||||
return MCDisassembler::Success;
|
||||
}
|
||||
|
||||
|
@ -254,9 +254,12 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# CHECK: cbnz r7, #6
|
||||
# CHECK: cbnz r7, #12
|
||||
# CHECK: cbz r4, #64
|
||||
|
||||
0x1f 0xb9
|
||||
0x37 0xb9
|
||||
0x04 0xb3
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# CDP/CDP2
|
||||
|
Loading…
Reference in New Issue
Block a user