For example, does microcode tend to have instructions that "half complete" a transfer-level operation, leaving some registers in an indeterminate state, under the assumption (which is, in practice, a guarantee) that they'll always have another ucode op executed after them that does "the rest of" the operation and so puts things right?
Or, for another example, on CISC CPUs that have a small set of system-visible registers, and use register renaming to map them to a larger register file (e.g. x86_64), do the user-visible register names make it into the microcode; or do the microcode ops function directly on register-file offsets?
To answer these questions, though, we'd probably need a survey of microcode for various CPUs, including modern ones. So I'm not holding my breath. Unless an engineer from Intel or the like wants to jump in!
------
I've also been curious whether there are any lessons in the design of microcode ISAs, that can be applied in the design of abstract-machine bytecode ISAs.
Right now, most bytecode ISAs are semi-idealized RISC ISAs, with some load-time specialization of bytecode into VM-specific ops; but rarely is there recompilation of bytecode into VM-specific microcode. I'm curious why that is.