Implementation of FCallAddSub

本文关键字:FCallAddSub of Implementation | 更新日期: 2023-09-27 18:36:36

[System.Security.SecurityCritical]  // auto-generated
        [ResourceExposure(ResourceScope.None)]
        [MethodImplAttribute(MethodImplOptions.InternalCall)]
        private static extern void FCallAddSub(ref Decimal d1, ref Decimal d2, byte bSign);

我找不到此函数的源代码。你能帮我从它的位分量构造一个数字吗?

Implementation of FCallAddSub

你可能不会找到这个的来源。 它可能是在非 C# (如 C++)中实现的,并且不会在参考源代码中找到。 这个问题深入探讨了InternalCall extern的细节:

具有 InternalCall 属性的 C# 内部静态外部 - 内部还是外部?

我推测这是一个占位符,用于允许 JIT 编译器将此调用替换为此操作的平台特定 CPU 指令。 它很可能在 CLR 本身中实现。 不过,我不是这方面的专家,所以在管道中的哪个点处理这个问题我很模糊。

当他们完成将 C# 核心源代码放在 github 上时(开源 .NET Core 框架目前正在进行中),然后您可能会找到一个实现:https://github.com/dotnet/corefx

单声道的实现

你可以在这里看看mono对Decimal的实现,它不使用FCallAddSub

https://github.com/mono/mono/blob/master/mcs/class/corlib/System/Decimal.cs

它们使用在 C 中实现的函数 mono_decimalIncr 在本机代码中实现了类似的抽象,源代码可以在这里找到:

https://github.com/mono/mono/blob/ee90d5ff1d521f92c3dd9cca79b002dc4bc65ee3/mono/metadata/decimal.c