da bist du uns ne Erklärung
Es ist richtig, das mit Variablen, die 32 Bit groß sind, nur ein Adressraum von 4GB angesprochen werden können. Aber 32bit Programme sind nicht auf Variablen dieser Größe angewiesen. In 32bit Programmen können problemlos 64bit Variablen verwendet werden, und damit können dann 16EB (Exabyte) angesprochen werden. Außerdem müssen 64bit fähige Dateioperationen verwendet werden, z.B. lseeki64() statt lseek().
Die Verwirrung kommt möglicherweise daher, das 32bit Prozesse nur einen Adressraum (~Arbeitsspeicher) von max. 4GB adressieren können, das hat aber nichts mit maximaler Dateigröße zu tun.