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
} }
/// <summary>Load instance field</summary> /// <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) public LdFld(ILInstruction target, IField field) : base(OpCode.LdFld)
{ {
@ -1969,7 +1969,7 @@ namespace ICSharpCode.Decompiler.IL
} }
/// <summary>Load address of instance field</summary> /// <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) public LdFlda(ILInstruction target, IField field) : base(OpCode.LdFlda)
{ {
@ -2056,7 +2056,7 @@ namespace ICSharpCode.Decompiler.IL
} }
/// <summary>Store value to instance field</summary> /// <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) public StFld(ILInstruction target, ILInstruction value, IField field) : base(OpCode.StFld)
{ {
@ -2171,7 +2171,7 @@ namespace ICSharpCode.Decompiler.IL
} }
/// <summary>Load static field</summary> /// <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) public LdsFld(IField field) : base(OpCode.LdsFld)
{ {
@ -2215,7 +2215,7 @@ namespace ICSharpCode.Decompiler.IL
} }
/// <summary>Load static field address</summary> /// <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) public LdsFlda(IField field) : base(OpCode.LdsFlda)
{ {
@ -2242,7 +2242,7 @@ namespace ICSharpCode.Decompiler.IL
} }
/// <summary>Store value to static field</summary> /// <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) public StsFld(ILInstruction value, IField field) : base(OpCode.StsFld)
{ {

1
ICSharpCode.Decompiler/IL/Instructions.tt

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

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

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

Loading…
Cancel
Save