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

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

 2009-05-29 08:31:17 来源:WEB开发网   
核心提示: 因此,在功能上,(翻译) 《C# to IL》第一章 IL入门(4),它类似于C#中的Main函数,当C#代码被转换为IL代码时,为以下详细内容:函数的返回类型(void)命名空间(System)类 (Console)函数名称 (WriteLine()) 函数被调用但不会生成任何输出,因

因此,在功能上,它类似于C#中的Main函数。当C#代码被转换为IL代码时,在Main函数中包含的代码会被转换为IL中的函数中并包括.entrypoint伪指令。例如,如果在COBOL程序中执行的第一个函数被称为abc,那么在IL中生成的代码就会在这个函数中插入.entrypoint伪指令。

在常规的程序语言中,首先被执行的函数必须有一个特定的名称,例如Main,但是在IL中,只需要一个.entrypoint伪指令。因此,因为一个程序只能由一个开始点,所以在IL代码中只允许一个函数包括.entrypoint伪指令。

迫切地看到,没有生成任何错误消息编号或说明,使得调试这个错误非常困难。

a.il

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

.entrypoint伪指令需要被定位为函数中的第一个指令或最后一个指令。它仅出现在函数体中,从而将它的状态宣布为第一个被执行的函数。伪指令不是程序集指令,甚至可以被放置在任何ret指令之后。提醒你一下,ret表示函数代码的结束。

a.il

.assembly mukhi {}
.method void vijay() 
{
      .entrypoint
      call void System.Console::WriteLine()
      ret
}

我们可能有一个用C#、VB.NET编写的函数,但是在IL中执行这个函数的机制是相同的。如下所示:

我们必须使用汇编指令调用。调用指令之后,按照给定的顺序,为以下详细内容:

函数的返回类型(void)

命名空间(System)

类 (Console)

函数名称 (WriteLine())

函数被调用但不会生成任何输出。因为,我们传递一个参数到WriteLine函数中。

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

Tags:翻译 to IL

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