ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
自动生成复制表时,链接器提供了一种压缩加载空间数据的方法。这可以减少只读存储器占用空间。在将压缩的数据从加载空间复制到运行空间时可以解压缩此数据。
可通过两种方式指定压缩:
table( name, compression= compression_kind)
compression_kind 可以是以下类型之一:
不带 compression 关键字的 table() 运算符使用通过命令行选项 --copy_compression 指定的压缩类型。
选择压缩时,不能保证链接器将会压缩加载数据。仅当压缩会减小加载空间的整体大小时,链接器才会压缩加载数据。在某些情况下,即使压缩会使加载段大小变小,如果解压缩例程会抵消节省量,那么链接器也不会压缩数据。
例如,假设 RLE 压缩将 section1 的大小减少 30 个字节。此外,还假设 RLE 解压缩例程在加载空间中占用 40 字节。通过选择对 section1 进行压缩,加载空间将增加 10 个字节。因此,链接器不会压缩 section1。另一方面,如果有另一个段(比如 section2)可以从应用相同的压缩中受益超过 10 个字节,则可以压缩这两个段,使得整体加载空间减小。在此类情况下,链接器会压缩这两个段。
当这样做无法实现节省时,不能强制链接器压缩数据。
不能对解压缩例程或包含 .cinit 的 GROUP 中的任何成员进行压缩。