If one has a 32 bit machine, a single program cannot address more than 2^32 bytes, or 4 GB. Would making use of mmap() allow one to exceed the 4 GB limit?
No, you can never exceed 4GiB of simultaneously addressable memory for a 32-bit binary. Usually, the kernel takes half and you are left with 2GiB user. Some kernels support a compromise split of 1GiB/3GiB.
However, you can ask the OS to map different portions of a file into memory at different times, essentially performing time multiplexing of the available address space. IMHO, at that point you might as well not memory map anything and just
read() from the file into buffers.