Existe alguma maneira de converter 16bit DOS app para 32bit?

2

Existe alguma maneira de converter um aplicativo DOS de 16 bits em um aplicativo de 32 bits para que eu não seja restringido pelo limite de 16.383? Ou talvez haja uma maneira de executar um aplicativo de 16 bits como um aplicativo de 32 bits sem convertê-lo?

Eu não tenho o código-fonte do programa, portanto não posso reconstruí-lo de nenhuma maneira.

Obrigado

    
por Daniel Wardin 21.04.2013 / 21:00

3 respostas

7

você não pode convertê-los. Somente se você tiver fonte você pode recompilá-los como 32 bits.

    
por 21.04.2013 / 21:03
5

Quais serviços como os Good Old Games fazem para que jogos realmente antigos (ex 16 bit dos) funcionem em sistemas modernos? empacotar os dos executáveis e uma máquina virtual juntos para que o jogo ache que está sendo executado no DOS enquanto a VM traduz toda a interação de hardware de baixo nível que os jogos DOS fazem nos comandos padrão do sistema operacional Windows / Mac / Linux.

Você pode fazer o mesmo para executar aplicativos legados em hardware moderno, fazendo com que o novo sistema operacional ache que ele esteja executando um aplicativo de 32 bits; mas todas as limitações antigas do sistema de 16 bits permanecerão.

    
por 22.04.2013 / 00:40
2

Estou assumindo pelo limite de 16.383, você quer dizer o tamanho inteiro máximo de uma variável que um software de 16 bits pode manipular (e tem sido tão longo desde que eu fiz isso que eu tive que procurá-lo). Não há nenhuma maneira real de fazer isso sem alterar o tipo de variável - neste caso, inteiros curtos para inteiros longos.

Vamos supor que temos um software mágico que nos permite executar um software de 16 bits com todos os atributos de um sistema de 32 ou 64 bits - você seria capaz de acessar mais memória, mas isso é ainda uma variável inteira curta de 16 bits. Você também pode acelerar as coisas executando várias instâncias. Não basta simplesmente transformar um inteiro curto em um inteiro longo, mas alterando a arquitetura.

Não há absolutamente nenhuma maneira, sem invadir o código-fonte (bem perto) para corrigir isso. Eu acho que, se você fosse um ninja desmembrador do 1337, você poderia rodar um dissembler, descobrir onde esta variável está e convertê-la em um inteiro longo. No entanto, neste ponto, é melhor você descobrir qual é a lógica do software e reescrevê-lo.

Fontes: documentação do cabeçalho C ++

    
por 22.04.2013 / 03:15