本文整理汇总了C#中IProcessorArchitecture类的典型用法代码示例。如果您正苦于以下问题:C# IProcessorArchitecture类的具体用法?C# IProcessorArchitecture怎么用?C# IProcessorArchitecture使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IProcessorArchitecture类属于命名空间,在下文中一共展示了IProcessorArchitecture类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateExternalProcedure
public ExternalProcedure CreateExternalProcedure(IProcessorArchitecture arch)
{
if (Characteristics == null)
return new ExternalProcedure(Name, Signature);
else
return new ExternalProcedure(Name, Signature, Characteristics);
}
示例2: Setup
public void Setup()
{
ssaIds = new SsaIdentifierCollection();
mr = new MockRepository();
arch = mr.Stub<IProcessorArchitecture>();
importResolver = mr.Stub<IImportResolver>();
}
示例3: ArgumentSerializer
public ArgumentSerializer(ProcedureSerializer procSer, IProcessorArchitecture arch, Frame frame, string callingConvention)
{
this.procSer = procSer;
this.arch = arch;
this.frame = frame;
this.convention = callingConvention;
}
示例4: Win32Platform
//$TODO: http://www.delorie.com/djgpp/doc/rbinter/ix/29.html int 29 for console apps!
//$TODO: http://msdn.microsoft.com/en-us/data/dn774154(v=vs.99).aspx
public Win32Platform(IServiceProvider services, IProcessorArchitecture arch) : base(services, arch)
{
int3svc = new SystemService
{
SyscallInfo = new SyscallInfo
{
Vector = 3,
RegisterValues = new RegValue[0],
},
Name = "int3",
Signature = new ProcedureSignature(null, new Identifier[0]),
Characteristics = new ProcedureCharacteristics(),
};
var frame = arch.CreateFrame();
int29svc = new SystemService
{
SyscallInfo = new SyscallInfo
{
Vector = 0x29,
RegisterValues = new RegValue[0]
},
Name = "__fastfail",
Signature = new ProcedureSignature(
null,
frame.EnsureRegister(Registers.ecx)), //$bug what about win64?
Characteristics = new ProcedureCharacteristics
{
Terminates = true
}
};
}
示例5: Program
public Program(SegmentMap segmentMap, IProcessorArchitecture arch, IPlatform platform) : this()
{
this.SegmentMap = segmentMap;
this.ImageMap = segmentMap.CreateImageMap();
this.Architecture = arch;
this.Platform = platform;
}
示例6: Given_Architecture
private void Given_Architecture()
{
this.arch = mr.StrictMock<IProcessorArchitecture>();
this.arch.Stub(a => a.Name).Return("testArch");
this.arch.Stub(a => a.SaveUserOptions()).Return(null);
this.cfgSvc.Stub(c => c.GetArchitecture("testArch")).Return(arch);
}
示例7: LoadRealmodeServices
public void LoadRealmodeServices(IProcessorArchitecture arch)
{
string prefix = Environment.GetEnvironmentVariable("DECOMPILERROOTDIR") ?? ".";
// TODO: extract runtime files ( like "realmodeintservices.xml") to their own directory ?
string libPath = Path.Combine(prefix,"src","Environments","Msdos","realmodeintservices.xml");
if (!File.Exists (libPath))
{
prefix = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
libPath = Path.Combine(prefix,"realmodeintservices.xml");
if (!File.Exists(libPath))
{
libPath = Path.Combine(Directory.GetCurrentDirectory() , "realmodeintservices.xml");
}
}
SerializedLibrary lib;
using (FileStream stm = new FileStream(libPath, FileMode.Open))
{
lib = SerializedLibrary.LoadFromStream(stm);
}
int i = 0;
realModeServices = new SystemService[lib.Procedures.Count];
foreach (SerializedService ssvc in lib.Procedures)
{
realModeServices[i++] = ssvc.Build(arch);
}
}
示例8: Program
public Program(LoadedImage image, ImageMap imageMap, IProcessorArchitecture arch, Platform platform) : this()
{
this.Image = image;
this.ImageMap = imageMap;
this.Architecture = arch;
this.Platform = platform;
}
示例9: Setup
public void Setup()
{
this.mr = new MockRepository();
this.sc = new ServiceContainer();
loader = mr.Stub<ILoader>();
arch = mr.StrictMock<IProcessorArchitecture>();
Address dummy;
arch.Stub(a => a.TryParseAddress(null, out dummy)).IgnoreArguments().WhenCalled(m =>
{
Address addr;
var sAddr = (string)m.Arguments[0];
var iColon = sAddr.IndexOf(':');
if (iColon > 0)
{
addr = Address.SegPtr(
Convert.ToUInt16(sAddr.Remove(iColon)),
Convert.ToUInt16(sAddr.Substring(iColon+1)));
m.ReturnValue = true;
}
else
{
m.ReturnValue = Address32.TryParse32((string)m.Arguments[0], out addr);
}
m.Arguments[1] = addr;
}).Return(false);
}
示例10: Build
public SystemService Build(IProcessorArchitecture arch)
{
SystemService svc = new SystemService();
svc.Name = Name;
svc.SyscallInfo = new SyscallInfo();
svc.SyscallInfo.Vector = Convert.ToInt32(SyscallInfo.Vector, 16);
if (SyscallInfo.RegisterValues != null)
{
svc.SyscallInfo.RegisterValues = new RegValue[SyscallInfo.RegisterValues.Length];
for (int i = 0; i < SyscallInfo.RegisterValues.Length; ++i)
{
svc.SyscallInfo.RegisterValues[i] = new RegValue
{
Register = arch.GetRegister(SyscallInfo.RegisterValues[i].Register),
Value = Convert.ToInt32(SyscallInfo.RegisterValues[i].Value, 16),
};
}
}
else
{
svc.SyscallInfo.RegisterValues = new RegValue[0];
}
TypeLibraryLoader loader = new TypeLibraryLoader(arch, true);
ProcedureSerializer sser = arch.CreateProcedureSerializer(loader, "stdapi");
svc.Signature = sser.Deserialize(Signature, arch.CreateFrame());
svc.Characteristics = Characteristics != null ? Characteristics : DefaultProcedureCharacteristics.Instance;
return svc;
}
示例11: Win_x86_64_Platform
public Win_x86_64_Platform(IServiceProvider sp, IProcessorArchitecture arch)
: base(sp, arch, "win64")
{
int3svc = new SystemService
{
SyscallInfo = new SyscallInfo
{
Vector = 3,
RegisterValues = new RegValue[0],
},
Name = "int3",
Signature = FunctionType.Action(new Identifier[0]),
Characteristics = new ProcedureCharacteristics(),
};
int29svc = new SystemService
{
SyscallInfo = new SyscallInfo
{
Vector = 0x29,
RegisterValues = new RegValue[0]
},
Name = "__fastfail",
Signature = FunctionType.Action(
new Identifier("ecx", PrimitiveType.Word32, Registers.ecx)),
Characteristics = new ProcedureCharacteristics
{
Terminates = true
}
};
}
示例12: Given_ArchitectureStub
private void Given_ArchitectureStub()
{
arch = mr.DynamicMock<IProcessorArchitecture>();
var procSer = mr.StrictMock<ProcedureSerializer>(null, null, null);
arch.Stub(a => a.CreateProcedureSerializer(null, null)).IgnoreArguments().Return(procSer);
procSer.Stub(p => p.Deserialize(null, null)).IgnoreArguments().Return(new ProcedureSignature());
}
示例13: Arm32ProcedureSerializer
public Arm32ProcedureSerializer(
IProcessorArchitecture arch,
ISerializedTypeVisitor<DataType> typeLoader,
string defaultConvention)
: base(arch, typeLoader, defaultConvention)
{
}
示例14: Setup
public void Setup()
{
mr = new MockRepository();
program = new Program();
proc = new Procedure("testProc", new Frame(PrimitiveType.Word32));
block = proc.AddBlock("l00100000");
trace = new RtlTrace(0x00100000);
r0 = new Identifier("r0", PrimitiveType.Word32, new RegisterStorage("r0", 0, 0, PrimitiveType.Word32));
r1 = new Identifier("r1", PrimitiveType.Word32, new RegisterStorage("r1", 1, 0, PrimitiveType.Word32));
r2 = new Identifier("r2", PrimitiveType.Word32, new RegisterStorage("r2", 2, 0, PrimitiveType.Word32));
sp = new Identifier("sp", PrimitiveType.Word32, new RegisterStorage("sp", 15, 0, PrimitiveType.Word32));
grf = proc.Frame.EnsureFlagGroup(Registers.eflags, 3, "SCZ", PrimitiveType.Byte);
var sc = new ServiceContainer();
var listener = mr.Stub<DecompilerEventListener>();
scanner = mr.StrictMock<IScanner>();
arch = mr.Stub<IProcessorArchitecture>();
program.Architecture = arch;
program.SegmentMap = new SegmentMap(
Address.Ptr32(0x00100000),
new ImageSegment(
".text",
new MemoryArea(Address.Ptr32(0x00100000), new byte[0x20000]),
AccessMode.ReadExecute));
arch.Replay();
program.Platform = new DefaultPlatform(null, arch);
arch.BackToRecord();
arch.Stub(s => s.StackRegister).Return((RegisterStorage)sp.Storage);
arch.Stub(s => s.PointerType).Return(PrimitiveType.Pointer32);
scanner.Stub(s => s.Services).Return(sc);
sc.AddService<DecompilerEventListener>(listener);
}
示例15: RtlStatementStream
public RtlStatementStream(uint address, Frame frame)
{
this.linAddress = address;
this.arch = new FakeArchitecture();
this.frame = frame;
this.stms = new List<RtlInstructionCluster>();
}