Procurando um compilador c de 16 bits para x86 [fechado]
-
15-11-2019 - |
Pergunta
Estou trabalhando na portabilidade do uc/OS-II do DOS para x86 (modo real).Eu preciso de:
Um compilador para gerar assembly x86 de 16 bits em modo real
Um montador para montar o assembly gerado em um arquivo objeto
Um vinculador para vincular os arquivos de objeto e produzir um executável (formatos de binário bruto, coff, pe ou elf são bons)
Uma biblioteca padrão sem invocar nenhum serviço DOS (
int 21h
), dependem apenas do serviço do BIOS.
Estou me perguntando se existe alguma cadeia de ferramentas que possa fazer isso.
Solução
Confira a FreeDOS projeto.Eles têm ferramentas de desenvolvimento que incluem compiladores, montadores e vinculadores.Você provavelmente terá que modificar a biblioteca padrão para que ela use chamadas de BIOS em vez de int 21h.
Outras dicas
Compiladores de 16 bits?Vários deles são mencionados aqui:
Existe um compilador C direcionado ao 8086?
Geralmente eles são usados para exercícios acadêmicos, então se você se concentrar em uma instituição de ensino, também poderá encontrar muitos exemplos:
http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086
Em um trabalho anterior, tínhamos um projeto baseado em uc/OS rodando em uma plataforma x86 de modo real.Usamos o TopSpeed C em vez dos mais conhecidos compiladores Borland ou Microsoft, porque o TopSpeed C era o único do conjunto disponível e viável na época que chegou volatile
certo.O que você precisa muito ao construir o uc/OS.Tanto o Turbo C quanto o Microsoft C (e acho que também é QuickC) compilaram incorretamente os acessos volatile
variáveis - normalmente armazenando valores em cache em registros e quebras semelhantes.
No entanto, seria difícil obter o TopSpeed C.E sua sintaxe assembler é...exclusivo.(Acho que é baseado no Modula-2 ou algo assim;acaba sendo muito diferente do MASM/TASM/nasm com o qual você pode estar 100 vezes mais familiarizado.)
Confira qualquer projeto de bootloader, como o GRUB.Deve ficar claro que eles também precisam de tudo o que você mencionou.