what is modulo addressing?
Suppose you want a buffer/list/array/whatever of 32 elements. You could do something like this:
index = 0
forever:
    store element at buffer_address + index
    index = index + 1
    if index &gt; 31:
        index = 0

but doing a comparison and a possible jump can make it hard to efficiently pipeline your code. Instead you could use modulo 32 arithmetic for the index:
index = 0
forever:
    store element at buffer_address + index
    index = index + 1
    index = index &amp; 0b11111

where &amp; is a bitwise logical-and operation. Note that the constant value 0b11111 is just 32-1. This code executes in the same amount of time and in the same order every time, so it is easier to pipeline.