Same for UART bridge - Have a look on STM32L403 implementation in QEMU which I believe does implement UART as well. And ADC and other peripherals.
And regarding autosnapshot, that's can be done via GDB as well - save RAM + registers and then load them back.
tl2do•32m ago
general1465•9m ago
So if you correctly abstract business logic from peripheral code, you can do most of your development without ever uploading to target.