C++ Programmer's Cookbook

{C++ 基础} {C++ 高级} {C#界面,C++核心算法} {设计模式} {C#基础}

windows64位技术---.NET FrameWork代码的64位移植及与Native代码的交互(四)

.NET FrameWork代码的64位移植及与Native代码的交互

一 .NET Framework代码的移植

     使用.NET Framework的各种语言编写的代码,通过各种语言对应的编译器,最后都生成为IL中间语言代码,而这样中间语言是

与CPU的架构无关的,当IL中间语言在各种CPU上面的执行时才生成Native的CPU直接执行的指令。IL代码是在CLR通用语言运行时中执

行的,所以我们也称.NET Framework编写的代码为Managed托管代码。正是由于.NET Framework的这种运行机制,使得由.NET

Framework编写的代码,几乎不用改写代码就可以移植到64位系统上。

1) 大部分存在的托管应用无需重新编译,便可以直接在32位和64位上工作。
2) 在32位系统上的pe文件格式在新的64位中稍有改变,表示位pe+。
3) Framework 1.0,1.1的代码作为32位在64位的WOW64上运行,Framework 2.0的代码在64位上作为64位直接运行。
4) 如果是只有托管代码,则可以编译为Any cpu (还有x86,x64,ipf),可以在x86,x64,ipf上运行。

 

二 托管代码与Native代码的互调用的移植

    1)32位和64位的代码不能在同一进程中执行 :由于可以使用的内存大小不同,所使用的页文件大小不同。
    2)如果有32位和64位的互调用,则统一都移植为64位。
    3)也可以通过进程外互操作实现32位和64位的互调用。
    4)几种互操作实现技术:COM依赖;Win32依赖;使用代理进程技术(dllhost.exe)。

三 32位在64位上的执行

 像我们的32位系统上可以执行16位的程序一样,在64位的系统上也提供了向后兼容32位程序。在64位的系统上使用WOW64提

供对32位的支持,但是不再支持16位程序的运行。大部分32位应用程序能够运行在WoW64中,具有在原生Windows 32位上几乎相同的

特性。
    1)WoW64如何工作:WoW64从32位应用程序截取系统调用; 转变为64位模式; 将32位数据结构转换为64位对齐结构;发出原生64位系

统调用;从64位系统调用写回任何输出数据;返回到32位模式。
   2) 图示WOW64的调用和执行过程:

   o_64bit42.JPG
上图为调用过程,下面是执行过程:
o_64bit41.JPG

最后大家好运!有兴趣的可以继续学习sql的64位移植,在微软的webcast网站。

posted on 2006-12-12 20:40 梦在天涯 阅读(3662) 评论(0)  编辑 收藏 引用 所属分类: 64bit/FW3.5


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

EMail:itech001#126.com

导航

统计

  • 随笔 - 461
  • 文章 - 4
  • 评论 - 746
  • 引用 - 0

常用链接

随笔分类

随笔档案

收藏夹

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

积分与排名

  • 积分 - 1785191
  • 排名 - 5

最新评论

阅读排行榜