Is there a return address stack on the CPU (limited to memory on chip), or is it emulated in software at the assembler using regular RAM?
Yes.
- Some processors do not have a stack (and need to emulate it using RAM for everything)
- Some have a fixed size stack
- Most use general purpose ram via a stack register
- Some have a stack that is partially in CPU cache and partially in RAM.
80x86 uses a stascstack pointer register SS:(E)SP