C#中的_BitScanForward?

Sva*_*ard 6 .net c# c++ pinvoke

我正在将用C++编写的程序翻译成C#,并且我遇到了一个我无法解决的内在函数.在C++中,这被称为:

unsigned char _BitScanForward(unsigned long * Index, unsigned long Mask);
Run Code Online (Sandbox Code Playgroud)

如果我只知道内部函数所在的DLL(如果有的话),我可以使用P/Invoke.由于我不知道,我在.NET框架中寻找替代方案,但我空手而归.

有谁知道如何在_BitScanForward上使用P/Invoke,或者做同样的事情的.NET方法?

感谢任何帮助,谢谢.

Ben*_*igt 6

内部函数不在任何库中,它们在CPU内部实现,编译器发出CPU识别为唤起这种特定行为的机器代码.

它们是一种访问没有简单C等效指令的方法.

直到.NET优化器变得足够聪明才能识别它们(例如,Mono JIT识别一些SIMD指令,在MSIL中编码为对特定类的函数的调用,类似地,.NET JIT用浮动替换对System.Math方法的调用 - 点操作),你的C#代码注定要比原来的C++运行一个数量级.