Questão Pequeno software para executar aplicativos de 16 bits


Não consigo executar um pequeno aplicativo do Windows de 16 bits no meu sistema de 64 bits. As sugestões que encontrei on-line envolvem a execução do aplicativo de 16 bits em uma máquina virtual, mas executar um sistema operacional inteiro apenas para executar um aplicativo pequeno parece ser um exagero.

Eu imagino que seria possível fazer um pequeno software que emula as coisas necessárias que o aplicativo de 16 bits precisa. Alguém sabe de tal solução?


2


origem


Um Virtualbox não é pesado de todo. Heck, mesmo XP parece minúsculo em um computador moderno com 7 ou 8. E 16 bits? Basta executar algo ainda mais antigo que o XP e você está resolvido. - Shiki
Não é possível executar software de 16 bits em um sistema operacional de 64 bits, portanto, isso limita o uso de uma máquina virtual ou de um aplicativo de 32 bits que permite a simulação da funcionalidade necessária (por exemplo, DOSBox). Não podemos fornecer recomendações específicas de produtos aqui no Superusuário. - Ramhound
Eu tenho pesquisado isso há algum tempo e pensei que talvez tenha perdido alguma solução mais simples. Em um novo PC, a VM é executada rapidamente, mas a execução do aplicativo envolve várias etapas (executar VM, aguardar para inicializar o SO e executar o aplicativo). E a configuração para que o aplicativo de 16 bits possa ser salvo em minha pasta de documentos é um incômodo. - Armand P


Respostas:


Eu imagino que seria possível fazer um pequeno software que emula o   material necessário que o aplicativo de 16 bits precisa. Alguém sabe de tal solução?

Na verdade isso não é trivial. Uma CPU x86 no modo amd64 não apenas ganha muita funcionalidade (registradores duplos, registradores MMX duplos, modo de endereço de 64 bits, ...) também perde o acesso a algumas opções legadas. Ele pode executar aplicativos de 32 bits sem problemas, mas não há mais como executar aplicativos de 16 bits de forma nativa. Assim, você realmente precisa emular uma CPU mais antiga. A emulação é relativamente lenta e não é totalmente trivial.

A solução usual para isso é colocar a coisa toda em uma VM, por ex. um alimentado pelo qEMu que pode emular outros CPUs.

Sugestões que encontrei on-line envolvem a execução do aplicativo de 16 bits em uma máquina virtual,   mas rodar um sistema operacional inteiro apenas para executar um pequeno aplicativo parece ser um exagero.

É um pouco exagerado. A solução certa seria recompilar o aplicativo e executá-lo como um executável de 64 bits (muitas vezes trivial se o aplicativo for bem escrito e usar coisas como size_t em vez de apenas assumir que as coisas nunca mudarão). Isso requer que você tenha acesso ao código-fonte, o que nem sempre é o caso.

Soluções alternativas seriam:

  • Mantenha um antigo sistema DOS / windows 2/3 / 3.11 ao redor (por favor G-d NÃO)
  • execute-o dentro de uma VM.
  • Emular a máquina antiga via VINHO.

A primeira solução não é recomendada. Você ficaria preso no sistema operacional antigo, por exemplo windows 7 32bit (não use um sistema operacional mais antigo que não tenha mais atualizações. Não use o XP, a menos que você queira mudar o SO antes 8º de abril de 2014. Ou use um host dedicado sem acesso à rede, todas as portas USB coladas fechadas, etc. Isso tem a desvantagem óbvia de prejudicar a usabilidade.

Executá-lo em uma VM é ótimo. Funciona, pode ser isolado. É fácil fazer backup e você pode migrar a VM para uma nova máquina sempre que necessário. Prova futura é uma coisa boa.
A desvantagem óbvia é executar a VM, mas parte dela pode ser automatizada (por exemplo, inicializá-la automaticamente quando você liga a sua área de trabalho. Ative o desligamento da VM no desligamento do Windows etc etc.

A emulação também funcionará e normalmente será mais lenta. (a maioria das exceções onde a emulação é mais rápida envolveu WINE, Linux e jogos onde a chamada OpenGL foi muito mais rápida no Linux, causando um inesperado ganho de velocidade de 40% para alguns jogos). Ainda assim, mais lento não é ruim, considerando que o aplicativo antigo provavelmente rodou em alguns 16-ish MHz 286 (era de 16 bits) e agora em um núcleo moderno multi-GigaHertz. Mesmo que diminuísse em 99%, ainda assim seria mais rápido.

Ainda assim, para facilitar a manutenção e a verificação futura: obtenha uma VM com o win7-32 ​​bit e execute o aplicativo nela.


1



Obrigado pela explicação completa. Eu ainda acho que um emulador simples seria possível (o WINE é a prova disso). Mas parece que neste ponto um WM com sistema operacional completo é o único caminho. - Armand P
WINE em 64 bits MacOSX executa meu aplicativo de 16 bits sem problemas. Então, esperando em uma porta WINE para o Windows. - Armand P