During a compressing portion, memory (20) is divided into cache line blocks
(500). Each cache line block is compressed and modified by replacing
address destinations of address indirection instructions with compressed
address destinations. Each cache line block is modified to have a flow
indirection instruction as the last instruction in each cache line. The
compressed cache line blocks (500) are stored in a memory (858). During a
decompression portion, a cache line (500) is accessed based on an
instruction pointer (902) value. The cache line is decompressed and stored
in cache. The cache tag is determined based on the instruction pointer
(902) value.