5

我创建了一个初始化了 double 类型值的简单程序,

var a = double.NaN;

我使用 Visual Studio 2019、.net framework 4.5 构建项目,并使用 ILDASM.exe 版本 4.0.30319.0 将其反汇编为 .il 文件

IL_0001: ldc.r8 -nan(ind)

但是当我尝试使用 ILASM.exe 版本 4.8.3752.0 组装它时出现错误

test.il(65) : 错误 : 标记“-”处的语法错误:IL_0001: ldc.r8 -nan(ind)

这也发生在 Double.PositiveInfinity 和 Double.NegativeInfinity 上。任何人都可以帮忙吗?

4

2 回答 2

2

我从这里找到了错误原因

简单的解决方案就是替换:

ldc.r8 -nan(ind) -> ldc.r8 (00 00 00 00 00 00 F8 FF)

ldc.r8 inf -> ldc.r8 (00 00 00 00 00 00 F0 7F)

ldc.r8 -inf -> ldc.r8 (00 00 00 00 00 00 F0 FF)

于 2021-02-19T19:11:23.773 回答
-1

我可以通过从旧机器上复制 ildasm 来解决这个问题。“c:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 工具”

我的新机器只有“c:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools”,我重命名了 ildasm.exe 并添加了 4.6。

于 2021-11-05T08:28:47.667 回答