WIN32汇编语言教程:第02章 准备编程环境 · 2.5 获取资料
对于程序员来说,“高手”和“菜鸟”之间的区别实际上只有两个因素:一是从事编程时间的长短不同,使经验的多少有所区别;第二个因素就是手头掌握资料的多少了,因为很多问题并不是靠自己钻研可以解决的,必须靠资料,试想在写DOS汇编程序时如果没有中断手册,可以自己钻研出来吗?实际上,大部分“菜鸟”向“高手”问的问题完全可以由参考资料解决,即使一个“菜鸟”对某个问题暂时不懂,但手头有解决问题的详细资料,经过一段时间的钻研,问题自然会解决。“高手”就是这样慢慢练成的。
在Win32汇编编程中,资料显得尤其重要。在DOS时代,整个操作系统的大小不过几十KB,所有的BASIC和C命令基本上都可以直接用人脑记忆下来,用于汇编编程的中断手册也基本上可以让人记住常用的部分。
不过,当时钟走到21世纪的时候,软件规模飞速膨胀,仅是开发工具就动辄几十MB,更不用说复杂的操作系统及其他软件了,所以现在完成一件最基本的事情都必须从文档中寻找合适的方法,大部分程序员手边的文档比字典还要厚几倍,并且,在这些浩如烟海的文档中苦苦寻找之后,还不一定能找出一个满意的解答。像Windows就是一个数据结构的迷宫,其API的资料远比DOS下的中断资料要多,在这种情况下,程序员的经验可以在程序的优化和调试方面发挥作用,但如果没有资料,连程序都写不出来,就谈不到优化和调试了。
在硬件方面,处理器的发展也很快,图书市场上的资料往往要慢一个节拍,国内的图书尤其如此,想了解最新的指令集就必须到厂家的网站上下载最新资料。所以程序员需要一个强大的信息网络来方便信息的查找,方便与软件开发商的交流,特别是通过Internet。
目前,各大软件开发商都具有各自的程序员信息网络,这些网络能为程序员提供特别的服务和帮助。所以要寻找编程资料,首选方案就是常接触这些网络,如Borland公司的Borland Community,Oracle公司的Oracle Technical Network,Sun公司的Sun Developer以及IBM公司的developerWorks等。
2.5.1 Windows资料的来源
要获取Windows的资料自然要到它的老窝——Microsoft的站点上去,Microsoft的程序员网络是MSDN(Microsoft Developers Network),在这里可以获得微软所有产品和操作系统的相关信息。它的网址是http://msdn.microsoft.com。
MSDN是一个内容非常全面的信息网络。现在这个网络一共有300万注册用户,它不仅在互联网上建立了网站,并且也发行MSDN杂志以及可供订阅的CD和DVD,其中包括编程信息、技术论文、操作系统、文档、工具、程序代码以及新产品的Beta测试包。MSDN的技术支持方式既有免费信息服务,也有收费的服务,例如,订阅MSDN的印刷品以及购买MSDN的CD和DVD等,购买MSDN实际上等于购买了一种服务。
MSDN的收费服务是以订阅形式出现的一年4期的光盘资料库,它有3个版本:
● MSDN开发库:有知识库和一些例子代码,一般是20张左右的光盘,可以联机检索,一般可以从这里找到全部的API资料、大量的基础知识和代码。
● MSDN专业版:包括MSDN开发库的全部内容,再加上Microsoft操作系统类软件,SDK(Software Development Kit)和DDK(Device Driver Development Kit)。SDK和DDK是软件开发包和驱动程序开发包,它们包括开发软件或驱动程序的头文件、例子以及一些开发工具,要想知道一个课题的最佳解决方案就是去看对应的SDK和DDK中的例子文件。
● MSDN宇宙版:包括MSDN专业版的内容,还包括Microsoft所有软件,如Windows 2000,Office和SQL Server等,用户从一个软件Beta版时就可以开始评估使用,使开发人员可以最早拿到最新的技术与资料,但这些产品不能用于企业环境去架构网络。
MSDN的订阅费用不菲,3个版本每年的订阅费用分别为1 500元、8 200元和29 000元,这显然是一笔不小的费用,所以很多程序员还是选择在Microsoft的站点上使用联机版本,但MSDN站点在内容上显得稍微过繁,有人对此的评论是:“Microsoft每次都会提供大量的资料,以至于可能需要费些力气才能找到所需的东西,不过这总比什么都不提供强”。
从网上也可以找到MSDN的各种独立部分分别下载,如各种版本的SDK和DDK等,当然这不会在Microsoft自己的站点上。同时从网上也可以找到一些单独分离出来的帮助文件,如《Microsoft Win32 Programmer's Reference》,《Win32 Multimedia Programmer's Reference》,《OpenGL Programmer's Reference》,《Windows Sockets2 Application Program Interface》以及其他几乎所有的程序员手册,它们中间包括了对应的API函数的详细资料。
使用这些Windows资料时要注意它们几乎全部是以C语言的语法提供的,因为在Win32的环境下,不管是什么语言,全部都是建立在Win32 API的基础上的,而Windows本身就是用C开发的。我们要写Win32汇编程序,参考资料也只好使用这些C的版本,这就要求读者对C语言中函数的定义、数据类型和数据结构的定义等有基础的了解。也正因如此,如果读者有用MFC编写Windows程序的经验,看完了这本书以后一定会说:“汇编,C,Windows,怎么是同一回事?”的确,在Win32环境下,所有的语言实际上是一回事,只不过Visual FoxPro,Visual BASIC等软件对API以及Windows的消息体系封装很深,Visual C++和C++ Builder等软件相对少一点,而汇编不加任何封装。
有了足够的参考资料以后,并不代表着就可以用汇编编写出常用的Win32程序了,因为毕竟这些只是金字塔的一个底边而已,爬上去的路就是学习的过程,中间最好的参考就是Win32汇编的教程和例子,Internet上有很多的站点是关于Win32汇编编程的,这里列出几个站点,读者可以从这些站点的链接中找到其他很多的相关站点:
● MASM32软件包的官方站点——http://www.movsd.com
包括MASM32软件包下载、简单的Win32汇编例子和一些网站链接。
● Iczlion的Win32汇编站点——http://win32asm.cjb.net
最著名的英文Win32汇编站点,包括Iczlion书写的Win32汇编教程、大量的例子和一个讨论区。这个网站需要用代理服务器访问。
● 笔者的Win32汇编站点——http://asm.yeah.net
中文Win32汇编站点,有Iczlion汇编教程的中文版以及其他的一些教程,也包括大量例子,有一个中文的Win32汇编讨论区。
2.5.2 Intel处理器资料
Win32汇编参考资料另一个重要部分是Intel处理器的资料,这些资料大部分可以在Intel的官方网站上找到,网址是http://www.intel.com,但Intel的网站存在和Microsoft的网站同样的问题,就是资料“太多”了反而不容易查找。
Intel发布的资料大部分是以PDF格式出现的,每一类文件有惟一的编号,可以用编号或资料名称从网站的搜索栏中找到对应的PDF文件,和Win32汇编编程密切相关的是处理器结构和指令集的参考资料—Intel处理器软件开发员手册《Intel Architecture Software Developer's Manual》,它由3个部分组成:
● 第一部分:基本体系(BASIC Architecture),编号24547004;
● 第二部分:指令集参考(Instruction Set Reference),编号24547104;
● 第三部分:编程指南(System Programming Guide),编号24547204。
编号中的前缀245470、245471和245472是文件编号,后面的04表示修订版本是第4次,读者可以在Intel的网站中输入文件编号找到这几个文件并下载使用。它们包括了最新的MMX和SSE指令的用法。
上页:第02章 准备编程环境 · 2.4 make工具的用法(2) 下页:第02章 准备编程环境 · 2.6 构建编程环境