mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-10-29 06:07:31 +08:00
8048: fix JMPP @A extra dereference
JMPP was doing two indirections : one in PData and then one again in AddrInd, where there should only be one. MCS-48 docs : > The contents of the Program Memory location addressed by the Accumulator is used as the new page offset of the Program Counter. i.e. (PC 0 – 7) <- ((A)) Previous implementation caused disasm / decompiler errors such as "Low-level Error: Could not find op at target address" refs: https://github.com/NationalSecurityAgency/ghidra/discussions/4818
This commit is contained in:
@@ -273,7 +273,7 @@ P3Data: @A is A {
|
||||
local addr:2 = 0x300; addr[0,8] = A; export *[CODE]:1 addr;
|
||||
}
|
||||
AddrInd: PData is PData {
|
||||
local addr:2 = inst_next; addr[0,8] = PData; export *[CODE]:1 addr;
|
||||
local addr:2 = inst_next; addr[0,8] = PData; export addr;
|
||||
}
|
||||
Ab: abit is abit {
|
||||
local bit:1 = (A>>abit)&1; export bit;
|
||||
@@ -450,7 +450,7 @@ RniI: Imm is Imm {
|
||||
goto Addr12;
|
||||
}
|
||||
:JMPP AddrInd is ophi=11 & oplo=3 & AddrInd {
|
||||
goto AddrInd;
|
||||
goto [AddrInd];
|
||||
}
|
||||
:MOV A,Imm is (ophi=2 & A)... & Imm {
|
||||
A = Imm;
|
||||
|
||||
Reference in New Issue
Block a user