also making register machine interpreters is so easy. like, what's a register? well that's something that holds a value! how many registers can i have? well its a VM so as many as i like, so every named variable has its own register! where do i put these registers? well i have this nifty thing called a stack that grows and shrinks where i can simply allocate space for all the "registers" (read: variables) a function uses
and it works way faster than a stack machine because you're not constantly doing multiple pushes and pops just to do a simple addition