高级语言中的变量优化与寻址策略
1. 布尔变量
布尔变量仅需一位就能表示“真”或“假”两个值。在高级语言(HLL)里,通常会为这类变量预留尽可能少的内存。在支持字节寻址的机器上,是一个字节;而在只能对字或双字寻址的 CPU 上,则会预留更多内存。
不过,并非所有情况都是如此。有些语言(如 FORTRAN)允许创建多字节的布尔变量,像 FORTRAN 的 LOGICAL*4 数据类型。还有些语言(如 C)不支持显式的布尔数据类型,而是用整数数据类型来表示布尔值。在这类语言中,可以通过选择用来存储布尔值的整数大小,来确定布尔变量的大小。例如,在典型的 32 位 C/C++ 实现中,能按如下方式定义 1 字节、2 字节或 4 字节的布尔值:
| C 整数数据类型 | 布尔对象大小 |
| ---- | ---- |
| char | 1 字节 |
| short int | 2 字节 |
| long int | 4 字节 |
某些情况下,当布尔变量是记录的字段或数组的元素时,一些语言只会用一位来存储该布尔变量。
2. 变量地址与高级语言
程序中变量的组织、类别和类型,会影响编译器生成代码的效率。此外,变量的声明顺序、对象大小以及在内存中的位置,也会对程序的运行时间产生重大影响。
许多 CPU 提供了专门的寻址模式,能比其他更通用的寻址模式更高效地访问内存。就像通过精心选择常量能减小程序大小、提高运行速度一样,精心选择变量的声明方式,也能让程序更高效。不过,对于常量主要关注其值,而对于变量,则必须考虑编译器将其放置在内存中的地址。
超级会员免费看
订阅专栏 解锁全文
4449

被折叠的 条评论
为什么被折叠?



