Skip to content

Commit f99cd5a

Browse files
committed
Refactor: many changes to the object model of Reko.Core
* Moved src\Decompiler\IDecompiledFileService.cs to src\Decompiler\Services * Moved src\Core\Services\IDecompilerUIService.cs to src\Gui\Services * Sprinkled the [MaybeNullWhen] attribute on `out` parameters * Removed one of the ExpressionEmitter.Slice overloads * Updated the PublicAPI.Unshipped.txt file (still > 2000 API's to complete)
1 parent 8412565 commit f99cd5a

File tree

286 files changed

+4225
-4165
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

286 files changed

+4225
-4165
lines changed

src/Arch/Alpha/AlphaArchitecture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public override bool TryGetRegister(string name, [MaybeNullWhen(false)] out Regi
135135
return Registers.AllRegisters.TryGetValue(name, out reg);
136136
}
137137

138-
public override bool TryParseAddress(string? txtAddr, out Address addr)
138+
public override bool TryParseAddress(string? txtAddr, [MaybeNullWhen(false)] out Address addr)
139139
{
140140
//$TODO: this should be in the platform not the architecture.
141141
return Address.TryParse32(txtAddr, out addr);

src/Arch/Alpha/AlphaRewriter.Alu.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ private void RewriteSt(PrimitiveType dtFrom, PrimitiveType? dtTo = null)
149149
}
150150
else if (src.DataType != dtFrom)
151151
{
152-
src = m.Slice(dtFrom, src, 0);
152+
src = m.Slice(src, dtFrom);
153153
}
154154
var dst = Rewrite(instr.Operands[1]);
155155
dst.DataType = dtTo ?? dtFrom;
@@ -165,7 +165,7 @@ private void RewriteTrapb()
165165
private Expression addl(Expression a, Expression b)
166166
{
167167
return m.Convert(
168-
m.Slice(PrimitiveType.Int32, m.IAdd(a, b), 0),
168+
m.Slice(m.IAdd(a, b), PrimitiveType.Int32),
169169
PrimitiveType.Int32,
170170
PrimitiveType.Int64);
171171
}
@@ -216,8 +216,8 @@ private Expression mull(Expression a, Expression b)
216216

217217
return m.Convert(
218218
m.IMul(
219-
m.Slice(PrimitiveType.Int32, a, 0),
220-
m.Slice(PrimitiveType.Int32, b, 0)),
219+
m.Slice(a, PrimitiveType.Int32),
220+
m.Slice(b, PrimitiveType.Int32)),
221221
PrimitiveType.Int32,
222222
PrimitiveType.Int64);
223223
}
@@ -269,7 +269,7 @@ private Expression srl(Expression a, Expression sh)
269269
private Expression SExtend(Expression e)
270270
{
271271
return m.Convert(
272-
m.Slice(PrimitiveType.Int32, e, 0),
272+
m.Slice(e, PrimitiveType.Int32),
273273
PrimitiveType.Int32,
274274
PrimitiveType.Word64);
275275
}

src/Arch/Altera/Nios2Architecture.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
using Reko.Core.Types;
2727
using System;
2828
using System.Collections.Generic;
29+
using System.Diagnostics.CodeAnalysis;
2930

3031
namespace Reko.Arch.Altera
3132
{
@@ -120,12 +121,12 @@ public override Address MakeAddressFromConstant(Constant c, bool codeAlign)
120121
throw new NotImplementedException();
121122
}
122123

123-
public override bool TryGetRegister(string name, out RegisterStorage reg)
124+
public override bool TryGetRegister(string name, [MaybeNullWhen(false)] out RegisterStorage reg)
124125
{
125126
throw new NotImplementedException();
126127
}
127128

128-
public override bool TryParseAddress(string? txtAddr, out Address addr)
129+
public override bool TryParseAddress(string? txtAddr, [MaybeNullWhen(false)] out Address addr)
129130
{
130131
return Address.TryParse32(txtAddr, out addr);
131132
}

