mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 04:09:15 +02:00
Add most non-VFP Thumb-2 instruction entries for the ARM internal writer.
git-svn-id: branches/laksen/armiw@29329 -
This commit is contained in:
parent
3cb9b30165
commit
5c3093a937
@ -30,7 +30,8 @@ uses
|
|||||||
aasmbase,aasmtai,aasmdata,aasmsym,
|
aasmbase,aasmtai,aasmdata,aasmsym,
|
||||||
ogbase,
|
ogbase,
|
||||||
symtype,
|
symtype,
|
||||||
cpubase,cpuinfo,cgbase,cgutils;
|
cpubase,cpuinfo,cgbase,cgutils,
|
||||||
|
sysutils;
|
||||||
|
|
||||||
const
|
const
|
||||||
{ "mov reg,reg" source operand number }
|
{ "mov reg,reg" source operand number }
|
||||||
@ -74,6 +75,7 @@ uses
|
|||||||
OT_IMM80 = $00002010;
|
OT_IMM80 = $00002010;
|
||||||
OT_IMMTINY = $00002100;
|
OT_IMMTINY = $00002100;
|
||||||
OT_IMMSHIFTER= $00002200;
|
OT_IMMSHIFTER= $00002200;
|
||||||
|
OT_IMMEDIATEZERO = $10002200;
|
||||||
OT_IMMEDIATE24 = OT_IMM24;
|
OT_IMMEDIATE24 = OT_IMM24;
|
||||||
OT_SHIFTIMM = OT_SHIFTEROP or OT_IMMSHIFTER;
|
OT_SHIFTIMM = OT_SHIFTEROP or OT_IMMSHIFTER;
|
||||||
OT_SHIFTIMMEDIATE = OT_SHIFTIMM;
|
OT_SHIFTIMMEDIATE = OT_SHIFTIMM;
|
||||||
@ -137,6 +139,7 @@ uses
|
|||||||
IF_ARM32 = $00010000;
|
IF_ARM32 = $00010000;
|
||||||
IF_THUMB = $00020000;
|
IF_THUMB = $00020000;
|
||||||
IF_THUMB32 = $00040000;
|
IF_THUMB32 = $00040000;
|
||||||
|
IF_WIDE = $00080000;
|
||||||
|
|
||||||
IF_ARMvMASK = $0FF00000;
|
IF_ARMvMASK = $0FF00000;
|
||||||
IF_ARMv4 = $00100000;
|
IF_ARMv4 = $00100000;
|
||||||
@ -791,21 +794,10 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
var
|
|
||||||
IF_ArmInsVersion: longword;
|
|
||||||
|
|
||||||
|
|
||||||
procedure BuildInsTabCache;
|
procedure BuildInsTabCache;
|
||||||
var
|
var
|
||||||
i : longint;
|
i : longint;
|
||||||
begin
|
begin
|
||||||
if GenerateThumb2Code then
|
|
||||||
IF_ArmInsVersion:=IF_THUMB32
|
|
||||||
else if GenerateThumbCode then
|
|
||||||
IF_ArmInsVersion:=IF_THUMB
|
|
||||||
else
|
|
||||||
IF_ArmInsVersion:=IF_ARM32;
|
|
||||||
|
|
||||||
new(instabcache);
|
new(instabcache);
|
||||||
FillChar(instabcache^,sizeof(tinstabcache),$ff);
|
FillChar(instabcache^,sizeof(tinstabcache),$ff);
|
||||||
i:=0;
|
i:=0;
|
||||||
@ -1973,8 +1965,9 @@ implementation
|
|||||||
ot:=ot or OT_AM4
|
ot:=ot or OT_AM4
|
||||||
else
|
else
|
||||||
ot:=ot or OT_AM3;
|
ot:=ot or OT_AM3;
|
||||||
end
|
end;
|
||||||
else if (ref^.base<>NR_NO) and
|
|
||||||
|
if (ref^.base<>NR_NO) and
|
||||||
(opcode in [A_LDREX,A_LDREXB,A_LDREXH,A_LDREXD,
|
(opcode in [A_LDREX,A_LDREXB,A_LDREXH,A_LDREXD,
|
||||||
A_STREX,A_STREXB,A_STREXH,A_STREXD]) and
|
A_STREX,A_STREXB,A_STREXH,A_STREXD]) and
|
||||||
(
|
(
|
||||||
@ -2040,7 +2033,11 @@ implementation
|
|||||||
top_const :
|
top_const :
|
||||||
begin
|
begin
|
||||||
ot:=OT_IMMEDIATE;
|
ot:=OT_IMMEDIATE;
|
||||||
if is_shifter_const(val,dummy) then
|
if (val=0) then
|
||||||
|
ot:=ot_immediatezero
|
||||||
|
else if is_shifter_const(val,dummy) then
|
||||||
|
ot:=OT_IMMSHIFTER
|
||||||
|
else if GenerateThumb2Code and is_thumb32_imm(val) then
|
||||||
ot:=OT_IMMSHIFTER
|
ot:=OT_IMMSHIFTER
|
||||||
else
|
else
|
||||||
ot:=OT_IMM32
|
ot:=OT_IMM32
|
||||||
@ -2115,6 +2112,13 @@ implementation
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ Check wideformat flag }
|
||||||
|
if ((p^.flags and IF_WIDE)<>0) <> wideformat then
|
||||||
|
begin
|
||||||
|
//matches:=0;
|
||||||
|
//exit;
|
||||||
|
end;
|
||||||
|
|
||||||
{ Check that no spurious colons or TOs are present }
|
{ Check that no spurious colons or TOs are present }
|
||||||
for i:=0 to p^.ops-1 do
|
for i:=0 to p^.ops-1 do
|
||||||
if (oper[i]^.ot and (not p^.optypes[i]) and (OT_COLON or OT_TO))<>0 then
|
if (oper[i]^.ot and (not p^.optypes[i]) and (OT_COLON or OT_TO))<>0 then
|
||||||
@ -2154,7 +2158,7 @@ implementation
|
|||||||
{ update condition flags
|
{ update condition flags
|
||||||
or floating point single }
|
or floating point single }
|
||||||
if (oppostfix=PF_S) and
|
if (oppostfix=PF_S) and
|
||||||
not(p^.code[0] in [#$04..#$0F,#$14..#$16,#$29,#$30]) then
|
not(p^.code[0] in [#$04..#$0F,#$14..#$16,#$29,#$30, #$80..#$82]) then
|
||||||
begin
|
begin
|
||||||
Matches:=0;
|
Matches:=0;
|
||||||
exit;
|
exit;
|
||||||
@ -2174,7 +2178,7 @@ implementation
|
|||||||
// ldr,str,ldrb,strb
|
// ldr,str,ldrb,strb
|
||||||
#$17,
|
#$17,
|
||||||
// stm,ldm
|
// stm,ldm
|
||||||
#$26,
|
#$26,#$8C,
|
||||||
// vldm/vstm
|
// vldm/vstm
|
||||||
#$44
|
#$44
|
||||||
]) then
|
]) then
|
||||||
@ -2544,6 +2548,73 @@ implementation
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure encodethumbimm(imm: longword);
|
||||||
|
var
|
||||||
|
imm12, tmp: tcgint;
|
||||||
|
shift: integer;
|
||||||
|
found: boolean;
|
||||||
|
begin
|
||||||
|
found:=true;
|
||||||
|
if (imm and $FF) = imm then
|
||||||
|
imm12:=imm
|
||||||
|
else if ((imm shr 16)=(imm and $FFFF)) and
|
||||||
|
((imm and $FF00FF00) = 0) then
|
||||||
|
imm12:=(imm and $ff) or ($1 shl 8)
|
||||||
|
else if ((imm shr 16)=(imm and $FFFF)) and
|
||||||
|
((imm and $00FF00FF) = 0) then
|
||||||
|
imm12:=((imm shr 8) and $ff) or ($2 shl 8)
|
||||||
|
else if ((imm shr 16)=(imm and $FFFF)) and
|
||||||
|
(((imm shr 8) and $FF)=(imm and $FF)) then
|
||||||
|
imm12:=(imm and $ff) or ($3 shl 8)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
found:=false;
|
||||||
|
for shift:=1 to 31 do
|
||||||
|
begin
|
||||||
|
tmp:=RolDWord(imm,shift);
|
||||||
|
if ((tmp and $FF)=tmp) and
|
||||||
|
((tmp and $80)=$80) then
|
||||||
|
begin
|
||||||
|
imm12:=(tmp and $7F) or (shift shl 7);
|
||||||
|
found:=true;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if found then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (imm12 and $FF);
|
||||||
|
bytes:=bytes or (((imm12 shr 8) and $7) shl 12);
|
||||||
|
bytes:=bytes or (((imm12 shr 11) and $1) shl 26);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Message1(asmw_e_value_exceeds_bounds, IntToStr(imm));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure setthumbshift(op: byte; is_sat: boolean = false);
|
||||||
|
var
|
||||||
|
shift,typ: byte;
|
||||||
|
begin
|
||||||
|
case oper[op]^.shifterop^.shiftmode of
|
||||||
|
SM_LSL: begin typ:=0; shift:=oper[op]^.shifterop^.shiftimm; end;
|
||||||
|
SM_LSR: begin typ:=1; shift:=oper[op]^.shifterop^.shiftimm; if shift=32 then shift:=0; end;
|
||||||
|
SM_ASR: begin typ:=2; shift:=oper[op]^.shifterop^.shiftimm; if shift=32 then shift:=0; end;
|
||||||
|
SM_ROR: begin typ:=3; shift:=oper[op]^.shifterop^.shiftimm; if shift=0 then message(asmw_e_invalid_opcode_and_operands); end;
|
||||||
|
SM_RRX: begin typ:=3; shift:=oper[op]^.shifterop^.shiftimm; shift:=0; end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if is_sat then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or ((typ and 1) shl 5);
|
||||||
|
bytes:=bytes or ((typ shr 1) shl 21);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
bytes:=bytes or (typ shl 4);
|
||||||
|
bytes:=bytes or (shift and $3) shl 6;
|
||||||
|
bytes:=bytes or ((shift and $1C) shr 2) shl 12;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
bytes:=$0;
|
bytes:=$0;
|
||||||
bytelen:=4;
|
bytelen:=4;
|
||||||
@ -4122,6 +4193,570 @@ implementation
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
#$80: { Thumb-2: Dataprocessing }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
if ops=1 then
|
||||||
|
begin
|
||||||
|
if oper[0]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 16)
|
||||||
|
else if oper[0]^.typ=top_const then
|
||||||
|
bytes:=bytes or (oper[0]^.val and $F);
|
||||||
|
end
|
||||||
|
else if (ops=2) and
|
||||||
|
(opcode in [A_CMP,A_CMN,A_TEQ,A_TST]) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 16);
|
||||||
|
|
||||||
|
if oper[1]^.typ=top_const then
|
||||||
|
encodethumbimm(oper[1]^.val)
|
||||||
|
else if oper[1]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
end
|
||||||
|
else if (ops=3) and
|
||||||
|
(opcode in [A_CMP,A_CMN,A_TEQ,A_TST]) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 16);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
|
||||||
|
if oper[2]^.typ=top_shifterop then
|
||||||
|
setthumbshift(2)
|
||||||
|
else if oper[2]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 12);
|
||||||
|
end
|
||||||
|
else if (ops=2) and
|
||||||
|
(opcode in [A_REV,A_RBIT,A_REV16,A_REVSH,A_CLZ]) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
end
|
||||||
|
else if ops=2 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
|
||||||
|
if oper[1]^.typ=top_const then
|
||||||
|
encodethumbimm(oper[1]^.val)
|
||||||
|
else if oper[1]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
end
|
||||||
|
else if ops=3 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
|
||||||
|
if oper[2]^.typ=top_const then
|
||||||
|
encodethumbimm(oper[2]^.val)
|
||||||
|
else if oper[2]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 0);
|
||||||
|
end
|
||||||
|
else if ops=4 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 0);
|
||||||
|
|
||||||
|
if oper[3]^.typ=top_shifterop then
|
||||||
|
setthumbshift(3)
|
||||||
|
else if oper[3]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[3]^.reg) shl 12);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if oppostfix=PF_S then
|
||||||
|
bytes:=bytes or (1 shl 20)
|
||||||
|
else if oppostfix=PF_X then
|
||||||
|
bytes:=bytes or (1 shl 4)
|
||||||
|
else if oppostfix=PF_R then
|
||||||
|
bytes:=bytes or (1 shl 4);
|
||||||
|
end;
|
||||||
|
#$81: { Thumb-2: Dataprocessing misc }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
if ops=3 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
|
||||||
|
if oper[2]^.typ=top_const then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (oper[2]^.val and $FF);
|
||||||
|
bytes:=bytes or ((oper[2]^.val and $700) shr 8) shl 12;
|
||||||
|
bytes:=bytes or ((oper[2]^.val and $800) shr 11) shl 26;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else if ops=2 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
|
||||||
|
if oper[1]^.typ=top_const then
|
||||||
|
begin
|
||||||
|
offset:=oper[1]^.val;
|
||||||
|
end
|
||||||
|
else if oper[1]^.typ=top_ref then
|
||||||
|
begin
|
||||||
|
offset:=0;
|
||||||
|
currsym:=objdata.symbolref(oper[1]^.ref^.symbol);
|
||||||
|
if assigned(currsym) then
|
||||||
|
offset:=currsym.offset-insoffset-8;
|
||||||
|
offset:=offset+oper[1]^.ref^.offset;
|
||||||
|
|
||||||
|
offset:=offset;
|
||||||
|
end;
|
||||||
|
|
||||||
|
bytes:=bytes or (offset and $FF);
|
||||||
|
bytes:=bytes or ((offset and $700) shr 8) shl 12;
|
||||||
|
bytes:=bytes or ((offset and $800) shr 11) shl 26;
|
||||||
|
bytes:=bytes or ((offset and $F000) shr 12) shl 16;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if oppostfix=PF_S then
|
||||||
|
bytes:=bytes or (1 shl 20);
|
||||||
|
end;
|
||||||
|
#$82: { Thumb-2: Shifts }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
if oper[1]^.typ=top_reg then
|
||||||
|
begin
|
||||||
|
offset:=2;
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
offset:=1;
|
||||||
|
|
||||||
|
if oper[offset]^.typ=top_const then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (oper[offset]^.val and $3) shl 6;
|
||||||
|
bytes:=bytes or (oper[offset]^.val and $1C) shl 10;
|
||||||
|
end
|
||||||
|
else if oper[offset]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[offset]^.reg) shl 16);
|
||||||
|
|
||||||
|
if (ops>=(offset+2)) and
|
||||||
|
(oper[offset+1]^.typ=top_const) then
|
||||||
|
bytes:=bytes or (oper[offset+1]^.val and $1F);
|
||||||
|
|
||||||
|
if oppostfix=PF_S then
|
||||||
|
bytes:=bytes or (1 shl 20);
|
||||||
|
end;
|
||||||
|
#$84: { Thumb-2: Shifts(width-1) }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
if oper[1]^.typ=top_reg then
|
||||||
|
begin
|
||||||
|
offset:=2;
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
offset:=1;
|
||||||
|
|
||||||
|
if oper[offset]^.typ=top_const then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (oper[offset]^.val and $3) shl 6;
|
||||||
|
bytes:=bytes or (oper[offset]^.val and $1C) shl 10;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (ops>=(offset+2)) and
|
||||||
|
(oper[offset+1]^.typ=top_const) then
|
||||||
|
begin
|
||||||
|
if opcode in [A_BFI,A_BFC] then
|
||||||
|
i_field:=oper[offset+1]^.val+oper[offset]^.val-1
|
||||||
|
else
|
||||||
|
i_field:=oper[offset+1]^.val-1;
|
||||||
|
|
||||||
|
bytes:=bytes or (i_field and $1F);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if oppostfix=PF_S then
|
||||||
|
bytes:=bytes or (1 shl 20);
|
||||||
|
end;
|
||||||
|
#$83: { Thumb-2: Saturation }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (oper[1]^.val and $1F);
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 16);
|
||||||
|
|
||||||
|
if ops=4 then
|
||||||
|
setthumbshift(3,true);
|
||||||
|
end;
|
||||||
|
#$85: { Thumb-2: Long multiplications }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
if ops=4 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 12);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 16);
|
||||||
|
bytes:=bytes or (getsupreg(oper[3]^.reg) shl 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if oppostfix=PF_S then
|
||||||
|
bytes:=bytes or (1 shl 20)
|
||||||
|
else if oppostfix=PF_X then
|
||||||
|
bytes:=bytes or (1 shl 4);
|
||||||
|
end;
|
||||||
|
#$86: { Thumb-2: Extension ops }
|
||||||
|
begin
|
||||||
|
bytes:=0;
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
|
||||||
|
if ops=2 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
end
|
||||||
|
else if ops=3 then
|
||||||
|
begin
|
||||||
|
if oper[2]^.typ=top_shifterop then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
|
||||||
|
bytes:=bytes or ((oper[2]^.shifterop^.shiftimm shr 3) shl 4);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 0);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else if ops=4 then
|
||||||
|
begin
|
||||||
|
if oper[3]^.typ=top_shifterop then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 8);
|
||||||
|
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 16);
|
||||||
|
bytes:=bytes or (getsupreg(oper[2]^.reg) shl 0);
|
||||||
|
bytes:=bytes or ((oper[3]^.shifterop^.shiftimm shr 3) shl 4);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
#$87: { Thumb-2: PLD/PLI }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or ord(insentry^.code[4]);
|
||||||
|
{ set Rn and Rd }
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.ref^.base) shl 16;
|
||||||
|
if getregtype(oper[0]^.ref^.index)=R_INVALIDREGISTER then
|
||||||
|
begin
|
||||||
|
{ set offset }
|
||||||
|
offset:=0;
|
||||||
|
currsym:=objdata.symbolref(oper[0]^.ref^.symbol);
|
||||||
|
if assigned(currsym) then
|
||||||
|
offset:=currsym.offset-insoffset-8;
|
||||||
|
offset:=offset+oper[0]^.ref^.offset;
|
||||||
|
if offset>=0 then
|
||||||
|
begin
|
||||||
|
{ set U flag }
|
||||||
|
bytes:=bytes or (1 shl 23);
|
||||||
|
bytes:=bytes or (offset and $FFF);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or ($3 shl 10);
|
||||||
|
|
||||||
|
offset:=-offset;
|
||||||
|
bytes:=bytes or (offset and $FF);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.ref^.index);
|
||||||
|
{ set shift }
|
||||||
|
with oper[0]^.ref^ do
|
||||||
|
if shiftmode=SM_LSL then
|
||||||
|
bytes:=bytes or (shiftimm shl 4);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
#$88: { Thumb-2: LDR/STR }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[4]) shl 0);
|
||||||
|
{ set Rn and Rd }
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.reg) shl 12;
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.ref^.base) shl 16;
|
||||||
|
if getregtype(oper[1]^.ref^.index)=R_INVALIDREGISTER then
|
||||||
|
begin
|
||||||
|
{ set offset }
|
||||||
|
offset:=0;
|
||||||
|
currsym:=objdata.symbolref(oper[1]^.ref^.symbol);
|
||||||
|
if assigned(currsym) then
|
||||||
|
offset:=currsym.offset-insoffset-8;
|
||||||
|
offset:=(offset+oper[1]^.ref^.offset) shr ord(insentry^.code[5]);
|
||||||
|
if offset>=0 then
|
||||||
|
begin
|
||||||
|
if not (opcode in [A_LDRT,A_LDRSBT,A_LDRSHT,A_LDRBT,A_LDRHT]) then
|
||||||
|
bytes:=bytes or (1 shl 23);
|
||||||
|
{ set U flag }
|
||||||
|
if (oper[1]^.ref^.addressmode<>AM_OFFSET) then
|
||||||
|
bytes:=bytes or (1 shl 9);
|
||||||
|
bytes:=bytes or offset
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (1 shl 11);
|
||||||
|
|
||||||
|
offset:=-offset;
|
||||||
|
bytes:=bytes or offset
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
{ set I flag }
|
||||||
|
bytes:=bytes or (1 shl 25);
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.ref^.index);
|
||||||
|
{ set shift }
|
||||||
|
with oper[1]^.ref^ do
|
||||||
|
if shiftmode<>SM_None then
|
||||||
|
bytes:=bytes or (shiftimm shl 4);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if not (opcode in [A_LDRT,A_LDRSBT,A_LDRSHT,A_LDRBT,A_LDRHT]) then
|
||||||
|
begin
|
||||||
|
{ set W bit }
|
||||||
|
if oper[1]^.ref^.addressmode<>AM_OFFSET then
|
||||||
|
bytes:=bytes or (1 shl 8);
|
||||||
|
{ set P bit if necessary }
|
||||||
|
if oper[1]^.ref^.addressmode<>AM_POSTINDEXED then
|
||||||
|
bytes:=bytes or (1 shl 10);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
#$89: { Thumb-2: LDRD/STRD }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[4]) shl 0);
|
||||||
|
{ set Rn and Rd }
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.reg) shl 12;
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.reg) shl 8;
|
||||||
|
bytes:=bytes or getsupreg(oper[2]^.ref^.base) shl 16;
|
||||||
|
if getregtype(oper[2]^.ref^.index)=R_INVALIDREGISTER then
|
||||||
|
begin
|
||||||
|
{ set offset }
|
||||||
|
offset:=0;
|
||||||
|
currsym:=objdata.symbolref(oper[2]^.ref^.symbol);
|
||||||
|
if assigned(currsym) then
|
||||||
|
offset:=currsym.offset-insoffset-8;
|
||||||
|
offset:=(offset+oper[2]^.ref^.offset) div 4;
|
||||||
|
if offset>=0 then
|
||||||
|
begin
|
||||||
|
{ set U flag }
|
||||||
|
bytes:=bytes or (1 shl 23);
|
||||||
|
bytes:=bytes or offset
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
offset:=-offset;
|
||||||
|
bytes:=bytes or offset
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
message(asmw_e_invalid_opcode_and_operands);
|
||||||
|
end;
|
||||||
|
{ set W bit }
|
||||||
|
if oper[2]^.ref^.addressmode<>AM_OFFSET then
|
||||||
|
bytes:=bytes or (1 shl 21);
|
||||||
|
{ set P bit if necessary }
|
||||||
|
if oper[2]^.ref^.addressmode<>AM_POSTINDEXED then
|
||||||
|
bytes:=bytes or (1 shl 24);
|
||||||
|
end;
|
||||||
|
#$8A: { Thumb-2: LDREX }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[4]) shl 0);
|
||||||
|
{ set Rn and Rd }
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.reg) shl 12;
|
||||||
|
|
||||||
|
if (ops=2) and (opcode in [A_LDREX]) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.ref^.base) shl 16;
|
||||||
|
if getregtype(oper[1]^.ref^.index)=R_INVALIDREGISTER then
|
||||||
|
begin
|
||||||
|
{ set offset }
|
||||||
|
offset:=0;
|
||||||
|
currsym:=objdata.symbolref(oper[1]^.ref^.symbol);
|
||||||
|
if assigned(currsym) then
|
||||||
|
offset:=currsym.offset-insoffset-8;
|
||||||
|
offset:=(offset+oper[1]^.ref^.offset) div 4;
|
||||||
|
if offset>=0 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or offset
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
message(asmw_e_invalid_opcode_and_operands);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
message(asmw_e_invalid_opcode_and_operands);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else if (ops=2) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.ref^.base) shl 16;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.reg) shl 8;
|
||||||
|
bytes:=bytes or getsupreg(oper[2]^.ref^.base) shl 16;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
#$8B: { Thumb-2: STREX }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[4]) shl 0);
|
||||||
|
{ set Rn and Rd }
|
||||||
|
if (ops=3) and (opcode in [A_STREX]) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.reg) shl 8;
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.reg) shl 12;
|
||||||
|
bytes:=bytes or getsupreg(oper[2]^.ref^.base) shl 16;
|
||||||
|
if getregtype(oper[2]^.ref^.index)=R_INVALIDREGISTER then
|
||||||
|
begin
|
||||||
|
{ set offset }
|
||||||
|
offset:=0;
|
||||||
|
currsym:=objdata.symbolref(oper[2]^.ref^.symbol);
|
||||||
|
if assigned(currsym) then
|
||||||
|
offset:=currsym.offset-insoffset-8;
|
||||||
|
offset:=(offset+oper[2]^.ref^.offset) div 4;
|
||||||
|
if offset>=0 then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or offset
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
message(asmw_e_invalid_opcode_and_operands);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
message(asmw_e_invalid_opcode_and_operands);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else if (ops=3) then
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.reg) shl 0;
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.reg) shl 12;
|
||||||
|
bytes:=bytes or getsupreg(oper[2]^.ref^.base) shl 16;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or getsupreg(oper[0]^.reg) shl 0;
|
||||||
|
bytes:=bytes or getsupreg(oper[1]^.reg) shl 12;
|
||||||
|
bytes:=bytes or getsupreg(oper[2]^.reg) shl 8;
|
||||||
|
bytes:=bytes or getsupreg(oper[3]^.ref^.base) shl 16;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
#$8C: { Thumb-2: LDM/STM }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[4]) shl 0);
|
||||||
|
|
||||||
|
if oper[0]^.typ=top_reg then
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 16)
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
bytes:=bytes or (getsupreg(oper[0]^.ref^.base) shl 16);
|
||||||
|
if oper[0]^.ref^.addressmode<>AM_OFFSET then
|
||||||
|
bytes:=bytes or (1 shl 21);
|
||||||
|
end;
|
||||||
|
|
||||||
|
for r:=0 to 15 do
|
||||||
|
if r in oper[1]^.regset^ then
|
||||||
|
bytes:=bytes or (1 shl r);
|
||||||
|
|
||||||
|
case oppostfix of
|
||||||
|
PF_None,PF_IA,PF_FD: bytes:=bytes or ($1 shl 23);
|
||||||
|
PF_DB,PF_EA: bytes:=bytes or ($2 shl 23);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
#$8D: { Thumb-2: BL/BLX }
|
||||||
|
begin
|
||||||
|
{ set instruction code }
|
||||||
|
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
|
||||||
|
bytes:=bytes or (ord(insentry^.code[2]) shl 8);
|
||||||
|
{ set offset }
|
||||||
|
if oper[0]^.typ=top_const then
|
||||||
|
offset:=(oper[0]^.val shr 1) and $FFFFFF
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
currsym:=objdata.symbolref(oper[0]^.ref^.symbol);
|
||||||
|
if (currsym.bind<>AB_LOCAL) and (currsym.objsection<>objdata.CurrObjSec) then
|
||||||
|
begin
|
||||||
|
objdata.writereloc(oper[0]^.ref^.offset,0,currsym,RELOC_RELATIVE_24);
|
||||||
|
offset:=$FFFFFF
|
||||||
|
end
|
||||||
|
else
|
||||||
|
offset:=((currsym.offset-insoffset-8) shr 1) and $FFFFFF;
|
||||||
|
end;
|
||||||
|
|
||||||
|
bytes:=bytes or ((offset shr 00) and $7FF) shl 0;
|
||||||
|
bytes:=bytes or ((offset shr 11) and $3FF) shl 16;
|
||||||
|
bytes:=bytes or (((offset shr 21) xor (offset shr 23) xor 1) and $1) shl 11;
|
||||||
|
bytes:=bytes or (((offset shr 22) xor (offset shr 23) xor 1) and $1) shl 13;
|
||||||
|
bytes:=bytes or ((offset shr 23) and $1) shl 26;
|
||||||
|
end;
|
||||||
#$fe: // No written data
|
#$fe: // No written data
|
||||||
begin
|
begin
|
||||||
exit;
|
exit;
|
||||||
@ -4134,6 +4769,11 @@ implementation
|
|||||||
internalerror(2005091102);
|
internalerror(2005091102);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ Todo: Decide whether the code above should take care of writing data in an order that makes senes }
|
||||||
|
if (insentry^.code[0] in [#$80..#$90]) and (bytelen=4) then
|
||||||
|
bytes:=((bytes shr 16) and $FFFF) or ((bytes and $FFFF) shl 16);
|
||||||
|
|
||||||
{ we're finished, write code }
|
{ we're finished, write code }
|
||||||
objdata.writebytes(bytes,bytelen);
|
objdata.writebytes(bytes,bytelen);
|
||||||
end;
|
end;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
'none',
|
'none',
|
||||||
'adc',
|
'adc',
|
||||||
'add',
|
'add',
|
||||||
|
'addw',
|
||||||
'adf',
|
'adf',
|
||||||
'adr',
|
'adr',
|
||||||
'and',
|
'and',
|
||||||
@ -51,6 +52,7 @@
|
|||||||
'mvn',
|
'mvn',
|
||||||
'vmov',
|
'vmov',
|
||||||
'nop',
|
'nop',
|
||||||
|
'orn',
|
||||||
'orr',
|
'orr',
|
||||||
'rsb',
|
'rsb',
|
||||||
'rsc',
|
'rsc',
|
||||||
@ -107,9 +109,7 @@
|
|||||||
'ldrht',
|
'ldrht',
|
||||||
'strht',
|
'strht',
|
||||||
'ldrsbt',
|
'ldrsbt',
|
||||||
'strsbt',
|
|
||||||
'ldrsht',
|
'ldrsht',
|
||||||
'strsht',
|
|
||||||
'fstd',
|
'fstd',
|
||||||
'fstm',
|
'fstm',
|
||||||
'fsts',
|
'fsts',
|
||||||
|
@ -88,6 +88,10 @@ void void none
|
|||||||
[ADCcc]
|
[ADCcc]
|
||||||
reglo,reglo \x60\x41\x40 THUMB,ARMv4T
|
reglo,reglo \x60\x41\x40 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF1\x40\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEB\x40\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEB\x40\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \4\x0\xA0 ARM32,ARMv4
|
reg32,reg32,reg32 \4\x0\xA0 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \6\x0\xA0 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \6\x0\xA0 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \7\x2\xA0 ARM32,ARMv4
|
reg32,reg32,immshifter \7\x2\xA0 ARM32,ARMv4
|
||||||
@ -104,10 +108,17 @@ regsp,regsp,immshifter \x64\xB0\x00 THUMB,ARMv4T
|
|||||||
reg32,regsp,reg32 \x64\x44\x68 THUMB,ARMv4T
|
reg32,regsp,reg32 \x64\x44\x68 THUMB,ARMv4T
|
||||||
regsp,reg32 \x64\x44\x85 THUMB,ARMv4T
|
regsp,reg32 \x64\x44\x85 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF1\x0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEB\x0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEB\x0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \4\x0\x80 ARM32,ARMv4
|
reg32,reg32,reg32 \4\x0\x80 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \6\x0\x80 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \6\x0\x80 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \7\x2\x80 ARM32,ARMv4
|
reg32,reg32,immshifter \7\x2\x80 ARM32,ARMv4
|
||||||
|
|
||||||
|
[ADDWcc]
|
||||||
|
reg32,reg32,immshifter \x81\xF2\x0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
[ADFcc]
|
[ADFcc]
|
||||||
|
|
||||||
[ADRcc]
|
[ADRcc]
|
||||||
@ -115,11 +126,20 @@ reg32,reg32,immshifter \7\x2\x80 ARM32,ARMv4
|
|||||||
;reg32,imm32 \x33\x2\x0F ARM32,ARMv4
|
;reg32,imm32 \x33\x2\x0F ARM32,ARMv4
|
||||||
reglo,immshifter \x67\xA0\x0\2 THUMB,ARMv4T
|
reglo,immshifter \x67\xA0\x0\2 THUMB,ARMv4T
|
||||||
reglo,memam6 \x67\xA0\x0\2 THUMB,ARMv4T
|
reglo,memam6 \x67\xA0\x0\2 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,imm32 \x81\xF2\xAF\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,immshifter \x81\xF2\xAF\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,memam2 \x81\xF2\xAF\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,memam2 \x33\x2\x0F ARM32,ARMv4
|
reg32,memam2 \x33\x2\x0F ARM32,ARMv4
|
||||||
|
|
||||||
[ANDcc]
|
[ANDcc]
|
||||||
reglo,reglo \x60\x40\x00 THUMB,ARMv4T
|
reglo,reglo \x60\x40\x00 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF0\x0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEA\x0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\x0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x4\x0\x00 ARM32,ARMv4
|
reg32,reg32,reg32 \x4\x0\x00 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \x6\x0\x00 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \x6\x0\x00 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x7\x2\x00 ARM32,ARMv4
|
reg32,reg32,immshifter \x7\x2\x00 ARM32,ARMv4
|
||||||
@ -139,17 +159,29 @@ mem32 \x1\x0A ARM32,ARMv4
|
|||||||
[BICcc]
|
[BICcc]
|
||||||
reglo,reglo \x60\x43\x80 THUMB,ARMv4T
|
reglo,reglo \x60\x43\x80 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF0\x20\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEA\x20\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\x20\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x6\x1\xC0 ARM32,ARMv4
|
reg32,reg32,reg32 \x6\x1\xC0 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \x6\x1\xC0 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \x6\x1\xC0 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x7\x3\xC0 ARM32,ARMv4
|
reg32,reg32,immshifter \x7\x3\xC0 ARM32,ARMv4
|
||||||
|
|
||||||
[BLcc]
|
[BLcc]
|
||||||
|
imm24 \x8D\xF0\xD0 THUMB32,ARMv6T2
|
||||||
|
immshifter \x8D\xF0\xD0 THUMB32,ARMv6T2
|
||||||
|
mem32 \x8D\xF0\xD0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
imm24 \x1\x0B ARM32,ARMv4
|
imm24 \x1\x0B ARM32,ARMv4
|
||||||
mem32 \x1\x0B ARM32,ARMv4
|
mem32 \x1\x0B ARM32,ARMv4
|
||||||
|
|
||||||
[BLX]
|
[BLX]
|
||||||
reg32 \x62\x47\x80 THUMB,ARMv4T
|
reg32 \x62\x47\x80 THUMB,ARMv4T
|
||||||
|
|
||||||
|
immshifter \x8D\xF0\xC0 THUMB32,ARMv6T2
|
||||||
|
imm24 \x8D\xF0\xC0 THUMB32,ARMv6T2
|
||||||
|
mem32 \x8D\xF0\xC0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
imm24 \x28\xFA ARM32,ARMv5T
|
imm24 \x28\xFA ARM32,ARMv5T
|
||||||
mem32 \x28\xFA ARM32,ARMv5T
|
mem32 \x28\xFA ARM32,ARMv5T
|
||||||
reg32 \3\x01\x2F\xFF\x30 ARM32,ARMv5T
|
reg32 \3\x01\x2F\xFF\x30 ARM32,ARMv5T
|
||||||
@ -170,6 +202,10 @@ reg8,reg8 \300\1\x10\101 ARM32,ARMv4
|
|||||||
[CMNcc]
|
[CMNcc]
|
||||||
reglo,reglo \x60\x42\xC0 THUMB,ARMv4T
|
reglo,reglo \x60\x42\xC0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,immshifter \x80\xF1\x10\x0F\x00 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32 \x80\xEB\x10\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x80\xEB\x10\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \xC\x1\x60 ARM32,ARMv4
|
reg32,reg32 \xC\x1\x60 ARM32,ARMv4
|
||||||
reg32,reg32,shifterop \xE\x1\x60 ARM32,ARMv4
|
reg32,reg32,shifterop \xE\x1\x60 ARM32,ARMv4
|
||||||
reg32,immshifter \xF\x1\x60 ARM32,ARMv4
|
reg32,immshifter \xF\x1\x60 ARM32,ARMv4
|
||||||
@ -180,6 +216,10 @@ reg32,reg32 \x61\x45\x0 THUMB,ARMv4T
|
|||||||
|
|
||||||
reglo,immshifter \x60\x28\x0 THUMB,ARMv4T
|
reglo,immshifter \x60\x28\x0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,immshifter \x80\xF1\xB0\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32 \x80\xEB\xB0\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x80\xEB\xB0\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \xC\x1\x40 ARM32,ARMv4
|
reg32,reg32 \xC\x1\x40 ARM32,ARMv4
|
||||||
reg32,reg32,shifterop \xE\x1\x40 ARM32,ARMv4
|
reg32,reg32,shifterop \xE\x1\x40 ARM32,ARMv4
|
||||||
reg32,immshifter \xF\x3\x40 ARM32,ARMv4
|
reg32,immshifter \xF\x3\x40 ARM32,ARMv4
|
||||||
@ -196,6 +236,7 @@ reg32,immshifter \xF\x3\x40 ARM32,ARMv4
|
|||||||
reg32,imm8,fpureg \xF0\x02\x01 FPA
|
reg32,imm8,fpureg \xF0\x02\x01 FPA
|
||||||
|
|
||||||
[CLZcc]
|
[CLZcc]
|
||||||
|
reg32,reg32 \x80\xFA\xB0\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32 \x32\x01\x6F\xF\x10 ARM32,ARMv4
|
reg32,reg32 \x32\x01\x6F\xF\x10 ARM32,ARMv4
|
||||||
|
|
||||||
[CPS]
|
[CPS]
|
||||||
@ -205,6 +246,10 @@ reg32,reg32 \x32\x01\x6F\xF\x10 ARM32,ARMv4
|
|||||||
[EORcc]
|
[EORcc]
|
||||||
reglo,reglo \x60\x40\x40 THUMB,ARMv4T
|
reglo,reglo \x60\x40\x40 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF0\x80\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEA\x80\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\x80\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \4\x0\x20 ARM32,ARMv4
|
reg32,reg32,reg32 \4\x0\x20 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \6\x0\x20 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \6\x0\x20 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \7\x2\x20 ARM32,ARMv4
|
reg32,reg32,immshifter \7\x2\x20 ARM32,ARMv4
|
||||||
@ -216,16 +261,21 @@ reg32,reg32 \321\300\1\x11\101 ARM32,ARMv4
|
|||||||
memam4,reglist \x69\xC8 THUMB,ARMv4T
|
memam4,reglist \x69\xC8 THUMB,ARMv4T
|
||||||
reglo,reglist \x69\xC8 THUMB,ARMv4T
|
reglo,reglist \x69\xC8 THUMB,ARMv4T
|
||||||
|
|
||||||
|
memam4,reglist \x8C\xE8\x10\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reglist \x8C\xE8\x10\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
memam4,reglist \x26\x81 ARM32,ARMv4
|
memam4,reglist \x26\x81 ARM32,ARMv4
|
||||||
reg32,reglist \x26\x81 ARM32,ARMv4
|
reg32,reglist \x26\x81 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRBTcc]
|
[LDRBTcc]
|
||||||
reg32,memam2 \x17\x04\x70 ARM32,ARMv4
|
reg32,memam2 \x88\xF8\x10\xE\x0\0 THUMB32,ARMv6T2
|
||||||
reg32,immshifter \x17\x04\x70 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x70 ARM32,ARMv4
|
||||||
|
reg32,immshifter \x17\x04\x70 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRBcc]
|
[LDRBcc]
|
||||||
reglo,memam3 \x65\x5C\x0\0 THUMB,ARMv4T
|
reglo,memam3 \x65\x5C\x0\0 THUMB,ARMv4T
|
||||||
reglo,memam4 \x66\x78\x0\0 THUMB,ARMv4T
|
reglo,memam4 \x66\x78\x0\0 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF8\x10\x0\x0\0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,memam2 \x17\x04\x50 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x50 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRcc]
|
[LDRcc]
|
||||||
@ -233,29 +283,30 @@ reglo,memam3 \x65\x58\x0\2 THUMB,ARMv4T
|
|||||||
reglo,memam4 \x66\x68\x0\2 THUMB,ARMv4T
|
reglo,memam4 \x66\x68\x0\2 THUMB,ARMv4T
|
||||||
reglo,memam5 \x67\x98\x0\2 THUMB,ARMv4T
|
reglo,memam5 \x67\x98\x0\2 THUMB,ARMv4T
|
||||||
reglo,memam6 \x67\x48\x0\2 THUMB,ARMv4T
|
reglo,memam6 \x67\x48\x0\2 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF8\x50\x0\x0\0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,memam2 \x17\x04\x10 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x10 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRHcc]
|
[LDRHcc]
|
||||||
reglo,memam3 \x65\x5A\x0\1 THUMB,ARMv4T
|
reglo,memam3 \x65\x5A\x0\1 THUMB,ARMv4T
|
||||||
reglo,memam4 \x66\x88\x0\1 THUMB,ARMv4T
|
reglo,memam4 \x66\x88\x0\1 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF8\x30\x0\x0\0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,memam2 \x22\x10\xB0 ARM32,ARMv4
|
reg32,memam2 \x22\x10\xB0 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRSBcc]
|
[LDRSBcc]
|
||||||
reglo,memam3 \x65\x56\x0\0 THUMB,ARMv4T
|
reglo,memam3 \x65\x56\x0\0 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF9\x10\x0\x0\0 THUMB32,ARMv6T2
|
||||||
reg32,memam2 \x22\x10\xD0 ARM32,ARMv4
|
reg32,memam2 \x22\x10\xD0 ARM32,ARMv4
|
||||||
reg32,reg32 \x23\x50\xD0 ARM32,ARMv4
|
reg32,reg32 \x23\x50\xD0 ARM32,ARMv4
|
||||||
reg32,reg32,imm32 \x24\x50\xD0 ARM32,ARMv4
|
reg32,reg32,imm32 \x24\x50\xD0 ARM32,ARMv4
|
||||||
reg32,reg32,reg32 \x25\x10\xD0 ARM32,ARMv4
|
reg32,reg32,reg32 \x25\x10\xD0 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRSHcc]
|
[LDRSHcc]
|
||||||
reglo,memam3 \x65\x5E\x0\1 THUMB,ARMv4T
|
reglo,memam3 \x65\x5E\x0\1 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF9\x30\x0\x0\0 THUMB32,ARMv6T2
|
||||||
reg32,memam2 \x22\x10\xF0 ARM32,ARMv4
|
reg32,memam2 \x22\x10\xF0 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRTcc]
|
[LDRTcc]
|
||||||
|
reg32,memam2 \x88\xF8\x50\xE\x0\0 THUMB32,ARMv6T2
|
||||||
reg32,memam2 \x17\x04\x30 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x30 ARM32,ARMv4
|
||||||
|
|
||||||
[MCRcc]
|
[MCRcc]
|
||||||
@ -287,6 +338,7 @@ regf,immshifter,reg32,reg32,regf \x1D\xC\x50\x0 ARM32,ARMv5TE
|
|||||||
regf,immshifter,reg32,reg32,regf \x1D\xFC\x50\x0 ARM32,ARMv6
|
regf,immshifter,reg32,reg32,regf \x1D\xFC\x50\x0 ARM32,ARMv6
|
||||||
|
|
||||||
[MLAcc]
|
[MLAcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x0\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x00\x20\x9 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \x15\x00\x20\x9 ARM32,ARMv4
|
||||||
|
|
||||||
[MOVcc]
|
[MOVcc]
|
||||||
@ -295,6 +347,10 @@ reg32,reg32 \x61\x46\xC0 THUMB,ARMv4T
|
|||||||
|
|
||||||
reglo,immshifter \x60\x20\x0 THUMB,ARMv4T
|
reglo,immshifter \x60\x20\x0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,immshifter \x80\xF0\x4F\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
|
reg32,reg32 \x80\xEA\x4F\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,shifterop \x8\x1\xA0 ARM32,ARMv4
|
reg32,shifterop \x8\x1\xA0 ARM32,ARMv4
|
||||||
reg32,reg32,shifterop \xA\x1\xA0 ARM32,ARMv4
|
reg32,reg32,shifterop \xA\x1\xA0 ARM32,ARMv4
|
||||||
reg32,immshifter \xB\x1\xA0 ARM32,ARMv4
|
reg32,immshifter \xB\x1\xA0 ARM32,ARMv4
|
||||||
@ -308,7 +364,7 @@ regf,immshifter \x13\x03\x28\xF0 ARM32,ARMv4
|
|||||||
|
|
||||||
[MULcc]
|
[MULcc]
|
||||||
reglo,reglo,reglo \x64\x43\x40 THUMB,ARMv4T
|
reglo,reglo,reglo \x64\x43\x40 THUMB,ARMv4T
|
||||||
|
reg32,reg32,reg32 \x80\xFB\x00\xF0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x14\x00\x00\x90 ARM32,ARMv4
|
reg32,reg32,reg32 \x14\x00\x00\x90 ARM32,ARMv4
|
||||||
|
|
||||||
[MVFcc]
|
[MVFcc]
|
||||||
@ -318,6 +374,9 @@ fpureg,immfpu \xF2 FPA
|
|||||||
[MVNcc]
|
[MVNcc]
|
||||||
reglo,reglo \x60\x43\xc0 THUMB,ARMv4T
|
reglo,reglo \x60\x43\xc0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,immshifter \x80\xF0\x6F\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32 \x80\xEA\x6F\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x8\x1\xE0 ARM32,ARMv4
|
reg32,reg32 \x8\x1\xE0 ARM32,ARMv4
|
||||||
reg32,reg32,shifterop \xA\x1\xE0 ARM32,ARMv4
|
reg32,reg32,shifterop \xA\x1\xE0 ARM32,ARMv4
|
||||||
reg32,immshifter \xB\x1\xE0 ARM32,ARMv4
|
reg32,immshifter \xB\x1\xE0 ARM32,ARMv4
|
||||||
@ -338,16 +397,29 @@ vreg,reg32,reg32 \x40\xC\x40\xB\x10 ARM32,VFPv2
|
|||||||
void \x61\xBF\x0 THUMB,ARMv6T2
|
void \x61\xBF\x0 THUMB,ARMv6T2
|
||||||
void \x2F\x03\x20\xF0\x0 ARM32,ARMv6K
|
void \x2F\x03\x20\xF0\x0 ARM32,ARMv6K
|
||||||
|
|
||||||
|
[ORNcc]
|
||||||
|
reg32,reg32,immshifter \x80\xF0\x60\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEA\x60\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\x60\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
[ORRcc]
|
[ORRcc]
|
||||||
reglo,reglo \x60\x43\x00 THUMB,ARMv4T
|
reglo,reglo \x60\x43\x00 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF0\x40\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEA\x40\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\x40\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \4\x1\x80 ARM32,ARMv4
|
reg32,reg32,reg32 \4\x1\x80 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,reg32 \5\x1\x80 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \5\x1\x80 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \6\x1\x80 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \6\x1\x80 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \7\x3\x80 ARM32,ARMv4
|
reg32,reg32,immshifter \7\x3\x80 ARM32,ARMv4
|
||||||
|
|
||||||
[RSBcc]
|
[RSBcc]
|
||||||
reglo,reglo,immshifter \x60\x42\x40 THUMB,ARMv4T
|
reglo,reglo,immzero \x60\x42\x40 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF1\xC0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEB\xC0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEB\xC0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \6\x0\x60 ARM32,ARMv4
|
reg32,reg32,reg32 \6\x0\x60 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,shifterop \6\x0\x60 ARM32,ARMv4
|
reg32,reg32,reg32,shifterop \6\x0\x60 ARM32,ARMv4
|
||||||
@ -362,6 +434,10 @@ reg32,reg32,immshifter \7\x2\xE0 ARM32,ARMv4
|
|||||||
[SBCcc]
|
[SBCcc]
|
||||||
reglo,reglo \x60\x41\x80 THUMB,ARMv4T
|
reglo,reglo \x60\x41\x80 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF1\x60\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEB\x60\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEB\x60\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \4\x0\xC0 ARM32,ARMv4
|
reg32,reg32,reg32 \4\x0\xC0 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,reg32 \5\x0\xC0 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \5\x0\xC0 ARM32,ARMv4
|
||||||
reg32,reg32,reg32,imm \6\x0\xC0 ARM32,ARMv4
|
reg32,reg32,reg32,imm \6\x0\xC0 ARM32,ARMv4
|
||||||
@ -374,15 +450,20 @@ reg32,imm8,fpureg \xF0\x02\x00 FPA
|
|||||||
[SINcc]
|
[SINcc]
|
||||||
|
|
||||||
[SMLALcc]
|
[SMLALcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\xC0\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x00\xE0\x9 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \x16\x00\xE0\x9 ARM32,ARMv4
|
||||||
|
|
||||||
[SMULLcc]
|
[SMULLcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\x80\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x00\xC0\x9 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \x16\x00\xC0\x9 ARM32,ARMv4
|
||||||
|
|
||||||
[STMcc]
|
[STMcc]
|
||||||
memam4,reglist \x69\xC0 THUMB,ARMv4T
|
memam4,reglist \x69\xC0 THUMB,ARMv4T
|
||||||
reglo,reglist \x69\xC0 THUMB,ARMv4T
|
reglo,reglist \x69\xC0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
memam4,reglist \x8C\xE8\x00\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reglist \x8C\xE8\x00\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
memam4,reglist \x26\x80 ARM32,ARMv4
|
memam4,reglist \x26\x80 ARM32,ARMv4
|
||||||
reg32,reglist \x26\x80 ARM32,ARMv4
|
reg32,reglist \x26\x80 ARM32,ARMv4
|
||||||
|
|
||||||
@ -390,26 +471,28 @@ reg32,reglist \x26\x80 ARM32,ARMv4
|
|||||||
reglo,memam3 \x65\x50\x0\2 THUMB,ARMv4T
|
reglo,memam3 \x65\x50\x0\2 THUMB,ARMv4T
|
||||||
reglo,memam4 \x66\x60\x0\2 THUMB,ARMv4T
|
reglo,memam4 \x66\x60\x0\2 THUMB,ARMv4T
|
||||||
reglo,memam5 \x67\x90\x0\2 THUMB,ARMv4T
|
reglo,memam5 \x67\x90\x0\2 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF8\x40\x0\x0\0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,memam2 \x17\x04\x00 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x00 ARM32,ARMv4
|
||||||
|
|
||||||
[STRBcc]
|
[STRBcc]
|
||||||
reglo,memam3 \x65\x54\x0\0 THUMB,ARMv4T
|
reglo,memam3 \x65\x54\x0\0 THUMB,ARMv4T
|
||||||
reglo,memam4 \x66\x70\x0\0 THUMB,ARMv4T
|
reglo,memam4 \x66\x70\x0\0 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF8\x00\x0\x0\0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,memam2 \x17\x04\x40 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x40 ARM32,ARMv4
|
||||||
|
|
||||||
[STRBTcc]
|
[STRBTcc]
|
||||||
reg32,memam2 \x17\x04\x60 ARM32,ARMv4
|
reg32,memam2 \x88\xF8\x00\xE\x0\0 THUMB32,ARMv6T2
|
||||||
reg32,immshifter \x17\x04\x60 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x60 ARM32,ARMv4
|
||||||
|
reg32,immshifter \x17\x04\x60 ARM32,ARMv4
|
||||||
|
|
||||||
[STRHcc]
|
[STRHcc]
|
||||||
reglo,memam3 \x65\x52\x0\1 THUMB,ARMv4T
|
reglo,memam3 \x65\x52\x0\1 THUMB,ARMv4T
|
||||||
reglo,memam4 \x66\x80\x0\1 THUMB,ARMv4T
|
reglo,memam4 \x66\x80\x0\1 THUMB,ARMv4T
|
||||||
|
reg32,memam2 \x88\xF8\x20\x0\x0\0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,memam2 \x22\x00\xB0 ARM32,ARMv4
|
reg32,memam2 \x22\x00\xB0 ARM32,ARMv4
|
||||||
|
|
||||||
[STRTcc]
|
[STRTcc]
|
||||||
|
reg32,memam2 \x88\xF8\x40\xE\x0\0 THUMB32,ARMv6T2
|
||||||
reg32,memam2 \x17\x04\x20 ARM32,ARMv4
|
reg32,memam2 \x17\x04\x20 ARM32,ARMv4
|
||||||
|
|
||||||
[SUBcc]
|
[SUBcc]
|
||||||
@ -419,6 +502,10 @@ reglo,reglo,reglo \x60\x1A\x0 THUMB,ARMv4T
|
|||||||
reglo,reglo,immshifter \x60\x1E\x0 THUMB,ARMv4T
|
reglo,reglo,immshifter \x60\x1E\x0 THUMB,ARMv4T
|
||||||
reglo,imm8 \x60\x38\x0 THUMB,ARMv4T
|
reglo,imm8 \x60\x38\x0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x80\xF1\xA0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xEB\xA0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEB\xA0\x0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,shifterop \x4\x0\x40 ARM32,ARMv4
|
reg32,reg32,shifterop \x4\x0\x40 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x4\x0\x40 ARM32,ARMv4
|
reg32,reg32,immshifter \x4\x0\x40 ARM32,ARMv4
|
||||||
reg32,reg32,reg32 \x4\x0\x40 ARM32,ARMv4
|
reg32,reg32,reg32 \x4\x0\x40 ARM32,ARMv4
|
||||||
@ -435,6 +522,10 @@ reg32,reg32,memam2 \x27\x10\x09 ARM32,ARMv4
|
|||||||
reg32,reg32,memam2 \x27\x14\x09 ARM32,ARMv4
|
reg32,reg32,memam2 \x27\x14\x09 ARM32,ARMv4
|
||||||
|
|
||||||
[TEQcc]
|
[TEQcc]
|
||||||
|
reg32,immshifter \x80\xF0\x90\x0F\x00 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32 \x80\xEA\x90\x0F\x00 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x80\xEA\x90\x0F\x00 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \xC\x1\x20 ARM32,ARMv4
|
reg32,reg32 \xC\x1\x20 ARM32,ARMv4
|
||||||
reg32,reg32,reg32 \xD\x1\x20 ARM32,ARMv4
|
reg32,reg32,reg32 \xD\x1\x20 ARM32,ARMv4
|
||||||
reg32,reg32,shifterop \xE\x1\x20 ARM32,ARMv4
|
reg32,reg32,shifterop \xE\x1\x20 ARM32,ARMv4
|
||||||
@ -443,39 +534,52 @@ reg32,immshifter \xF\x3\x20 ARM32,ARMv4
|
|||||||
[TSTcc]
|
[TSTcc]
|
||||||
reglo,reglo \x60\x42\x00 THUMB,ARMv4T
|
reglo,reglo \x60\x42\x00 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,immshifter \x80\xF0\x10\x0F\x00 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32 \x80\xEA\x10\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x80\xEA\x10\x0F\x00 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \xC\x1\x00 ARM32,ARMv4
|
reg32,reg32 \xC\x1\x00 ARM32,ARMv4
|
||||||
reg32,reg32,reg32 \xD\x1\x00 ARM32,ARMv4
|
reg32,reg32,reg32 \xD\x1\x00 ARM32,ARMv4
|
||||||
reg32,reg32,shifterop \xE\x1\x00 ARM32,ARMv4
|
reg32,reg32,shifterop \xE\x1\x00 ARM32,ARMv4
|
||||||
reg32,immshifter \xF\x3\x00 ARM32,ARMv4
|
reg32,immshifter \xF\x3\x00 ARM32,ARMv4
|
||||||
|
|
||||||
[UMLALcc]
|
[UMLALcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\xE0\x0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x00\xA0\x9 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \x16\x00\xA0\x9 ARM32,ARMv4
|
||||||
|
|
||||||
[UMULLcc]
|
[UMULLcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\xA0\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x00\x80\x9 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \x16\x00\x80\x9 ARM32,ARMv4
|
||||||
|
|
||||||
[WFScc]
|
[WFScc]
|
||||||
|
|
||||||
; EDSP instructions
|
; EDSP instructions
|
||||||
[LDRDcc]
|
[LDRDcc]
|
||||||
reg32,reg32,memam2 \x19\x0\x0\x0\xD0 ARM32,ARMv4
|
reg32,reg32,memam2 \x89\xE8\x50\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,memam2 \x19\x0\x0\x0\xD0 ARM32,ARMv4
|
||||||
|
|
||||||
[PLD]
|
[PLD]
|
||||||
|
memam2 \x87\xF8\x10\xF0\x0 THUMB32,ARMv6T2
|
||||||
memam2 \x25\xF5\x50\xF0\x0 ARM32,ARMv5TE
|
memam2 \x25\xF5\x50\xF0\x0 ARM32,ARMv5TE
|
||||||
|
|
||||||
[PLDW]
|
[PLDW]
|
||||||
|
memam2 \x87\xF8\x30\xF0\x0 THUMB32,ARMv7
|
||||||
memam2 \x25\xF5\x10\xF0\x0 ARM32,ARMv7
|
memam2 \x25\xF5\x10\xF0\x0 ARM32,ARMv7
|
||||||
|
|
||||||
[QADDcc]
|
[QADDcc]
|
||||||
|
reg32,reg32,reg32 \x82\xFA\x80\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x1A\x01\x00\x05 ARM32,ARMv5TE
|
reg32,reg32,reg32 \x1A\x01\x00\x05 ARM32,ARMv5TE
|
||||||
|
|
||||||
[QDADDcc]
|
[QDADDcc]
|
||||||
|
reg32,reg32,reg32 \x82\xFA\x80\xF0\x90 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x1A\x01\x40\x05 ARM32,ARMv5TE
|
reg32,reg32,reg32 \x1A\x01\x40\x05 ARM32,ARMv5TE
|
||||||
|
|
||||||
[QDSUBcc]
|
[QDSUBcc]
|
||||||
|
reg32,reg32,reg32 \x82\xFA\x80\xF0\xB0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x1A\x01\x60\x05 ARM32,ARMv5TE
|
reg32,reg32,reg32 \x1A\x01\x60\x05 ARM32,ARMv5TE
|
||||||
|
|
||||||
[QSUBcc]
|
[QSUBcc]
|
||||||
|
reg32,reg32,reg32 \x82\xFA\x80\xF0\xA0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x1A\x01\x20\x05 ARM32,ARMv5TE
|
reg32,reg32,reg32 \x1A\x01\x20\x05 ARM32,ARMv5TE
|
||||||
|
|
||||||
[SMLABBcc]
|
[SMLABBcc]
|
||||||
@ -545,24 +649,25 @@ reg32,reg32,reg32 \x14\x1\x20\xA0 ARM32,ARMv5TE
|
|||||||
reg32,reg32,reg32 \x14\x1\x20\xE0 ARM32,ARMv5TE
|
reg32,reg32,reg32 \x14\x1\x20\xE0 ARM32,ARMv5TE
|
||||||
|
|
||||||
[STRDcc]
|
[STRDcc]
|
||||||
reg32,reg32,memam2 \x19\x0\x0\x0\xF0 ARM32,ARMv4
|
reg32,reg32,memam2 \x89\xE8\x40\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,memam2 \x19\x0\x0\x0\xF0 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRHTcc]
|
[LDRHTcc]
|
||||||
reg32,memam2 \x19\x0\x30\x0\xB0 ARM32,ARMv4
|
reg32,memam2 \x88\xF8\x30\xE\x0\0 THUMB32,ARMv6T2
|
||||||
|
reg32,memam2 \x19\x0\x30\x0\xB0 ARM32,ARMv4
|
||||||
|
|
||||||
[STRHTcc]
|
[STRHTcc]
|
||||||
reg32,memam2 \x1E\x0\x20\x0\xB0 ARM32,ARMv4
|
reg32,memam2 \x88\xF8\x20\xE\x0\0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,memam2 \x88\xF8\x20\xE\x0\0 THUMB32,ARMv6T2
|
||||||
|
reg32,memam2 \x1E\x0\x20\x0\xB0 ARM32,ARMv4
|
||||||
|
|
||||||
[LDRSBTcc]
|
[LDRSBTcc]
|
||||||
reg32,memam2 \x1E\x0\x30\x0\xD0 ARM32,ARMv4
|
reg32,memam2 \x88\xF9\x10\xE\x0\0 THUMB32,ARMv6T2
|
||||||
|
reg32,memam2 \x1E\x0\x30\x0\xD0 ARM32,ARMv4
|
||||||
[STRSBTcc]
|
|
||||||
reg32,memam2 \x1E\x0\x30\x0\xD0 ARM32,ARMv4
|
|
||||||
|
|
||||||
[LDRSHTcc]
|
[LDRSHTcc]
|
||||||
reg32,memam2 \x1E\x0\x30\x0\xF0 ARM32,ARMv4
|
reg32,memam2 \x88\xF9\x30\xE\x0\0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
[STRSHTcc]
|
|
||||||
reg32,memam2 \x1E\x0\x30\x0\xF0 ARM32,ARMv4
|
reg32,memam2 \x1E\x0\x30\x0\xF0 ARM32,ARMv4
|
||||||
|
|
||||||
[FSTDcc]
|
[FSTDcc]
|
||||||
@ -574,89 +679,133 @@ reg32,memam2 \x1E\x0\x30\x0\xF0 ARM32,ARMv4
|
|||||||
; ARMv6
|
; ARMv6
|
||||||
|
|
||||||
[BFCcc]
|
[BFCcc]
|
||||||
|
reg32,immshifter,immshifter \x84\xF3\x6F\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,immshifter,imm32 \x84\xF3\x6F\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,immshifter,immshifter \x2D\x7\xC0\x0\x1F ARM32,ARMv4
|
reg32,immshifter,immshifter \x2D\x7\xC0\x0\x1F ARM32,ARMv4
|
||||||
reg32,immshifter,imm32 \x2D\x7\xC0\x0\x1F ARM32,ARMv4
|
reg32,immshifter,imm32 \x2D\x7\xC0\x0\x1F ARM32,ARMv4
|
||||||
|
|
||||||
[BFIcc]
|
[BFIcc]
|
||||||
|
reg32,reg32,immshifter,immshifter \x84\xF3\x60\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,immshifter,imm32 \x84\xF3\x60\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,immshifter,immshifter \x2D\x7\xC0\x0\x10 ARM32,ARMv4
|
reg32,reg32,immshifter,immshifter \x2D\x7\xC0\x0\x10 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter,imm32 \x2D\x7\xC0\x0\x10 ARM32,ARMv4
|
reg32,reg32,immshifter,imm32 \x2D\x7\xC0\x0\x10 ARM32,ARMv4
|
||||||
|
|
||||||
[CLREX]
|
[CLREX]
|
||||||
|
void \x80\xF3\xBF\x8F\x2F THUMB32,ARMv7
|
||||||
void \x2F\xF5\x7F\xF0\x1F ARM32,ARMv6K
|
void \x2F\xF5\x7F\xF0\x1F ARM32,ARMv6K
|
||||||
|
|
||||||
[LDREXcc]
|
[LDREXcc]
|
||||||
|
reg32,memam6 \x8A\xE8\x50\x0F\x00 THUMB32,ARMv6T2
|
||||||
reg32,memam6 \x18\x01\x90\x0F\x9F ARM32,ARMv4
|
reg32,memam6 \x18\x01\x90\x0F\x9F ARM32,ARMv4
|
||||||
|
|
||||||
[LDREXBcc]
|
[LDREXBcc]
|
||||||
|
reg32,memam6 \x8A\xE8\xD0\x0F\x4F THUMB32,ARMv7
|
||||||
reg32,memam6 \x18\x01\xD0\x0F\x9F ARM32,ARMv4
|
reg32,memam6 \x18\x01\xD0\x0F\x9F ARM32,ARMv4
|
||||||
|
|
||||||
[LDREXDcc]
|
[LDREXDcc]
|
||||||
|
reg32,reg32,memam6 \x8A\xE8\xD0\x00\x7F THUMB32,ARMv7
|
||||||
reg32,reg32,memam6 \x18\x01\xB0\x0F\x9F ARM32,ARMv4
|
reg32,reg32,memam6 \x18\x01\xB0\x0F\x9F ARM32,ARMv4
|
||||||
|
|
||||||
[LDREXHcc]
|
[LDREXHcc]
|
||||||
|
reg32,memam6 \x8A\xE8\xD0\x0F\x5F THUMB32,ARMv7
|
||||||
reg32,memam6 \x18\x01\xF0\x0F\x9F ARM32,ARMv4
|
reg32,memam6 \x18\x01\xF0\x0F\x9F ARM32,ARMv4
|
||||||
|
|
||||||
[STREXcc]
|
[STREXcc]
|
||||||
|
reg32,reg32,memam6 \x8B\xE8\x40\x00\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,memam6 \x18\x01\x80\x0F\x90 ARM32,ARMv4
|
reg32,reg32,memam6 \x18\x01\x80\x0F\x90 ARM32,ARMv4
|
||||||
|
|
||||||
[STREXBcc]
|
[STREXBcc]
|
||||||
|
reg32,reg32,memam6 \x8B\xE8\xC0\x0F\x40 THUMB32,ARMv7
|
||||||
reg32,reg32,memam6 \x18\x01\xC0\x0F\x90 ARM32,ARMv4
|
reg32,reg32,memam6 \x18\x01\xC0\x0F\x90 ARM32,ARMv4
|
||||||
|
|
||||||
[STREXDcc]
|
[STREXDcc]
|
||||||
|
reg32,reg32,reg32,memam6 \x8B\xE8\xC0\x00\x70 THUMB32,ARMv7
|
||||||
reg32,reg32,reg32,memam6 \x18\x01\xA0\x0F\x90 ARM32,ARMv4
|
reg32,reg32,reg32,memam6 \x18\x01\xA0\x0F\x90 ARM32,ARMv4
|
||||||
|
|
||||||
[STREXHcc]
|
[STREXHcc]
|
||||||
|
reg32,reg32,memam6 \x8B\xE8\xC0\x0F\x50 THUMB32,ARMv7
|
||||||
reg32,reg32,memam6 \x18\x01\xE0\x0F\x90 ARM32,ARMv4
|
reg32,reg32,memam6 \x18\x01\xE0\x0F\x90 ARM32,ARMv4
|
||||||
|
|
||||||
[MLScc]
|
[MLScc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x0\x0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x00\x60\x9 ARM32,ARMv6T2
|
reg32,reg32,reg32,reg32 \x15\x00\x60\x9 ARM32,ARMv6T2
|
||||||
|
|
||||||
[PKHBTcc]
|
[PKHBTcc]
|
||||||
|
reg32,reg32,reg32 \x80\xEA\xC0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\xC0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x16\x6\x80\x1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x6\x80\x1 ARM32,ARMv6
|
||||||
reg32,reg32,reg32,shifterop \x16\x6\x80\x1 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x16\x6\x80\x1 ARM32,ARMv6
|
||||||
|
|
||||||
[PKHTBcc]
|
[PKHTBcc]
|
||||||
|
reg32,reg32,reg32 \x80\xEA\xC0\x0\x10 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x80\xEA\xC0\x0\x10 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x16\x6\x80\x1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x6\x80\x1 ARM32,ARMv6
|
||||||
reg32,reg32,reg32,shifterop \x16\x6\x80\x5 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x16\x6\x80\x5 ARM32,ARMv6
|
||||||
|
|
||||||
[PLI]
|
[PLI]
|
||||||
|
memam2 \x87\xF9\x10\xF0\x0 THUMB32,ARMv7
|
||||||
memam2 \x25\xF4\x50\xF0\x0 ARM32,ARMv7
|
memam2 \x25\xF4\x50\xF0\x0 ARM32,ARMv7
|
||||||
|
|
||||||
[QADD16cc]
|
[QADD16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x90\xF0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x20\xF1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x20\xF1 ARM32,ARMv6
|
||||||
[QADD8cc]
|
[QADD8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x80\xF0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x20\xF9 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x20\xF9 ARM32,ARMv6
|
||||||
[QASXcc]
|
[QASXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xA0\xF0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x20\xF3 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x20\xF3 ARM32,ARMv6
|
||||||
[QSAXcc]
|
[QSAXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xE0\xF0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x20\xF5 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x20\xF5 ARM32,ARMv6
|
||||||
[QSUB16cc]
|
[QSUB16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xD0\xF0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x20\xF7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x20\xF7 ARM32,ARMv6
|
||||||
[QSUB8cc]
|
[QSUB8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xC0\xF0\x10 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x20\xFF ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x20\xFF ARM32,ARMv6
|
||||||
|
|
||||||
[RBITcc]
|
[RBITcc]
|
||||||
|
reg32,reg32 \x80\xFA\x90\xF0\xA0 THUMB32,ARMv6T2
|
||||||
reg32,reg32 \x32\x6\xFF\xF\x30 ARM32,ARMv6T2
|
reg32,reg32 \x32\x6\xFF\xF\x30 ARM32,ARMv6T2
|
||||||
|
|
||||||
[REVcc]
|
[REVcc]
|
||||||
reglo,reglo \x61\xBA\x00 THUMB,ARMv6
|
reglo,reglo \x61\xBA\x00 THUMB,ARMv6
|
||||||
|
reg32,reg32 \x80\xFA\x90\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,reg32 \x32\x6\xBF\xF\x30 ARM32,ARMv6
|
reg32,reg32 \x32\x6\xBF\xF\x30 ARM32,ARMv6
|
||||||
|
|
||||||
[REV16cc]
|
[REV16cc]
|
||||||
reglo,reglo \x61\xBA\x40 THUMB,ARMv6
|
reglo,reglo \x61\xBA\x40 THUMB,ARMv6
|
||||||
|
reg32,reg32 \x80\xFA\x90\xF0\x90 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,reg32 \x32\x6\xBF\xF\xB0 ARM32,ARMv6
|
reg32,reg32 \x32\x6\xBF\xF\xB0 ARM32,ARMv6
|
||||||
|
|
||||||
[REVSHcc]
|
[REVSHcc]
|
||||||
reglo,reglo \x61\xBA\xC0 THUMB,ARMv6
|
reglo,reglo \x61\xBA\xC0 THUMB,ARMv6
|
||||||
|
reg32,reg32 \x80\xFA\x90\xF0\xB0 THUMB32,WIDE,ARMv6T2
|
||||||
reg32,reg32 \x32\x6\xFF\xF\xB0 ARM32,ARMv6
|
reg32,reg32 \x32\x6\xFF\xF\xB0 ARM32,ARMv6
|
||||||
|
|
||||||
[SADD16cc]
|
[SADD16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\90\xF0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x10\xF1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x10\xF1 ARM32,ARMv6
|
||||||
|
|
||||||
[SADD8cc]
|
[SADD8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\80\xF0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x10\xF9 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x10\xF9 ARM32,ARMv6
|
||||||
|
|
||||||
[SASXcc]
|
[SASXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\A0\xF0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x10\xF3 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x10\xF3 ARM32,ARMv6
|
||||||
|
|
||||||
[SBFXcc]
|
[SBFXcc]
|
||||||
|
reg32,reg32,immshifter,immshifter \x84\xF3\x40\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,immshifter,immshifter \x2D\x7\xA0\x0\x50 ARM32,ARMv6T2
|
reg32,reg32,immshifter,immshifter \x2D\x7\xA0\x0\x50 ARM32,ARMv6T2
|
||||||
|
|
||||||
[SELcc]
|
[SELcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xA0\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x80\xFB ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x80\xFB ARM32,ARMv6
|
||||||
|
|
||||||
[SETEND]
|
[SETEND]
|
||||||
@ -670,6 +819,9 @@ void \x2F\x3\x20\xF0\x4 ARM32,ARMv6K
|
|||||||
reglo,reglo,immshifter \x60\x1\x0 THUMB,ARMv4T
|
reglo,reglo,immshifter \x60\x1\x0 THUMB,ARMv4T
|
||||||
reglo,reglo \x60\x41\x0 THUMB,ARMv4T
|
reglo,reglo \x60\x41\x0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x82\xEA\x4F\x0\x20 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x40\xF0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x30\x1\xA0\x0\x50 ARM32,ARMv4
|
reg32,reg32,reg32 \x30\x1\xA0\x0\x50 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x30\x1\xA0\x0\x40 ARM32,ARMv4
|
reg32,reg32,immshifter \x30\x1\xA0\x0\x40 ARM32,ARMv4
|
||||||
|
|
||||||
@ -677,6 +829,9 @@ reg32,reg32,immshifter \x30\x1\xA0\x0\x40 ARM32,ARMv4
|
|||||||
reglo,reglo,immshifter \x60\x8\x0 THUMB,ARMv4T
|
reglo,reglo,immshifter \x60\x8\x0 THUMB,ARMv4T
|
||||||
reglo,reglo \x60\x40\xC0 THUMB,ARMv4T
|
reglo,reglo \x60\x40\xC0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x82\xEA\x4F\x0\x10 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x20\xF0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x30\x1\xA0\x0\x30 ARM32,ARMv4
|
reg32,reg32,reg32 \x30\x1\xA0\x0\x30 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x30\x1\xA0\x0\x20 ARM32,ARMv4
|
reg32,reg32,immshifter \x30\x1\xA0\x0\x20 ARM32,ARMv4
|
||||||
|
|
||||||
@ -684,208 +839,302 @@ reg32,reg32,immshifter \x30\x1\xA0\x0\x20 ARM32,ARMv4
|
|||||||
reglo,reglo,immshifter \x60\x0\x0 THUMB,ARMv4T
|
reglo,reglo,immshifter \x60\x0\x0 THUMB,ARMv4T
|
||||||
reglo,reglo \x60\x40\x80 THUMB,ARMv4T
|
reglo,reglo \x60\x40\x80 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x82\xEA\x4F\x0\x20 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x60\xF0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x30\x1\xA0\x0\x10 ARM32,ARMv4
|
reg32,reg32,reg32 \x30\x1\xA0\x0\x10 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x30\x1\xA0\x0\x00 ARM32,ARMv4
|
reg32,reg32,immshifter \x30\x1\xA0\x0\x00 ARM32,ARMv4
|
||||||
|
|
||||||
[RORcc]
|
[RORcc]
|
||||||
reglo,reglo \x60\x41\xC0 THUMB,ARMv4T
|
reglo,reglo \x60\x41\xC0 THUMB,ARMv4T
|
||||||
|
|
||||||
|
reg32,reg32,immshifter \x82\xEA\x4F\x0\x30 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x60\xF0\x0 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x30\x1\xA0\x0\x70 ARM32,ARMv4
|
reg32,reg32,reg32 \x30\x1\xA0\x0\x70 ARM32,ARMv4
|
||||||
reg32,reg32,immshifter \x30\x1\xA0\x0\x60 ARM32,ARMv4
|
reg32,reg32,immshifter \x30\x1\xA0\x0\x60 ARM32,ARMv4
|
||||||
|
|
||||||
[RRXcc]
|
[RRXcc]
|
||||||
|
reg32,reg32 \x80\xEA\x4F\x00\x30 THUMB32,ARMv6T2
|
||||||
reg32,reg32 \x30\x1\xA0\x0\x60 ARM32,ARMv4
|
reg32,reg32 \x30\x1\xA0\x0\x60 ARM32,ARMv4
|
||||||
|
|
||||||
[UMAALcc]
|
[UMAALcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\xE0\x0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x0\x40\x9 ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x16\x0\x40\x9 ARM32,ARMv6
|
||||||
|
|
||||||
[SHADD16cc]
|
[SHADD16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x90\xF0\x20 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x30\xF1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x30\xF1 ARM32,ARMv6
|
||||||
|
|
||||||
[SHADD8cc]
|
[SHADD8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x80\xF0\x20 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x30\xF9 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x30\xF9 ARM32,ARMv6
|
||||||
|
|
||||||
[SHASXcc]
|
[SHASXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xA0\xF0\x20 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x30\xF3 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x30\xF3 ARM32,ARMv6
|
||||||
|
|
||||||
[SHSAXcc]
|
[SHSAXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xE0\xF0\x20 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x30\xF5 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x30\xF5 ARM32,ARMv6
|
||||||
|
|
||||||
[SHSUB16cc]
|
[SHSUB16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xD0\xF0\x20 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x30\xF7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x30\xF7 ARM32,ARMv6
|
||||||
|
|
||||||
[SHSUB8cc]
|
[SHSUB8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xC0\xF0\x20 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x30\xFF ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x30\xFF ARM32,ARMv6
|
||||||
|
|
||||||
[SMLADcc]
|
[SMLADcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x20\x0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x7\x00\x1 ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x15\x7\x00\x1 ARM32,ARMv6
|
||||||
|
|
||||||
[SMLALDcc]
|
[SMLALDcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\xC0\x0\xC0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x7\x40\x1 ARM32,ARMv4
|
reg32,reg32,reg32,reg32 \x16\x7\x40\x1 ARM32,ARMv4
|
||||||
|
|
||||||
[SMLSDcc]
|
[SMLSDcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x40\x0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x7\x00\x5 ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x15\x7\x00\x5 ARM32,ARMv6
|
||||||
|
|
||||||
[SMLSLDcc]
|
[SMLSLDcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x85\xFB\xD0\x0\xC0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x16\x7\x40\x5 ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x16\x7\x40\x5 ARM32,ARMv6
|
||||||
|
|
||||||
[SMMLAcc]
|
[SMMLAcc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x50\x0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x7\x50\x1 ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x15\x7\x50\x1 ARM32,ARMv6
|
||||||
|
|
||||||
[SMMLScc]
|
[SMMLScc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x60\x0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x7\x50\xD ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x15\x7\x50\xD ARM32,ARMv6
|
||||||
|
|
||||||
[SMMULcc]
|
[SMMULcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFB\x50\xF0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x15\x7\x50\x1\xF ARM32,ARMv6
|
reg32,reg32,reg32 \x15\x7\x50\x1\xF ARM32,ARMv6
|
||||||
|
|
||||||
[SMUADcc]
|
[SMUADcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFB\x20\xF0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x15\x7\x00\x1\xF ARM32,ARMv6
|
reg32,reg32,reg32 \x15\x7\x00\x1\xF ARM32,ARMv6
|
||||||
|
|
||||||
[SMUSDcc]
|
[SMUSDcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFB\x40\xF0\x0 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x15\x7\x00\x5\xF ARM32,ARMv6
|
reg32,reg32,reg32 \x15\x7\x00\x5\xF ARM32,ARMv6
|
||||||
|
|
||||||
[SRScc]
|
[SRScc]
|
||||||
|
|
||||||
[SSATcc]
|
[SSATcc]
|
||||||
reg32,immshifter,reg32 \x2A\x6\xA0\x0\x10 ARM32,ARMv6
|
reg32,immshifter,reg32 \x83\xF3\x00\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,immshifter,reg32,shifterop \x2A\x6\xA0\x0\x10 ARM32,ARMv6
|
reg32,immshifter,reg32,shifterop \x83\xF3\x00\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,immshifter,reg32 \x2A\x6\xA0\x0\x10 ARM32,ARMv6
|
||||||
|
reg32,immshifter,reg32,shifterop \x2A\x6\xA0\x0\x10 ARM32,ARMv6
|
||||||
|
|
||||||
[SSAT16cc]
|
[SSAT16cc]
|
||||||
reg32,immshifter,reg32 \x2A\x6\xA0\xF\x30 ARM32,ARMv6
|
reg32,immshifter,reg32 \x83\xF3\x20\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,immshifter,reg32 \x2A\x6\xA0\xF\x30 ARM32,ARMv6
|
||||||
|
|
||||||
[SSAXcc]
|
[SSAXcc]
|
||||||
reg32,reg32,reg32 \x16\x06\x10\xF5 ARM32,ARMv6
|
reg32,reg32,reg32 \x80\xFA\xE0\xF0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x16\x06\x10\xF5 ARM32,ARMv6
|
||||||
|
|
||||||
[SSUB16cc]
|
[SSUB16cc]
|
||||||
reg32,reg32,reg32 \x16\x06\x10\xF7 ARM32,ARMv6
|
reg32,reg32,reg32 \x80\xFA\xD0\xF0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x16\x06\x10\xF7 ARM32,ARMv6
|
||||||
|
|
||||||
[SSUB8cc]
|
[SSUB8cc]
|
||||||
reg32,reg32,reg32 \x16\x06\x10\xFF ARM32,ARMv6
|
reg32,reg32,reg32 \x80\xFA\xC0\xF0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32 \x16\x06\x10\xFF ARM32,ARMv6
|
||||||
|
|
||||||
[SXTABcc]
|
[SXTABcc]
|
||||||
reg32,reg32,reg32 \x16\x06\xA0\x07 ARM32,ARMv6
|
reg32,reg32,reg32 \x86\xFA\x40\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,shifterop \x16\x06\xA0\x07 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x86\xFA\x40\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,reg32,reg32 \x16\x06\xA0\x07 ARM32,ARMv6
|
||||||
|
reg32,reg32,reg32,shifterop \x16\x06\xA0\x07 ARM32,ARMv6
|
||||||
|
|
||||||
[SXTAB16cc]
|
[SXTAB16cc]
|
||||||
reg32,reg32,reg32 \x16\x06\x80\x07 ARM32,ARMv6
|
reg32,reg32,reg32 \x86\xFA\x20\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,shifterop \x16\x06\x80\x07 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x86\xFA\x20\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,reg32,reg32 \x16\x06\x80\x07 ARM32,ARMv6
|
||||||
|
reg32,reg32,reg32,shifterop \x16\x06\x80\x07 ARM32,ARMv6
|
||||||
|
|
||||||
[SXTAHcc]
|
[SXTAHcc]
|
||||||
reg32,reg32,reg32 \x16\x06\xB0\x07 ARM32,ARMv6
|
reg32,reg32,reg32 \x86\xFA\x00\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,shifterop \x16\x06\xB0\x07 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x86\xFA\x00\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,reg32,reg32 \x16\x06\xB0\x07 ARM32,ARMv6
|
||||||
|
reg32,reg32,reg32,shifterop \x16\x06\xB0\x07 ARM32,ARMv6
|
||||||
|
|
||||||
[UBFXcc]
|
[UBFXcc]
|
||||||
reg32,reg32,immshifter,immshifter \x2D\x7\xE0\x0\x50 ARM32,ARMv4
|
reg32,reg32,immshifter,immshifter \x84\xF3\xC0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,immshifter,immshifter \x2D\x7\xE0\x0\x50 ARM32,ARMv4
|
||||||
|
|
||||||
[UXTABcc]
|
[UXTABcc]
|
||||||
reg32,reg32,reg32 \x16\x6\xE0\x7 ARM32,ARMv6
|
reg32,reg32,reg32 \x86\xFA\x50\xF0\x80 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,shifterop \x16\x6\xE0\x7 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x86\xFA\x50\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,reg32,reg32 \x16\x6\xE0\x7 ARM32,ARMv6
|
||||||
|
reg32,reg32,reg32,shifterop \x16\x6\xE0\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[UXTAB16cc]
|
[UXTAB16cc]
|
||||||
|
reg32,reg32,reg32 \x86\xFA\x30\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x86\xFA\x30\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,reg32,reg32 \x86\xFA\x40\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x86\xFA\x40\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x16\x6\xC0\x7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x6\xC0\x7 ARM32,ARMv6
|
||||||
reg32,reg32,reg32,shifterop \x16\x6\xC0\x7 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x16\x6\xC0\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[UXTAHcc]
|
[UXTAHcc]
|
||||||
|
reg32,reg32,reg32 \x86\xFA\x10\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,reg32,shifterop \x86\xFA\x10\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32,reg32 \x16\x6\xF0\x7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x6\xF0\x7 ARM32,ARMv6
|
||||||
reg32,reg32,reg32,shifterop \x16\x6\xF0\x7 ARM32,ARMv6
|
reg32,reg32,reg32,shifterop \x16\x6\xF0\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[SXTBcc]
|
[SXTBcc]
|
||||||
reglo,reglo \x61\xB2\x40 THUMB,ARMv6
|
reglo,reglo \x61\xB2\x40 THUMB,ARMv6
|
||||||
|
|
||||||
|
reg32,reg32 \x86\xFA\x4F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x86\xFA\x4F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x1B\x6\xAF\x7 ARM32,ARMv6
|
reg32,reg32 \x1B\x6\xAF\x7 ARM32,ARMv6
|
||||||
reg32,reg32,shifterop \x1B\x6\xAF\x7 ARM32,ARMv6
|
reg32,reg32,shifterop \x1B\x6\xAF\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[SXTB16cc]
|
[SXTB16cc]
|
||||||
|
reg32,reg32 \x86\xFA\x2F\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x86\xFA\x2F\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x1B\x6\x8F\x7 ARM32,ARMv6
|
reg32,reg32 \x1B\x6\x8F\x7 ARM32,ARMv6
|
||||||
reg32,reg32,shifterop \x1B\x6\x8F\x7 ARM32,ARMv6
|
reg32,reg32,shifterop \x1B\x6\x8F\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[SXTHcc]
|
[SXTHcc]
|
||||||
reglo,reglo \x61\xB2\x00 THUMB,ARMv6
|
reglo,reglo \x61\xB2\x00 THUMB,ARMv6
|
||||||
|
|
||||||
|
reg32,reg32 \x86\xFA\x0F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x86\xFA\x0F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x1B\x6\xBF\x7 ARM32,ARMv6
|
reg32,reg32 \x1B\x6\xBF\x7 ARM32,ARMv6
|
||||||
reg32,reg32,shifterop \x1B\x6\xBF\x7 ARM32,ARMv6
|
reg32,reg32,shifterop \x1B\x6\xBF\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[UXTBcc]
|
[UXTBcc]
|
||||||
reglo,reglo \x61\xB2\xC0 THUMB,ARMv6
|
reglo,reglo \x61\xB2\xC0 THUMB,ARMv6
|
||||||
|
|
||||||
|
reg32,reg32 \x86\xFA\x5F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x86\xFA\x5F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x1B\x6\xEF\x7 ARM32,ARMv6
|
reg32,reg32 \x1B\x6\xEF\x7 ARM32,ARMv6
|
||||||
reg32,reg32,shifterop \x1B\x6\xEF\x7 ARM32,ARMv6
|
reg32,reg32,shifterop \x1B\x6\xEF\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[UXTB16cc]
|
[UXTB16cc]
|
||||||
|
reg32,reg32 \x86\xFA\x3F\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x86\xFA\x3F\xF0\x80 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x1B\x6\xCF\x7 ARM32,ARMv6
|
reg32,reg32 \x1B\x6\xCF\x7 ARM32,ARMv6
|
||||||
reg32,reg32,shifterop \x1B\x6\xCF\x7 ARM32,ARMv6
|
reg32,reg32,shifterop \x1B\x6\xCF\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[UXTHcc]
|
[UXTHcc]
|
||||||
reglo,reglo \x61\xB2\x80 THUMB,ARMv6
|
reglo,reglo \x61\xB2\x80 THUMB,ARMv6
|
||||||
|
|
||||||
|
reg32,reg32 \x86\xFA\x1F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
reg32,reg32,shifterop \x86\xFA\x1F\xF0\x80 THUMB32,WIDE,ARMv6T2
|
||||||
|
|
||||||
reg32,reg32 \x1B\x6\xFF\x7 ARM32,ARMv6
|
reg32,reg32 \x1B\x6\xFF\x7 ARM32,ARMv6
|
||||||
reg32,reg32,shifterop \x1B\x6\xFF\x7 ARM32,ARMv6
|
reg32,reg32,shifterop \x1B\x6\xFF\x7 ARM32,ARMv6
|
||||||
|
|
||||||
[UADD16cc]
|
[UADD16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x90\xF0\x40 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x50\xF1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x50\xF1 ARM32,ARMv6
|
||||||
|
|
||||||
[UADD8cc]
|
[UADD8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x80\xF0\x40 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x50\xF9 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x50\xF9 ARM32,ARMv6
|
||||||
|
|
||||||
[UASXcc]
|
[UASXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xA0\xF0\x40 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x50\xF3 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x50\xF3 ARM32,ARMv6
|
||||||
|
|
||||||
[UHADD16cc]
|
[UHADD16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x90\xF0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x70\xF1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x70\xF1 ARM32,ARMv6
|
||||||
|
|
||||||
[UHADD8cc]
|
[UHADD8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x80\xF0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x70\xF9 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x70\xF9 ARM32,ARMv6
|
||||||
|
|
||||||
[UHASXcc]
|
[UHASXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xA0\xF0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x70\xF3 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x70\xF3 ARM32,ARMv6
|
||||||
|
|
||||||
[UHSAXcc]
|
[UHSAXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xE0\xF0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x70\xF5 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x70\xF5 ARM32,ARMv6
|
||||||
|
|
||||||
[UHSUB16cc]
|
[UHSUB16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xD0\xF0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x70\xF7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x70\xF7 ARM32,ARMv6
|
||||||
|
|
||||||
[UHSUB8cc]
|
[UHSUB8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xC0\xF0\x60 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x70\xFF ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x70\xFF ARM32,ARMv6
|
||||||
|
|
||||||
[UQADD16cc]
|
[UQADD16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x90\xF0\x50 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x60\xF1 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x60\xF1 ARM32,ARMv6
|
||||||
|
|
||||||
[UQADD8]
|
[UQADD8]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\x80\xF0\x50 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x60\xF9 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x60\xF9 ARM32,ARMv6
|
||||||
|
|
||||||
[UQASXcc]
|
[UQASXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xA0\xF0\x50 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x60\xF3 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x60\xF3 ARM32,ARMv6
|
||||||
|
|
||||||
[UQSAXcc]
|
[UQSAXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xE0\xF0\x50 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x60\xF5 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x60\xF5 ARM32,ARMv6
|
||||||
|
|
||||||
[UQSUB16cc]
|
[UQSUB16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xD0\xF0\x50 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x60\xF7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x60\xF7 ARM32,ARMv6
|
||||||
|
|
||||||
[UQSUB8cc]
|
[UQSUB8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xC0\xF0\x50 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x60\xFF ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x60\xFF ARM32,ARMv6
|
||||||
|
|
||||||
[USAD8cc]
|
[USAD8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFB\x70\xF0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x15\x07\x80\x01\xF ARM32,ARMv6
|
reg32,reg32,reg32 \x15\x07\x80\x01\xF ARM32,ARMv6
|
||||||
|
|
||||||
[USADA8cc]
|
[USADA8cc]
|
||||||
|
reg32,reg32,reg32,reg32 \x80\xFB\x70\x0\x00 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32,reg32 \x15\x07\x80\x01 ARM32,ARMv6
|
reg32,reg32,reg32,reg32 \x15\x07\x80\x01 ARM32,ARMv6
|
||||||
|
|
||||||
[USATcc]
|
[USATcc]
|
||||||
reg32,immshifter,reg32 \x2A\x6\xE0\x0\x10 ARM32,ARMv6
|
reg32,immshifter,reg32 \x83\xF3\x80\x0\x0 THUMB32,ARMv6T2
|
||||||
reg32,immshifter,reg32,shifterop \x2A\x6\xE0\x0\x10 ARM32,ARMv6
|
reg32,immshifter,reg32,shifterop \x83\xF3\x80\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,immshifter,reg32 \x2A\x6\xE0\x0\x10 ARM32,ARMv6
|
||||||
|
reg32,immshifter,reg32,shifterop \x2A\x6\xE0\x0\x10 ARM32,ARMv6
|
||||||
|
|
||||||
[USAT16cc]
|
[USAT16cc]
|
||||||
reg32,immshifter,reg32 \x2A\x6\xE0\xF\x30 ARM32,ARMv6
|
reg32,immshifter,reg32 \x83\xF3\xA0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,immshifter,reg32 \x2A\x6\xE0\xF\x30 ARM32,ARMv6
|
||||||
|
|
||||||
[USAXcc]
|
[USAXcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xE0\xF0\x40 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x50\xF5 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x50\xF5 ARM32,ARMv6
|
||||||
|
|
||||||
[USUB16cc]
|
[USUB16cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xD0\xF0\x40 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x50\xF7 ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x50\xF7 ARM32,ARMv6
|
||||||
|
|
||||||
[USUB8cc]
|
[USUB8cc]
|
||||||
|
reg32,reg32,reg32 \x80\xFA\xC0\xF0\x40 THUMB32,ARMv6T2
|
||||||
reg32,reg32,reg32 \x16\x06\x50\xFF ARM32,ARMv6
|
reg32,reg32,reg32 \x16\x06\x50\xFF ARM32,ARMv6
|
||||||
|
|
||||||
[WFEcc]
|
[WFEcc]
|
||||||
@ -1030,10 +1279,15 @@ reglist \x69\xB4 THUMB,ARMv4T
|
|||||||
reglist \x26\x80 ARM32,ARMv4
|
reglist \x26\x80 ARM32,ARMv4
|
||||||
|
|
||||||
[SDIVcc]
|
[SDIVcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFB\x90\xF0\xF0 THUMB32,ARMv7R,ARMv7M
|
||||||
|
|
||||||
[UDIVcc]
|
[UDIVcc]
|
||||||
|
reg32,reg32,reg32 \x80\xFB\xB0\xF0\xF0 THUMB32,ARMv7R,ARMv7M
|
||||||
|
|
||||||
[MOVTcc]
|
[MOVTcc]
|
||||||
|
reg32,imm \x81\xF2\xC0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,immshifter \x81\xF2\xC0\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
reg32,imm \x2C\x3\x40 ARM32,ARMv6T2
|
reg32,imm \x2C\x3\x40 ARM32,ARMv6T2
|
||||||
reg32,immshifter \x2C\x3\x40 ARM32,ARMv6T2
|
reg32,immshifter \x2C\x3\x40 ARM32,ARMv6T2
|
||||||
|
|
||||||
@ -1086,9 +1340,12 @@ condition \xFE ARM32,ARMv4
|
|||||||
[TBH]
|
[TBH]
|
||||||
|
|
||||||
[MOVW]
|
[MOVW]
|
||||||
reg32,imm \x2C\x3\x0 ARM32,ARMv6T2
|
reg32,imm32 \x2C\x3\x0 ARM32,ARMv6T2
|
||||||
reg32,immshifter \x2C\x3\x0 ARM32,ARMv6T2
|
reg32,immshifter \x2C\x3\x0 ARM32,ARMv6T2
|
||||||
|
|
||||||
|
reg32,imm32 \x81\xF2\x40\x0\x0 THUMB32,ARMv6T2
|
||||||
|
reg32,immshifter \x81\xF2\x40\x0\x0 THUMB32,ARMv6T2
|
||||||
|
|
||||||
[CBZ]
|
[CBZ]
|
||||||
reglo,immshifter \x68\xB1 THUMB,ARMv6T2
|
reglo,immshifter \x68\xB1 THUMB,ARMv6T2
|
||||||
reglo,memam2 \x68\xB1 THUMB,ARMv6T2
|
reglo,memam2 \x68\xB1 THUMB,ARMv6T2
|
||||||
@ -1162,12 +1419,15 @@ vreg,vreg \x42\xE\xB1\xA\xC0 ARM32,VFPv2
|
|||||||
vreg,vreg,vreg \x42\xE\x30\xA\x40 ARM32,VFPv2
|
vreg,vreg,vreg \x42\xE\x30\xA\x40 ARM32,VFPv2
|
||||||
|
|
||||||
[DMB]
|
[DMB]
|
||||||
|
immshifter \x80\xF3\xBF\x8F\x50 THUMB32,ARMv7
|
||||||
immshifter \x2E\xF5\x7F\xF0\x50 ARM32,ARMv7
|
immshifter \x2E\xF5\x7F\xF0\x50 ARM32,ARMv7
|
||||||
|
|
||||||
[ISB]
|
[ISB]
|
||||||
|
immshifter \x80\xF3\xBF\x8F\x60 THUMB32,ARMv7
|
||||||
immshifter \x2E\xF5\x7F\xF0\x60 ARM32,ARMv7
|
immshifter \x2E\xF5\x7F\xF0\x60 ARM32,ARMv7
|
||||||
|
|
||||||
[DSB]
|
[DSB]
|
||||||
|
immshifter \x80\xF3\xBF\x8F\x40 THUMB32,ARMv7
|
||||||
immshifter \x2E\xF5\x7F\xF0\x40 ARM32,ARMv7
|
immshifter \x2E\xF5\x7F\xF0\x40 ARM32,ARMv7
|
||||||
|
|
||||||
[SMC]
|
[SMC]
|
||||||
@ -1183,6 +1443,7 @@ imm32 \x2\x0F ARM32,ARMv4
|
|||||||
immshifter \x2\x0F ARM32,ARMv4
|
immshifter \x2\x0F ARM32,ARMv4
|
||||||
|
|
||||||
[BXJcc]
|
[BXJcc]
|
||||||
|
reg32 \x80\xF3\xC0\x8F\x0 THUMB32,ARMv6T2
|
||||||
reg32 \x3\x01\x2F\xFF\x20 ARM32,ARMv5TEJ
|
reg32 \x3\x01\x2F\xFF\x20 ARM32,ARMv5TEJ
|
||||||
|
|
||||||
; Undefined mnemonic
|
; Undefined mnemonic
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
{ don't edit, this file is generated from armins.dat }
|
{ don't edit, this file is generated from armins.dat }
|
||||||
421;
|
636;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
A_NONE,
|
A_NONE,
|
||||||
A_ADC,
|
A_ADC,
|
||||||
A_ADD,
|
A_ADD,
|
||||||
|
A_ADDW,
|
||||||
A_ADF,
|
A_ADF,
|
||||||
A_ADR,
|
A_ADR,
|
||||||
A_AND,
|
A_AND,
|
||||||
@ -51,6 +52,7 @@ A_MVF,
|
|||||||
A_MVN,
|
A_MVN,
|
||||||
A_VMOV,
|
A_VMOV,
|
||||||
A_NOP,
|
A_NOP,
|
||||||
|
A_ORN,
|
||||||
A_ORR,
|
A_ORR,
|
||||||
A_RSB,
|
A_RSB,
|
||||||
A_RSC,
|
A_RSC,
|
||||||
@ -107,9 +109,7 @@ A_STRD,
|
|||||||
A_LDRHT,
|
A_LDRHT,
|
||||||
A_STRHT,
|
A_STRHT,
|
||||||
A_LDRSBT,
|
A_LDRSBT,
|
||||||
A_STRSBT,
|
|
||||||
A_LDRSHT,
|
A_LDRSHT,
|
||||||
A_STRSHT,
|
|
||||||
A_FSTD,
|
A_FSTD,
|
||||||
A_FSTM,
|
A_FSTM,
|
||||||
A_FSTS,
|
A_FSTS,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -606,10 +606,20 @@ unit cpubase;
|
|||||||
) then
|
) then
|
||||||
result:=true
|
result:=true
|
||||||
{Can an 8-bit value be shifted accordingly?}
|
{Can an 8-bit value be shifted accordingly?}
|
||||||
else if is_shifter_const(d,imm) then
|
|
||||||
result:=true
|
|
||||||
else
|
else
|
||||||
result:=false;
|
begin
|
||||||
|
result:=false;
|
||||||
|
for i:=1 to 31 do
|
||||||
|
begin
|
||||||
|
t:=RolDWord(imm,i);
|
||||||
|
if ((t and $FF)=t) and
|
||||||
|
((t and $80)=$80) then
|
||||||
|
begin
|
||||||
|
result:=true;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function is_continuous_mask(d : aint;var lsb, width: byte) : boolean;
|
function is_continuous_mask(d : aint;var lsb, width: byte) : boolean;
|
||||||
|
@ -329,6 +329,8 @@ implementation
|
|||||||
result:=R_ARM_JUMP24;
|
result:=R_ARM_JUMP24;
|
||||||
RELOC_RELATIVE_24_THUMB:
|
RELOC_RELATIVE_24_THUMB:
|
||||||
result:=R_ARM_CALL;
|
result:=R_ARM_CALL;
|
||||||
|
RELOC_RELATIVE_CALL_THUMB:
|
||||||
|
result:=R_ARM_THM_CALL;
|
||||||
else
|
else
|
||||||
result:=0;
|
result:=0;
|
||||||
writeln(objrel.typ);
|
writeln(objrel.typ);
|
||||||
|
@ -69,6 +69,7 @@ interface
|
|||||||
{$ifdef arm}
|
{$ifdef arm}
|
||||||
RELOC_RELATIVE_24,
|
RELOC_RELATIVE_24,
|
||||||
RELOC_RELATIVE_24_THUMB,
|
RELOC_RELATIVE_24_THUMB,
|
||||||
|
RELOC_RELATIVE_CALL_THUMB,
|
||||||
{$endif arm}
|
{$endif arm}
|
||||||
{ Relative relocation }
|
{ Relative relocation }
|
||||||
RELOC_RELATIVE,
|
RELOC_RELATIVE,
|
||||||
|
Loading…
Reference in New Issue
Block a user