8 位索引之后的数据以行程编码 (RLE) 格式进行压缩。采用可以使用以下算法解压缩的简单行程编码:
- 读取第一个字节,分隔符 (D)。
- 读取下一个字节 (B)。
- 如果 B != D,则将 B 复制到输出缓冲区并转到步骤 2。
- 读取下一个字节 (L)。
- 如果 L == 0,则长度要么是 16 位,要么是 24 位值,或者我们已经到达数据的末尾,读取下一个字节 (L)。
- 如果 L == 0,则长度为 24 位值,或者已经到达数据的末尾,读取下一个字节 (L)。
- 如果 L == 0,则已经到达数据的末尾,转到步骤 7。
- 否则 L <<= 16,将接下来的两个字节读入 L 的低 16 位以完成 L 的 24 位值。
- 否则 L <<= 8,将接下来的字节读入 L 的低 8 位以完成 L 的 16 位值。
- 否则,如果 L > 0 且 L < 4,则将 D 复制到输出缓冲区 L 次。转到步骤 2。
- 否则,长度为 8 位值 (L)。
- 读取下一个字节(C);C 是重复字符。
- 将 C 写入输出缓冲区 L 次;转到步骤 2。
- 处理结束。
运行时支持库有一个例程 __TI_decompress_rle24() 来解压缩使用 RLE 压缩的数据。此函数的第一个参数是指向位于 8 位索引之后的字节的地址,第二个参数是 C 自动初始化记录的运行地址。
注: RLE 解压缩例程先前的解压缩例程 __TI_decompress_rle() 包含在运行时支持库中,用于解压缩由旧版本链接器生成的 RLE 编码。