Otherwise you have to allocate registers once,
then reallocate them later on.
Nothing prevents you from using a pseudo RISC with an
infinite number of registers. This is indeed done by several
assemblers: ti c6x assembler, and ps2 VU assembler vcl.
Both have the register allocator in the assembler.
I don't think using a real RISC ISA is the way to go and I
*guess* Fabrice had a "generic" 3 address ISA in mind, not a
concrete one (I am often wrong at guessing ;).
Regarding the stack-based IL, I used a compiler kit (ACK,
Amsterdam Compiler Kit) with a back-end generator. The IL,
named em, was a stack-based IL. The main thing I remember
from this time was the high complexity of the em optimizer...