9.9编写编译时“程序”
HLA编译时语言提供了一种强有力的机制,可以用来编写“程序”,这种“程序”是HLA编译汇编语言程序的时候执行。虽然可以使用l{IA编译时语言来编写一些通用程序,但HLA编译时语言真正的目的在于编写那些短小的、编写其他程序的程序。特别地,HLA编译时语言的主要目的是使大型的复杂的汇编语言序列的创建过程变成自动化的。下面的小节提供了这种编译时程序的一些简单示例。
9.9.1在编译时构造数据表
早些时候,本书曾建议编写程序来为汇编语言程序生成大型复杂的查找表(请参见8.4.3节中关于表的讨论)。第8章提供了一些HLA示例,但指出编写单独的程序是不必要的。的确是这样;仅仅使用HLA的编译时语言机制就可以产生大多数所需的查找表。实际上,填写表项是HLA编译时语言的一种主要用途。在本节中,我们将看一看如何在编译过程中使用HLA的编译时语言来构造数据表。
在8.4.3节中,曾有一个HLA程序示例,该程序对一个文本文件进行操作,而这个文件包含了一张关于正弦函数的查找表。表中包含360项以及它们的索引,这些索引以度数为单位指定了所有的角。表中每个int32项都包含值sin(anglel)*1000,其中angle等于索引的值。8.4.3节曾建议运行这个程序,然后将程序输出的文本包含在实际使用表的程序当中。使用编译时语言,就可以省去许多工作。程序清单9.8中的HLA程序包含一个简短的编译时代码段,用于直接构造这个正弦函数表。
……