Existe alguma maneira de converter o aplicativo DOS de 16 bits para 32 bits?


2

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

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

obrigado

Respostas:


7

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


Obrigado, eu pensei que seria o caso, mas queria ter certeza
Daniel Wardin

3
Neste caso recompilar muito provavelmente envolvem recodificação - ajustar chamadas de API e alças etc .... por isso não é apenas uma questão de ter variáveis maiores
M.Bennett

1
A questão não era clara quanto a isso, mas embora a recompilação seja a única maneira de fazer isso, o problema aqui não é apenas arquitetura, seus tipos de variáveis. Mesmo que ele tenha recompilado, ainda é um número inteiro 'curto' em oposição a um número inteiro padrão ou um número inteiro longo.
Journeyman Geek

5

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

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


2
O DosBox é um bom programa que atende a essa necessidade. Ele permitirá que você execute jogos de 16 bits em um sistema moderno de 64 bits.
22813 Scott Chamberlain

2

Estou assumindo que, pelo limite de 16383, você quer dizer o tamanho máximo inteiro de uma variável que um software de 16 bits pode manipular (e faz tanto tempo desde que eu fiz isso que precisei procurar). Não existe uma maneira real de fazer isso sem alterar o tipo de variável - nesse 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ê poderá acessar mais memória, mas essa ainda é uma variável inteira curta de 16 bits. Você também pode acelerar as coisas executando várias instâncias. No entanto, não se transforma simplesmente um número inteiro curto em um inteiro longo, alterando a arquitetura.

Não há absolutamente nenhuma maneira, sem hackear o código fonte (quase) para corrigir isso. Eu acho que, se você fosse um ninja de 1337 desmontável, poderá executar um dissimulador, descobrir onde está essa variável e convertê-la em um inteiro longo. No entanto, nesse ponto, é melhor você descobrir qual é a lógica do software e reescrevê-lo.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.