src/Arch/Arc/ARCompactArchitecture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public override bool TryGetRegister(string name, [MaybeNullWhen(false)] out Regi
169169
return Registers.ByName.TryGetValue(name, out reg);
170170
}
171171

172-
public override bool TryParseAddress(string? txtAddr, out Address addr)
172+
public override bool TryParseAddress(string? txtAddr, [MaybeNullWhen(false)] out Address addr)
173173
{
174174
return Address.TryParse32(txtAddr, out addr);
175175
}

src/Arch/Arc/ARCompactRewriter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ private void MaybeSlice(Expression dst, Expression src)
530530
var bitDiff = src.DataType.BitSize - dst.DataType.BitSize;
531531
if (bitDiff > 0)
532532
{
533-
src = m.Slice(dst.DataType, src, 0);
533+
src = m.Slice(src, dst.DataType);
534534
}
535535
m.Assign(dst, src);
536536
}
@@ -675,7 +675,7 @@ private void RewriteDivaw()
675675

676676
private void RewriteExt(PrimitiveType dtSlice, PrimitiveType dtExt)
677677
{
678-
var src = m.Slice(dtSlice, Operand(1), 0);
678+
var src = m.Slice(Operand(1), dtSlice);
679679
var dst = Operand(0);
680680
m.Assign(dst, m.Convert(src, src.DataType, dtExt));
681681
}

src/Arch/Arc/ArcDisassembler.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,7 +1107,7 @@ Decoder JLcc(bool delay)
11071107
(0x01, Instr(Mnemonic.push_s, b)),
11081108
(0x11, Instr(Mnemonic.push_s, blink))));
11091109

