aplicações C # consola todos os 16 bits?
-
19-08-2019 - |
Pergunta
Eu estava lendo-se sobre NTVDM.exe como eu construir uma rápida aplicação de console de teste e ele caiu em uma máquina de amigos reclamando sobre isso EXE.
Como eu entendo tudo DOS cmd windows (C consola # aplicações incluídas) executado como 16bit não 32bit.
Isso é verdade? Será que isso significa todas as minhas obras aplicativos de escritório consola aplicativo de volta estão executando como 16bit ao invés de fazer a maior parte do 32bit disponíveis?
O que sobre os serviços do Windows? Como eu acredito que o escreveu como um aplicativo de console, em seguida, fez correr como um serviço do Windows?
Graças
Solução
Qualquer .NET aplicativo que é compilado para x86 será de 32 bits
C aplicativos # console não estão funcionando no dos "reais" - eles executados em um ambiente de 32 bits ou de 64 bits -. Dependendo do seu sistema operacional e .NET framework
Outras dicas
Como eu entendo tudo DOS janelas cmd (C consola # aplicações incluídas) executado como 16bit não 32bit.
Isso é verdade?
Não, não em todos.
Você pode executar aplicativos do DOS no Windows, e eles são de 16 bits, mas o fato de que eles parecem um pouco consola-como é praticamente apenas coincidência.
Não há aplicativos .NET de 16 bits, e se um aplicativo é o modo de console ou não faz diferença para se é 16 ou 32 bits.
MS-DOS Apps executados como aplicativos de 16 bits sob o ntvdm.
Aplicativos "console do Windows" não são aplicações DOS, e executado como um processo nativo do Windows (onde um pouco no cabeçalho PE dos identifica EXE arquivá-lo como um aplicativo console, para que o Windows pode criar / prep um Console do Windows para o aplicativo se um já não existir, por exemplo, a execução de seu aplicativo de console do CMD ou PowerShell vai voltar a usar a janela do console já criado, enquanto um clique duplo no EXE no Explorer irá criar uma nova janela de console para a aplicação.)
CMD! = DOS
Console do Windows! = DOS
Da mesma forma, há uma API completa Console do Windows que está presente no Windows desde pelo menos o Windows 2000 (NT5) se não mais cedo (embora provavelmente NT3 / 4 somente.)
A NET aplicativo console. (Ou qualquer outro aplicativo .NET) será executado como qualquer que seja alvo hardware é JIT'ed para é. Assim, para x86 será de 32 bits.
Como eu entendo tudo DOS cmd windows (C consola # aplicações incluídas) executado como 16bit não 32bit.
Você está errado. Todas as janelas cmd.exe são de 32 ou 64 bits, dependendo da arquitetura.
DOS morreu junto com o Windows ME quase uma década atrás.
Eu não sei sobre qualquer implementação .NET VM que é capaz de rodar em modo de 16 bits. O tempo de execução Microsoft .NET e Mono são apenas dois 32/64 bits. Eu não sei sobre os outros menores, mas eu ficaria surpreso se eles pudessem trabalhar em modo de 16 bits.
Além disso, corre cmd.exe em modo de 32 bits como cmd.exe é um aplicativo do Windows de 32 bits. Por outro lado, command.com é executado no modo de 16 bits.
Na verdade, aplicativos de console estão longe de serem inerentemente de 16 bits. Isso é simplesmente não é verdade, não era mesmo verdade antes do Windows, o modo como o x86 protegido é de 32-bits, portanto, qualquer jogo ou aplicativo para DOS em execução no modo portected é de 32-bits.
Na NET, o tipo de UI (ou a falta de UI como no Windows Services) não afeta o comprimento de palavra da aplicação. Por padrão, os binários .NET são independentes de plataforma, e se executado como aplicativo de 32 bits ou 64 bits, dependendo do tipo de .NET Framework, kernel, etc. da máquina host. Embora possam ser compilado diretamente para 64-bits também.
Não há nada especial sobre um exe de console; é apenas um arquivo PE. Portanto, independentemente de consola vs winform exe vs serviço de janelas, é só ir para executar no modo tudo o que foi compilado.
Visual Studio etc nunca vai gerar um exe de 16 bits. x86 vs x64 é ;-p mais interessante
Provavelmente, o seu amigo não tem o .NET framework instalado (ou tem apenas 1.1).
Mesmo sob DOS, ".EXE" poderia ser de 16 bits ou de 32 bits (com a adequada codificação ou DOS biblioteca extensor).
NTVDM.EXE é o emulador DOS que suporta a execução de arquivos .COM
e .EXE
de 16 bits em um ambiente onde eles podem assumir a CPU é de 16 bits e que as chamadas de sistema do DOS estão disponíveis. Sua única associação com prompts de comando é que os programas DOS em modo texto usar a janela Console para fornecer a emulação de uma tela VGA em modo texto.
Como se observa, não há .NET VM disponível que pode ser executado em DOS. No entanto, pode divertida de começar a partir do Mono fontes do projeto e construir um que corre sob FreeDOS ... só para assustar seus amigos; -)