I'll try to incorporate block size and see what happens.
The idea I started with was adding data to the cache, then adding more data, until the very first value is removed, with the idea that when the cache is full and I add new data the first block is replaced. However I was doing this in a while loop and checking if I am still hitting the very first data right after adding more data, and it always hit, even when accessing 700,000 bytes of data. But if in a loop I accessed 70,000 bytes of data (just more than the cache_65536c_2e_16k.o test)
then tried to access the starting data it would miss, which means the idea is correct.
From my understanding what it should be doing is every time I access the starting address after adding new data it should look in the first block and see that the data is there and return a hit, and continue to do so until the cache is full and I add more data, which then would replace the first block, making accessing the start address miss, but it doesn't do this, it almost seems to "reserve" that first block no matter how much more data I add.