继续我的逆向工程教育我经常希望能够复制部分x86汇编代码并从我选择的高级语言中调用它进行测试.
有没有人知道从C#方法中调用x86指令序列的方法?我知道这可以使用C++完成,但我很好奇是否可以在C#中完成?
注意:我不是在谈论执行MSIL指令.我在谈论执行一系列原始x86汇编指令.
有时我会遇到使用rdtsc指令读取TSC的代码,但cpuid之前会调用.
为什么要打电话cpuid?我意识到这可能是与有TSC的值不同的内核,但什么究竟,当你调用序列这两个指令会发生什么?
我正在寻找一种方法来测量线程上的函数调用所需的cpu周期.
伪代码示例:
void HostFunction()
{
var startTick = CurrentThread.CurrentTick; //does not exist
ChildFunction();
var endTick = CurrentThread.CurrentTick; //does not exist
var childFunctionCost = endTick - startTick;
}
void ChildFunction()
{
//Do whatever...
Thread.Sleep(3000);
//Do some more...
}
Run Code Online (Sandbox Code Playgroud)
我不想使用秒表或其他时间测量,因为它将包括线程正在休眠的任何时间,我不想测量.我只想衡量实际工作.
这个测量需要在运行时工作,就像在我的伪代码中一样,因为结果用于确定是否应该允许子函数继续运行(我的实例是一个插件类型的体系结构),因此一个分析工具赢了'帮帮我