网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

让JIT运行代码的方法

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/02/26

网学网为需要ASP.net的朋友们搜集整理了让JIT运行代码的方法相关资料,希望对各位网友有所帮助!

译者:我们都知道.NET托管代码如C#、VB.NET写成的代码,都是先被编译成中间语言(IL,Intermediate Language,在运行时,再由即时编译器(JIT,Just-In-Time)编译成本机代码。那么这个神秘的过程是怎么进行的呢,JIT会在什么时 机编译你的代码呢,下面这篇翻译文章将给大家介绍这个过程,大家不要被开始复杂的工具和命令吓到,只要你坚持读下去,一定会有所收获

在接下来的几篇".net 揭密"系列文章中,我将会介绍大多数人认为理所当然的东西——代码调用,到底代码调用是怎么工作的(注意在这篇文章中我们要讨论的是非常基础的"调用"过 程,虽然看起来十分浅显,实际上这确实十分重要的,因为他可以极大的影响代码的效率,并且让你深刻的认识ClR的工作方式

首先让我们建立一个测试代码

class Foo {
public void Test() {
for (int i = 0; i < 10; i++) {
Console.WriteLine(
"Test");
}
}
}
class Program {
static void Main(string[] args) {
Foo f
= new Foo();
f.Test();
f.Test();
f.Test();
}
}

代码清单 1: 用于讨论的简单代码

为了运行这一小段代码JIT必须解决许多问题,让我们进入他的工作流程,更好的了解到底发生了什么.

在程序的控制权没有交给我们的代码之前,Main方法首先被编译,控制权就被交给了Main方法,代码的反编译源如下

static void Main(string[] args) {
Foo f = new Foo();
00000000 push esi
00000001 mov ecx,913080h
00000006 call FFB21FAC
0000000b mov esi,eax
f.Test();
0000000d mov ecx,esi
0000000f cmp dword ptr [ecx],ecx
00000011 call dword ptr ds:[009130B8h]
f.Test();
00000017 mov ecx,esi
00000019 cmp dword ptr [ecx],ecx
0000001b call dword ptr ds:[009130B8h]
f.Test();
00000021 mov ecx,esi
00000023 cmp dword ptr [ecx],ecx
00000025 call dword ptr ds:[009130B8h]
0000002b pop esi
}
0000002c ret

代码清单 2: main方法的反编译源

我们可以看到生成的代码通过间接寻址(译者注:指的是上面00000011 call dword ptr ds:[009130B8h],我在这里给不熟悉这个术语的人解释一下间接寻址:通过内存地址中的地址来找到实际地址的寻址方法叫做间接寻址.听起来很复 杂,其实你可以这样理解,我叫你找一个人,直接给你他的地址,然后你通过这个地址找到这个人,叫直接寻址,那么我给你一个地址,告诉你这个地址住的人知道 你要找的人在哪里,这就是间接寻址,在程序里,内存地址就相当于我给你的地址,内存地址里存储的值才是你最终需要的地址)来发起调用,这样做当然是有原因 的,在我们解释这个问题之前,先打开值得我们信赖的挚友——调试器,不过你可能需要先阅读这篇文章,怎样用Visual Studio查看非托管代码,并初步了解SOS(Son Of Strike)(译者注:SOS是一个VS自带的调试非托管代码的辅助模块,如果不了解,并不妨碍你理解本文的主要原理)

我将用粗体标识所有的调试器命令,并以普通字体标识其输出

在代码的第一行打上一个断点并开始调试,所有的SOS命令都需要在VisualStudio的"立即窗口"(Immediate window)中输入(译者:通过在命令窗口(command window)中输入immed并回车,就可以进入立即窗口)

本新闻共4页,当前在第1页  1  2  3  4  

  • 上一篇资讯: 服务器性能监测WMI学习
  • 下一篇资讯: WebService基础学习
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号