什么是机器码(机器码包括三种)_财经知识_转赚网

什么是机器码(机器码包括三种)

小肖 0 0

前言

机器码生成了,这部分代码才是.Net程序真正运行的部分。本篇来通过一个简单的例子简要看下机器码的生成。


概括

1.前例
以Helloworld为例:

机器码生成的时候,会事先初始化一个函数头地址,也就是上面例子里面的Main函数最开始运行的那个地址。

此后JIT会对MSIL代码继续各种复杂的解析,以便于生成机器码。这里主要看下从LIR到MC的过程。


2.循环
LIR(一个封装BasicBlock的结构体)会循环被封装的BasicBlock(分割IL代码的结构体),然后赋值给GenTree(把分割的IL代码封装后赋给这棵树),对BasicBlock进行一个解析。最后会生成一个insGroup类型的emitIGlist庞大的结构体,它的实例叫ig。此后的操作都在这个结构体里面进行。ig有前LIR和后LIR,相当于一连串的链表形式。每一个ig里面包含了需要生成的机器码的个数。

以上面的helloworld为例,它把IL代码分为四段。每一段的代码LIR和机器码如下对应:

一段:总共有四个LIR和四个Machine Code

二段:两个L和M

三段:一个L和M

四段:五个L和M


3.注意点

它这个M生成的最后是没有ret指令的,这个是为啥呢?目前还没研究出结果。后面再看看


结尾

作者:江湖评谈

<

相关内容

标签: 结构体 机器码生成 代码

什么是机器码(机器码包括三种)文档下载: PDF DOC TXT