mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
redundate add of Voffset, disassembler correction (#21128)
This commit is contained in:
parent
4d0934d37f
commit
bd670444c7
3 changed files with 10 additions and 5 deletions
|
@ -108,7 +108,7 @@ void loadFromEA(ref code cs, reg_t reg, uint szw, uint szr)
|
|||
else if (cs.base != NOREG)
|
||||
{
|
||||
// LDRB/LDRH/LDR reg,[cs.base, #offset]
|
||||
uint offset = cast(uint)cs.IEV1.Voffset;
|
||||
uint offset = 0; //cast(uint)cs.IEV1.Voffset; Voffset is added in by assignaddrc()
|
||||
if (szr == 1)
|
||||
cs.Iop = signExtend ? INSTR.ldrsb_imm(szw == 8, reg, cs.base, offset)
|
||||
: INSTR.ldrb_imm (szw == 8, reg, cs.base, offset);
|
||||
|
@ -180,7 +180,7 @@ void storeToEA(ref code cs, reg_t reg, uint sz)
|
|||
else if (cs.base != NOREG)
|
||||
{
|
||||
// STRB/STRH/STR reg,[cs.base, #0]
|
||||
uint offset = cast(uint)cs.IEV1.Voffset;
|
||||
uint offset = 0; //cast(uint)cs.IEV1.Voffset; Voffset added in by assignaddr()
|
||||
if (sz == 1)
|
||||
cs.Iop = INSTR.strb_imm(reg, cs.base, offset);
|
||||
else if (sz == 2)
|
||||
|
|
|
@ -1011,7 +1011,7 @@ void cdshift(ref CGstate cg, ref CodeBuilder cdb,elem* e,ref regm_t pretregs)
|
|||
uint opcode;
|
||||
switch (e.Eoper)
|
||||
{
|
||||
case OPshl: opcode = 0x8; break;
|
||||
case OPshl: opcode = 0x8; break; // LSL Rd,Rn,Rm https://www.scs.stanford.edu/~zyedidia/arm64/lsl_lslv.html
|
||||
case OPshr: opcode = 0x9; break;
|
||||
case OPashr: opcode = 0xA; break;
|
||||
case OPror: opcode = 0xB; break;
|
||||
|
|
|
@ -2237,8 +2237,13 @@ void disassemble(uint c) @trusted
|
|||
bool is64 = false;
|
||||
switch (ldr(size, VR, opc))
|
||||
{
|
||||
case ldr(0,0,0): p1 = "strb"; goto Lldr;
|
||||
case ldr(0,0,1): p1 = "ldrb"; goto Lldr;
|
||||
case ldr(0,0,0): p1 = "strb"; goto Lldr8; // https://www.scs.stanford.edu/~zyedidia/arm64/strb_imm.html
|
||||
case ldr(0,0,1): p1 = "ldrb"; goto Lldr8;
|
||||
Lldr8:
|
||||
p2 = regString(is64, Rt);
|
||||
p3 = eaString(0, cast(ubyte)Rn, imm12);
|
||||
break;
|
||||
|
||||
case ldr(0,0,2): p1 = "ldrsb"; goto Lldr64;
|
||||
case ldr(0,0,3): p1 = "ldrsb"; goto Lldr;
|
||||
case ldr(1,0,0): p1 = "strh"; goto Lldr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue