PE文件格式”1.9版 完整译文(四)

===========================

|“PE文件格式”1.9版注释:|

===========================

①Win32s和Win32

Win32s是“WIN32subset”的缩写,它是一个可被加入到Windows3.1和WindowsforWorkgroups系统中以使它们能够运行32位应用程序的软件包。正如它的名字所暗示的那样,Win32s只是Windows95和WindowsNT系统中使用的Win32API的一个子集。Win32s的主要功能就是在32位和16位内存地址间相互转换,也就是一种被称为换长的操作。

Win32是32位Windows(包括WindowsNT,95,98和2000等)操作系统的编程接口(API)。当应用程序是按Win32API编写时,它们就具有16位API(Win16)所不具备的一些高级性能。一个按Win32编写的程序能运行在所有的操作系统之上,除非这个程序要求特定的操作系统特性,而这些特性别的操作系统又没有时。例如,WindowsNT提供的安全特性Windows95/98就没有。一个为NT系统的这些特性编写的程序就不能运行在其它的Windows系统之上。

使用此API的程序 能运行在...上

Win32 95,98,NT,2000,XP

Win32s 3.1,95,98,NT,2000,XP

Win32c 95

Win16 3.0,3.1,95,98,NT,2000,XP

②目标文件(Objectfile )和映象文件(Imagefile)

目标文件(Objectfile)指的是链接程序(链接器)的输入文件。链接器输出的是映象文件,映象文件反过来又是加载器的输入文件。“objectfile”一词未必含有任何和面向对象的编程有关的联系。

映象文件(Imagefile)指的就是可执行文件:或者是.EXE,或者是.DLL。一个映象文件可被想象为“内存映象”。“映象文件”一词常被用来代替“可执行文件”,因为后者有时被用来专指.EXE文件。

③UNIX

是一个很流行的多用户、多任务的操作系统,由贝尔实验室于上世纪70年代早期开发出来的。只有很少的程序员建立的UNIX系统本来是设计给他们这些程序员专用的、小巧的、灵活的系统。UNIX是用高级编程语言,就是C语言,编写的第一批操作系统之一。这就意味着只要电脑上有C语言编译器,UNIX就可以被虚拟地安装到任何电脑上。天生的可移植性加上低廉的价格使得UNIX成为各大学的流行选择。(因为反信用条款禁止贝尔实验室将UNIX作为它的全权产品推向市场,所以UNIX的价格不贵。)

贝尔实验室只发布它自己源语言形式的UNIX操作系统,所以任何获得一份拷贝的人都可以按照自己的意愿来修改和定制它。到上世纪70年代末时,有好几十种不同版本的UNIX运行在世界各地。(更多信息请参阅别的资料。)

④VMS

“OpenVirtualMemorySystem”或仅VMS,是运行于VAX和Alpha系列电脑之上的高端电脑服务器操作系统的名字,现在用于使用英特尔ItaniumCPU的Hewlett-Packard(惠普)系统之上。VAX和Alpha系列电脑由美国马萨诸塞州Maynard市的数据设备(DEC)公司(现在由HP拥有)生产的。OpenVMS是一个基于多用户、多处理虚拟存储的操作系统,设计用于时间共享、批处理和事项处理等。

⑤SDK

是“softwaredevelopmentkit”(软件开发工具箱)的缩写,它是一个供程序员为特定平台开发应用程序的编程包。典型的,一个SDK包含一个或多个API库、各种编程工具和相关文档等。

⑥NeFormat(New-styleEXEFormat的缩写)

是一个早期Windows操作系统的可执行文件(.EXE),包含一个代码和数据的集合或者一个代码、数据和资源的集合。这种可执行文件也包括两个头:一个MS-DOS头和一个Windows头,和一些节。(具体参看其他资料)

⑦OS/2(IBMOperatingSystem/2,IBM操作系统/2)

操作系统/2(OS/2)最初是由Microsoft和IBM共同合作开发的一种应用于PC机的操作系统。现在只由IBM销售、支持和管理。其设计目标是替换传统的DOS操作系统。OS/2与DOS、Windows都相兼容。换句话说,OS/2操作系统可运行所有的DOS和Windows程序,但在OS/2下运行的某些特殊写程序却不能在DOS或Windows下运行。

OS/2是一个32位的、为个人计算机而设计的、支持保护模式和多任务的操作系统。OS/2系统中的图形表示管理器(PresentationManager)作为其图形系统,主要负责管理窗口、字体及控件等。OS/2系统顶部是Workplace命令解释程序(WPS-该内容在OS/22.0中有具体介绍),WPS以文档为中心,允许用户访问文件和打印机,并可以启动程序。WPS遵循IBM的用户界面标准,即“通用用户访问”。

OS/2操作系统中包含一种系统对象模型(SOM),包括磁盘、文件夹、文件、程序对象及打印机等对象。SOM允许应用程序间代码共享,但这与编程语言无关。一种称为DSOM的分布式版本支持不同计算机上对象间的相互通信。DSOM建立在CORBA基础上。SOM类似于微软的组件对象模型(ComponentObjectModel),同时两者相互竞争。目前人们对SOM和DSOM已停止深度开发。

OS/2操作系统也包括一种叫做OpenDoc的混合文档技术,它由Apple开发而成。但目前人们对OpenDoc也已停止深度开发。

由于OS/2存在市场局限性,IBM公司已于2003年3月12日按照电子商务计划停止了OS/2的发展市场。

⑧MIPS

MIPS是世界上很流行的一种RISC处理器。MIPS的意思是“无内部互锁流水级的微处理器”(Microprocessorwithoutinterlockedpipedstages),其机制是尽量利用软件办法避免流水线中的数据相关问题。它最早是在80年代初期由斯坦福(Stanford)大学Hennessy教授领导的研究小组研制出来的。MIPS公司的R系列就是在此基础上开发的RISC工业产品的微处理器。这些系列产品为很多计算机公司采用构成各种工作站和计算机系统。如R3000、R4000、R10000等都是其生产的处理器。

MIPS技术公司是美国著名的芯片设计公司,它采用精简指令系统计算结构(RISC)来设计芯片。和英特尔采用的复杂指令系统计算结构(CISC)相比,RISC具有设计更简单、设计周期更短等优点,并可以应用更多先进的技术,开发更快的下一代处理器。MIPS是出现最早的商业RISC架构芯片之一,新的架构集成了所有原来MIPS指令集,并增加了许多更强大的功能。

⑨big-endian、Little-endian和endian

Big-endian和Little-endian是用来表述一组有序的字节数存放在计算机内存中时的顺序的术语。Big-endian(即“大端结束”或者“大尾”)是将高位字节(序列中最重要的值)先存放在低地址处的顺序,而Little-endian(即“小端结束”或者“小尾”)是将低位字节(序列中最不重要的值)先存放在低地址处的顺序。举例来说,在使用Big-endian顺序的计算机中,要存储一个十六进制数4F52所需要的字节将会以4F52的形式存储(比如4F存放在内存的1000位置,而52将会被存储在1001位置)。而在使用Little-endian顺序的系统中,存储的形式将会是524F(52在地址1000处,4F在地址1001处)。IBM的370种大型机、大多数基于RISC的计算机以及Motorola的微处理器使用的是Big-endian顺序,TCP/IP协议也是。而Intel的处理器和DEC公司的一些程序则使用的Little-endian方式。

“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。

我们一般将endian翻译成“字节序”,将bigendian和littleendian称作“大尾”和“小尾”。

⑩AlphaAXP

“DECAlpha”,也被称作“AlphaAXP”,是一个原来由美国数据设备公司(DEC)开发和制造的64位RISC微处理器(例如:DECAlphaAXP21064微处理器),他们将它用在自己的工作站和服务器系列上。被设计作为VAX系列计算机的继承者,AlphaAXP不但支持VMS操作系统,同时也支持DigitalUNIX操作系统。后来的一些开放源码操作系统也能运行于Alpha之上,著名的Linux和BSDUNIX操作系统特别支持。微软直到WindowsNT4.0SP6才支持这种处理器,但Windows2000第2版之后就又不支持了。

UTC

是“CoordinatedUniversalTime”的缩写,意为“协调通用时间”,它是综合了只以地球的不停旋转速率为基准的格林威治标准时间(GreenwichMeanTime)和高度精确的原子时间的一种时标。当原子时间和地球时间达到一秒的时差时,一个闰秒就被算进UTC时间中。UTC设计于1972年1月1日,并被国际度量衡局(InternationalBureauofWeightsandMeasures)于巴黎协调通过。跟格林威治标准时间一样,UTC也被设定于0经度的本初子午线。

BSS

是“BlockStartedbySymbol”的缩写,意为“以符号开始的块”。BSS是Unix链接器产生的未初始化数据段。其他的段分别是包含程序代码的“text”段和包含已初始化数据的“data”段。BSS段的变量只有名称和大小却没有值。此名后来被许多文件格式使用,包括PE。

“以符号开始的块”指的是编译器处理未初始化数据的地方。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在,例如:

unsignedcharvar; //分配到.bss节的8位未初始化变量

unsignedcharvar2=25; //分配到.data节的8位已初始化变量

BSOD(bluescreenofdeath,蓝屏死机)

是运行在Windows环境下的计算机上出现的一个错误,甚至包括最早版本的Windows,比如Windows3.0和3.1,在后来的Windows版本比如MicrosoftWindows95,Windows98,WindowsNT,和Windows2000上仍能出现。它被开玩笑地称为蓝屏之死是因为错误发生时,屏幕变成蓝色,电脑总是不能正常运转并需要重新启动。

POSIX

是“PortableOperatingSystemInterfaceforUNIX”(UNIX可移植操作系统接口)的首字母缩写,它是定义程序和操作系统之间的接口的一套IEEE和ISO标准。通过将他们的程序设计为符合POSIX标准,开发者就能获得一些让他们的程序可以容易地被移植到其他POSIX兼容的操作系统上的保证,主要包括大多数UNIX操作系统。POSIX标准目前由IEEE下叫做“PortableApplicationsStandardsCommittee”(PASC)(可移植的应用程序标准委员会)维护。

thunk

(动词)换长,变长;已经想到的,预先想到的

(指在个人电脑中,将一个16位内存地址转换为一个32位的地址,或者相反。换长是必须的,因为英特尔的老16位微处理器使用一种叫分段内存的定址方式,而它的32位微处理器使用的却是一个统一的地址空间。Window95支持一种允许32位程序调用16位DLL的换长机制,叫统一换长。而另一方面,运行在Windows3.x和WindowsforWorkgroup下的16位应用程序不能使用32位DLL,除非32位地址被转换为16位地址。这就是Win32的功能,并被称为通用换长。

根据民间传说,thunk一词是由一位Algol-60编程语言的开发者编出的,他在一天深夜意识到参数的数据类型是可以被编译器稍先一点知道的。也就是说,到了编译器处理参数的时候,它就已经想到了(thunked)数据类型了。该词的含义近年来已变化很大了。)

(名词)换长,变长(在一个分段内存地址空间和一个统一地址空间之间互相转换的操作)

(我查遍书店中所有的大大小小的英汉和英英词典,都没有找到thunk这个词的含义。后在网上找到了它的英语解释,却找不到它对应的汉语译法,现根据它的意思,姑且译之。各位勿笑,还请高手指点。)

(英文参见:http://www.webopedia.com/TERM/T/thunk.html)

MSB

“MostSignificantBit”的首字母缩写,意为“最重要的位”。在一个二进制的数字中,它就是最左边的那一位,也是最重要的那一位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值