Register based VMs are not more complex than stack based VMs. You can even have a stack and the only difference is that your instructions operate on registers and not directly on the stack. I only consider generating code more complex with a register based VM.
If you are interested here is a toy vm I wrote myself: https://github.com/byo3rn/ire
PS: I suck at documentation.