Se você tiver espaço de endereçamento de 32 bits, poderá endereçar 2 ^ 32 (4Gi) bytes de memória. No que diz respeito a um programa em execução no espaço de endereço virtual, não vejo razão para que ele não consiga endereçar e acessar o valor de 4GiB.
Isso pressupõe algumas coisas, como um sistema operacional que usa memória virtual, possivelmente algum hardware (MMU) para auxiliar, etc. Mas para qualquer CPU moderna de 32 bits e qualquer SO moderno isso não deve ser um problema. Tudo moderno suporta paginação, então só tem que ter a parte daquele 4GiB que está atualmente acessando na memória física.
Tanto para uma resposta genérica, agora uma para windows e x86.
O Windows (desde a era win2000?) usa memória virtual e paginação. Também é padronizado dividir o intervalo de endereços 4Gi pela metade. A metade superior do kernel, a metade inferior dos programas do usuário. Isso impõe um limite aritificial de endereço de 2GiB para programas do usuário, ou 3GiB quando você inicializa o kernel em um modo especial e usa programas LARGEADDRESSAWARE.
Isso limitará seus programas USER a isso.
Depois, há o PAE, artificialmente expandindo seu barramento de memória para 36 bits. O PAE é um kludge feio e não é necessário desde CPUs de 64 bits (que têm sido comuns nas últimas duas décadas).
Thi está se transformando em um post 'what-if' e depois em 'answer X'. O que significa que seria bom ter uma pergunta mais específica.