#include <stdio.h>
int mem[64];
int idx;
void write (int d) {
mem[idx&0x3f] = d; // die Maskierung mit 0x3f erledigt den Wrap-Around
idx++;
}
void read(int* d) {
int p = idx; // der idx zeigt auf das älteste Element,
for (int i=0; i<64; i++) { // ab dort 64 Zeichen auslesen
*d = mem[p&0x3f];
d++;
p++;
}
}
int main () {
int buf[64];
for (int i=0; i<321; i++) // Buffer mit 320 Werten "überfüllen"
write(i);
read((int*)buf);
for (int i = 0; i<64; i++)
printf("%d ",buf[i]);
return 0;
}