WEB开发网
开发学院软件开发C语言 (翻译) 《C# to IL》第一章 IL入门 阅读

(翻译) 《C# to IL》第一章 IL入门

 2009-05-29 08:31:17 来源:WEB开发网   
核心提示: “函数结束”指令被称为ret,前面所有的函数都必须以这个指令作为结束,(翻译) 《C# to IL》第一章 IL入门(3),OutputException occurred: System.BadImageFormatException: Exception fr

“函数结束”指令被称为ret。前面所有的函数都必须以这个指令作为结束。

Output

Exception occurred: System.BadImageFormatException: Exception from HRESULT: 0x8007000B. Failed to load C:ILA.EXE.

在执行这个程序时,我们再次得到了相同的错误。这次我们的问题又在哪里呢?

a.il

.assembly mukhi {}
.method void vijay() 
{
      .entrypoint
      ret
}

错误在于我们忘记在名称后面使用必不可少的伪指令assembly。我们将其合成在上面的代码中,并在一对空的花括号之后使用了名称mukhi。这个程序集伪指令用于给出程序的名称。它又被称为一个部署单元。

上面的代码是可以汇编而没有任何错误的最小的程序,虽然它在执行时并没有做什么有用的事情。它没有任何名为Main的函数。它只有一个带有entrypoint伪指令的函数vijay。现在汇编这个程序并运行而根本不会有任何错误。

在.NET中,程序集的概念是极其重要的,应该对其有彻底的认识。我们将在本章后半部分使用这个伪指令。

a.il

.assembly mukhi {}
.method void vijay() 
{
      .entrypoint
      ret
}
.method void vijay1() 
{
      .entrypoint
      ret
}

Error

***** FAILURE *****

上面错误信息的原因是,上面的程序有2个函数,vijay和vijay1,每个函数都包括了.entrypoint伪指令。正如前面提到的那样,这个指令指定了关于那个函数会被首先执行。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:翻译 to IL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接