1110-
var GpBasedInstructions = Mask(9, 2, " 19 LD_S / LDW_S / LDB_S / ADD_S Gp-based ld/add (data aligned offset) 16-bit",
1110+
var GpBasedInstructions = Mask(9, 2, " 19 LD_S / LDW_S / LDB_S / ADD_S Gp-based ld/add (data aligned Offset) 16-bit",
11111111
Instr(Mnemonic.ld_s, r0, Mo_reg_s(PrimitiveType.Word32, Registers.Gp, 9)),
11121112
Instr(Mnemonic.ldb_s, r0, Mo_reg_s(PrimitiveType.Byte, Registers.Gp, 9)),
11131113
Instr(Mnemonic.ldw_s, r0, Mo_reg_s(PrimitiveType.Word16, Registers.Gp, 9)),
@@ -1127,14 +1127,14 @@ Decoder JLcc(bool delay)
11271127
Mask(4, 1, " BLcc 1?",
11281128
breq,
11291129
Nyi(" BLcc 11")))),
1130-
new W32Decoder(Mask(7, 2, " 02 LD register + offset Delayed load 32-bit",
1130+
new W32Decoder(Mask(7, 2, " 02 LD register + Offset Delayed load 32-bit",
11311131
Mask(6, 1, " X - sign extension",
11321132
Instr(Mnemonic.ld, A, AA9, Di11, Mo(PrimitiveType.Word32, Bf((12, 3), (24, 3)), Bf((15, 1), (16, 7)))),
11331133
invalid),
11341134
Instr(Mnemonic.ldb, A, AA9, Di11, X, Mo(PrimitiveType.Word32, Bf((12, 3), (24, 3)), Bf((15, 1), (16, 7)))),
11351135
Instr(Mnemonic.ldw, A, AA9, Di11, X, Mo(PrimitiveType.Word32, Bf((12, 3), (24, 3)), Bf((15, 1), (16, 7)))),
11361136
invalid)),
1137-
new W32Decoder(Mask(1, 2, " 03 ST register + offset Buffered store 32-bit",
1137+
new W32Decoder(Mask(1, 2, " 03 ST register + Offset Buffered store 32-bit",
11381138
Instr(Mnemonic.st, C, AA3, Di5, Mo(PrimitiveType.Word32, Bf((12, 3), (24, 3)), Bf((15, 1), (16, 7)))),
11391139
Instr(Mnemonic.stb, C, AA3, Di5, Mo(PrimitiveType.Word32, Bf((12, 3), (24, 3)), Bf((15, 1), (16, 7)))),
11401140
Instr(Mnemonic.stw, C, AA3, Di5, Mo(PrimitiveType.Word32, Bf((12, 3), (24, 3)), Bf((15, 1), (16, 7)))),
@@ -1209,7 +1209,7 @@ Decoder JLcc(bool delay)
12091209
Instr(Mnemonic.ld_s, c, Mo_s(PrimitiveType.Word16)),
12101210
Instr(Mnemonic.ldb_s, c, Mo_s(PrimitiveType.Word16)),
12111211
Instr(Mnemonic.ldw_s, c, Mo_s(PrimitiveType.Word16)),
1212-
Nyi(" 13 LDW_S.X c,[b,u6] Delayed load (16-bit aligned offset) 16-bit"),
1212+
Nyi(" 13 LDW_S.X c,[b,u6] Delayed load (16-bit aligned Offset) 16-bit"),
12131213

12141214
Instr(Mnemonic.st_s, c, Mo_s(PrimitiveType.Word32)),
12151215
Instr(Mnemonic.stb_s, c, Mo_s(PrimitiveType.Word32)),

src/Arch/Arm/AArch32/ArmRewriter.Alu.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ private void RewriteRevsh()
160160
var intrinsic = m.Convert(
161161
m.Fn(
162162
rev_intrinsic.MakeInstance(PrimitiveType.Word16),
163-
m.Slice(PrimitiveType.Word16, this.Operand(1), 0)),
163+
m.Slice(this.Operand(1), PrimitiveType.Word16)),
164164
PrimitiveType.Word16,
165165
PrimitiveType.Int32);
166166
m.Assign(opDst, intrinsic);
@@ -432,7 +432,7 @@ private void RewriteStr(PrimitiveType size)
432432
var opDst = this.Operand(1);
433433
if (size != PrimitiveType.Word32)
434434
{
435-
opSrc = m.Slice(size, opSrc, 0);
435+
opSrc = m.Slice(opSrc, size);
436436
}
437437
m.Assign(opDst, opSrc);
438438
MaybePostOperand(1);
@@ -858,8 +858,8 @@ private void RewriteSmusd()
858858
var rm = this.Operand(2);
859859
var p1 = binder.CreateTemporary(PrimitiveType.Int32);
860860
var p2 = binder.CreateTemporary(PrimitiveType.Int32);
861-
m.Assign(p1, m.SMul(m.Slice(s16, rn, 0), m.Slice(s16, rm, 0)));
862-
m.Assign(p2, m.SMul(m.Slice(s16, rn, 16), m.Slice(s16, rm, 16)));
861+
m.Assign(p1, m.SMul(m.Slice(rn, s16, 0), m.Slice(rm, s16, 0)));
862+
m.Assign(p2, m.SMul(m.Slice(rn, s16, 16), m.Slice(rm, s16, 16)));
863863
m.Assign(dst, m.ISub(p1, p2));
864864
}
865865

@@ -1091,7 +1091,7 @@ private void RewriteXtab(PrimitiveType dt)
10911091
Expression src = Operand(2);
10921092
if (dt.BitSize < src.DataType.BitSize)
10931093
{
1094-
src = m.Slice(dt, src, 0);
1094+
src = m.Slice(src, dt);
10951095
}
10961096
src = m.Convert(src, src.DataType, dst.DataType);
10971097
m.Assign(dst, m.IAdd(this.Operand(1), src));
@@ -1103,7 +1103,7 @@ private void RewriteXtb(PrimitiveType dtSrc, PrimitiveType dtDst)
11031103
Expression src = Operand(1);
11041104
if (dtSrc.BitSize < src.DataType.BitSize)
11051105
{
1106-
src = m.Slice(dtSrc, src, 0);
1106+
src = m.Slice(src, dtSrc);
11071107
}
11081108
src = m.Convert(src, dtSrc, dtDst);
11091109
m.Assign(dst, src);

src/Arch/Arm/AArch32/ArmRewriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ void RewriteSwp(PrimitiveType type)
10521052
private Expression EmitNarrowingSlice(Expression e, DataType dt)
10531053
{
10541054
var tmp = binder.CreateTemporary(dt);
1055-
m.Assign(tmp, m.Slice(dt, e, 0));
1055+
m.Assign(tmp, m.Slice(e, dt));
10561056
return tmp;
10571057
}
10581058

src/Arch/Arm/AArch32/T32Disassembler.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2434,7 +2434,7 @@ private static LongDecoder CreateLongDecoder()
24342434
invalid,
24352435
invalid);
24362436

2437-
var LoadStoreUnsignedRegisterOffset = Mask(4 + 16, 3, "Load/store, unsigned (register offset)",
2437+
var LoadStoreUnsignedRegisterOffset = Mask(4 + 16, 3, "Load/store, unsigned (register Offset)",
24382438
Instr(Mnemonic.strb, R12,MemIdx(PrimitiveType.Byte,16,0,(4,2))),
24392439
Select((16, 4), n => n != 0xF,
24402440
Instr(Mnemonic.ldrb, wide,R12,MemIdx(PrimitiveType.Byte,16,0,(4,2))),
@@ -2507,7 +2507,7 @@ private static LongDecoder CreateLongDecoder()
25072507
invalid));
25082508

25092509
var LoadStoreSignedRegisterOffset = Select((12,4), n => n != 0xF,
2510-
Mask(5 + 16, 2, "Load/store, signed (register offset)",
2510+
Mask(5 + 16, 2, "Load/store, signed (register Offset)",
25112511
Instr(Mnemonic.ldrsb, wide, R12, MemIdx(PrimitiveType.SByte, 16, 0, (4, 2))),
25122512
Instr(Mnemonic.ldrsh, wide, R12, MemIdx(PrimitiveType.Int16, 16, 0, (4, 2))),
25132513
invalid,
@@ -2579,9 +2579,9 @@ private static LongDecoder CreateLongDecoder()
25792579
invalid,
25802580
invalid,
25812581

2582-
Instr(Mnemonic.stc, nyi("*offset variant")),
2582+
Instr(Mnemonic.stc, nyi("*Offset variant")),
25832583
Select((16,4), n => n != 15,
2584-
Instr(Mnemonic.ldc, nyi("*offset variant")),
2584+
Instr(Mnemonic.ldc, nyi("*Offset variant")),
25852585
ldc_literal),
25862586
Instr(Mnemonic.stc, nyi("*preindexed variant")),
25872587
Select((16,4), n => n != 15,
@@ -2590,7 +2590,7 @@ private static LongDecoder CreateLongDecoder()
25902590

25912591
Instr(Mnemonic.stc, CPn14,CR12,MemOff(PrimitiveType.Word32, 16, offsetShift:2, offsetFields:(0,8))),
25922592
Select((16,4), n => n != 15,
2593-
Instr(Mnemonic.ldc, nyi("*offset variant")),
2593+
Instr(Mnemonic.ldc, nyi("*Offset variant")),
25942594
ldc_literal),
25952595
Instr(Mnemonic.stc, nyi("*preindexed variant")),
25962596
Select((16,4), n => n != 15,

src/Arch/Arm/AArch64.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public override Address MakeAddressFromConstant(Constant c, bool codeAlign)
253253
return Address.Ptr64(uAddr);
254254
}
255255

256-
public override bool TryParseAddress(string? txtAddress, out Address addr)
256+
public override bool TryParseAddress(string? txtAddress, [MaybeNullWhen(false)] out Address addr)
257257
{
258258
return Address.TryParse64(txtAddress, out addr);
259259
}

0 commit comments

Comments
 (0)