Quelle discussion très intéressante entre les différents types d'émulation. Je pense que cela méritait bien un sujet à part entière plutôt que d'être noyé ailleurs.
Pour ma part, je n'ai jamais vraiment compris pourquoi PCem était si exigeant, sachant que les instructions de la machine émulée et de la machine hôte sont les mêmes (x86). A de très rares exceptions près (le 8086 ne peut adresser que 1024 Ko de RAM en mode réel ; il y a 64 Ko supplémentaires pour le 286+), les instructions d'un programme pour PC écrit il y a plus de 35 ans sont toujours compréhensibles par un processeur x86 fabriqué en 2020, la rétrocompatibilité est le principe fondamental qui explique la pérennité du x86 sur quatre décennies. Si c'est un problème de vitesse, un ralentissement devrait pouvoir s'opérer de manière logicielle sans devoir pour autant émuler un vieux processeur x86 de A à Z comme s'il s'agissait d'un cpu non-x86. Pourquoi réinventer logiciellement ce qui existe encore matériellement sur un PC moderne ? PCem n'existe pas pour Android, le programme s'adresse à des gens qui vont l'utiliser sur un x86, comme le processeur émulé.
Si on vire l'émulation du processeur, cela doit déjà diminuer nettement les besoins en calculs, non ? Il faut bien sûr émuler les autres composants (carte son, carte vidéo, etc.) mais DOSBox et les programmes de virtualisation émulent également ces autres composants, sans que cela réclame autant de ressources. A moins que ce soit la seule émulation de ces composants périphériques qui demande autant de calculs, tant l'émulation se veut la plus fidèle possible. Mais PCem n'est pas un hyperviseur (virtualisation) à ma connaissance.