Browse Source

Add IInstructionWithFieldOperand

pull/728/head
Siegfried Pammer 9 years ago
parent
commit
f3f78ebfab
  1. 12
      ICSharpCode.Decompiler/IL/Instructions.cs
  2. 1
      ICSharpCode.Decompiler/IL/Instructions.tt
  3. 5
      ICSharpCode.Decompiler/IL/Instructions/ILInstruction.cs

12
ICSharpCode.Decompiler/IL/Instructions.cs

@ -1874,7 +1874,7 @@ namespace ICSharpCode.Decompiler.IL @@ -1874,7 +1874,7 @@ namespace ICSharpCode.Decompiler.IL
}
/// <summary>Load instance field</summary>
public sealed partial class LdFld : ILInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix
public sealed partial class LdFld : ILInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix, IInstructionWithFieldOperand
{
public LdFld(ILInstruction target, IField field) : base(OpCode.LdFld)
{
@ -1969,7 +1969,7 @@ namespace ICSharpCode.Decompiler.IL @@ -1969,7 +1969,7 @@ namespace ICSharpCode.Decompiler.IL
}
/// <summary>Load address of instance field</summary>
public sealed partial class LdFlda : ILInstruction
public sealed partial class LdFlda : ILInstruction, IInstructionWithFieldOperand
{
public LdFlda(ILInstruction target, IField field) : base(OpCode.LdFlda)
{
@ -2056,7 +2056,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2056,7 +2056,7 @@ namespace ICSharpCode.Decompiler.IL
}
/// <summary>Store value to instance field</summary>
public sealed partial class StFld : ILInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix
public sealed partial class StFld : ILInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix, IInstructionWithFieldOperand
{
public StFld(ILInstruction target, ILInstruction value, IField field) : base(OpCode.StFld)
{
@ -2171,7 +2171,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2171,7 +2171,7 @@ namespace ICSharpCode.Decompiler.IL
}
/// <summary>Load static field</summary>
public sealed partial class LdsFld : SimpleInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix
public sealed partial class LdsFld : SimpleInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix, IInstructionWithFieldOperand
{
public LdsFld(IField field) : base(OpCode.LdsFld)
{
@ -2215,7 +2215,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2215,7 +2215,7 @@ namespace ICSharpCode.Decompiler.IL
}
/// <summary>Load static field address</summary>
public sealed partial class LdsFlda : SimpleInstruction
public sealed partial class LdsFlda : SimpleInstruction, IInstructionWithFieldOperand
{
public LdsFlda(IField field) : base(OpCode.LdsFlda)
{
@ -2242,7 +2242,7 @@ namespace ICSharpCode.Decompiler.IL @@ -2242,7 +2242,7 @@ namespace ICSharpCode.Decompiler.IL
}
/// <summary>Store value to static field</summary>
public sealed partial class StsFld : ILInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix
public sealed partial class StsFld : ILInstruction, ISupportsVolatilePrefix, ISupportsUnalignedPrefix, IInstructionWithFieldOperand
{
public StsFld(ILInstruction value, IField field) : base(OpCode.StsFld)
{

1
ICSharpCode.Decompiler/IL/Instructions.tt

@ -803,6 +803,7 @@ namespace ICSharpCode.Decompiler.IL @@ -803,6 +803,7 @@ namespace ICSharpCode.Decompiler.IL
opCode.GenerateWriteTo = true;
opCode.WriteOperand.Add("output.Write(' ');");
opCode.WriteOperand.Add("Disassembler.DisassemblerHelpers.WriteOperand(output, field);");
opCode.Interfaces.Add("IInstructionWithFieldOperand");
};
static Action<OpCode> HasTypeOperand = opCode => {

5
ICSharpCode.Decompiler/IL/Instructions/ILInstruction.cs

@ -599,4 +599,9 @@ namespace ICSharpCode.Decompiler.IL @@ -599,4 +599,9 @@ namespace ICSharpCode.Decompiler.IL
return inst;
}
}
public interface IInstructionWithFieldOperand
{
ICSharpCode.NRefactory.TypeSystem.IField Field { get; }
}
}

Loading…
Cancel
Save