大榕树 \ Pascal语言 \ 算法与技巧

编译模式

原文链接:http://www.mydrs.org/program/list.asp?id=41


·编译模式

  在Pascal的IDE下,打开菜单Compile,选择项目Target,会弹出一个窗口,有三种选择:Real mode Application、Protected mode Application和Windows Application。这其实就是选择程序(或单元)的编译模式,分别对应的编译模式为:DOS实模式、保护模式和Windows模式。

  选择不同的编译模式编译程序或单元,会生成不同类型的程序,运行在不同的环境中,使用相应模式的单元。不同编译模式的程序可以使用的标准单元有所不同;即使是同一个单元,在不同的编译模式下,代码也可能略有不同。

  用不同的编译模式编译程序是BP7比BP6新增的一项重要功能。

·不同的编译模式

·DOS实模式(Real mode)

  这是默认的编译模式,TP7和其以前的版本都是使用这种编译模式的。程序运行在DOS实模式环境中,只能使用最大640KB的常规内存,速度较快,生成代码较短。DOS实模式的单元文件扩展名为.tpu;

·保护模式(Protected mode)

  DOS是一个实模式的操作系统,只能管理640KB的常规内存,对于拥有数十至数百MB的扩充内存则无法访问。为了弥补DOS的这个缺陷,各大计算机公司联合制定了一个叫做“DOS保护模式界面”(DPMI)的协定,以规范保护模式下程序的运行。DPMI是对DOS的扩展。在DPMI协议之下,DOS应用程序可以访问计算机的所有内存。而Pascal的保护模式,就是使用这个规范的的一种编译模式。

  程序运行在DOS保护模式环境中,能使用扩充内存,速度略有下降,不能调试。生成的EXE文件有时需要把Pascal的附带文件rtm.exe复制到同一目录下才能运行。保护模式的单元文件扩展名为.tpp;

  在保护模式下,System单元有两个Word类型变量:HeapBlock和HeapLimit。它们影响程序使用扩充内存的性能。如果使用默认值,即不对其进行修改,不能充分利用扩充内存,经常只能使用到总内存的一半。我经过多次试验,发现把它们都赋值为64000时,较能充分利用扩充内存。

·Windows模式(Windows)

  这是用以编写Windows 3.x应用程序的编译模式,我觉得没什么用,现在Pascal程序员编写Windows程序都用Delphi了。Windows模式的单元文件扩展名为.tpw。

·编写适应不同编译模式的程序

  在不同的编译模式下,标准单元的代码有所不同。要编写适应不同编译模式的程序,就要使程序在不同的编译模式下生成不同的代码。这需要用到条件编译注释。

  例如,如果在程序的一部分中,当使用实模式编译时用代码A,使用保护模式编译时用代码B,就可以这样编写:

{$IFDEF MSDOS}
A
{$ENDIF}
{$IFDEF DPMI}
B
{$ENDIF}


作者:陈世熹
来源:http://xpascal.yeah.net/
时间:2001-06-11

上一篇:设置正文文件缓冲区
下一篇:编译指示

大榕树 版权所有 ©1999-2006