- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此代码验证失败:
.assembly extern mscorlib {}
.assembly Program {}
.method private static void Main() cil managed
{
.entrypoint
.maxstack 3
.locals init ( int32[0 ... 10] a )
ldc.i4 10
newarr int32
stloc.0
ldloc.0
ldc.i4.0
ldc.i4.s 32
stelem.i4
call string [mscorlib]System.Console::ReadLine()
pop
ret
}
出现以下错误:
[IL]: Error: [C:[...]Program.exe : ::Main ][offset 0x0000000F] Expected single dimension array. 1 Error(s) Verifying Program.exe
然而这段代码验证正常:
.assembly extern mscorlib {}
.assembly Program {}
.method private static void Main() cil managed
{
.entrypoint
.maxstack 3
.locals init ( int32[] a )
ldc.i4 10
newarr int32
stloc.0
ldloc.0
ldc.i4.0
ldc.i4.s 32
stelem.i4
call string [mscorlib]System.Console::ReadLine()
pop
ret
}
这是未实现的功能、CLR 或 PEVerify 中的错误,还是仅仅是对用法的误解?这两个程序都执行得很好。
最佳答案
我的猜测 - 这只是一个猜测 - 这与向量和数组之间的区别有关。
ECMA CLI Specification (第二部分,第 14.1 和 14.2 节)是这样说的:
Vectors are single-dimension arrays with a zero lower bound. They have direct support in CIL instructions (
newarr
,ldelem
,stelem
, andldelema
).[...]
While vectors have direct support through CIL instructions, all other arrays are supported by the VES by creating subtypes of the abstract class
System.Array
.
向量是使用 T[]
语法声明的,而数组可以使用 T[n]
、T[p,q]
、T[x...y]
等。因此,在您的第一个示例中,int32[0 ... 10]
语法是一个 数组声明。在您的第二个示例中,int32[]
语法是一个vector 声明。
我的猜测是验证器反对您的第一个示例,因为它认为您正试图在数组newarr 和stelem
> 而不是向量。据推测,验证者只检查声明的类型,而不考虑数组的等级、边界等。这两个示例都正确执行的原因是因为下限为零的一维数组是一个向量,无论是出于何种意图和目的。
至于为什么错误消息说“预期的一维数组”而不是“预期的向量”,我不知道!
关于.net - 为什么 PEVerify 说 CLR 期待静态大小数组的单维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610224/
我正在混淆一个程序集,混淆后 PEVerify 发出以下错误: [MD]: Error: Method has a duplicate, token=0x060035d8. [token:0x0600
给定PEVerify如下所示的错误和警告输出,如何追溯到有问题的类和接口(interface)名称?假设我不是编译器作者或 IL 魔术师。 [MD]: Error: Class implements
我遇到了 InvalidProgramException。本文: http://support.microsoft.com/kb/312544/en-us 建议我运行 PEVerify.exe,但我似
此代码验证失败: .assembly extern mscorlib {} .assembly Program {} .method private static void Main() cil ma
我偶然发现了一些奇怪的事情:我得到了一个 BadImageFormatException,但不知道它可能指的是什么图像(程序集)。 我缩减了解决方案,使其只包含一个没有依赖项的项目: 如您所见,它仅使
我正在开发一种编译器,它在某些扩展生成器的情况下会产生错误的输出。 PEVerify 只是说“Type load failed”而没有给出任何解释原因。当我过去看到这种情况时,通常是因为生成的类型具有
我在验证一些包含返回指针的不安全方法的代码时遇到了这个问题。 例子可以这样表示: public class A { public static unsafe int* GetAnswer()
我是一名优秀的程序员,十分优秀!