Pergunta

Eu estou trabalhando em um projeto de sistemas embarcados e ter executado em um problema do compilador a ser programaticamente incorporado na ++ IDE Paradigm C. Eu gostaria de ser capaz de automatizar edifício.

O processador é o AMD186ES. Eu não estou trabalhando com o sistema operacional - apenas coisas BareMetal. Eu preciso gerar de modo real de 16 bits código de máquina 8086 de C ++.

O meu googling indica que G ++ pode construir tal código.

As minhas perguntas são:

Pode g ++ ser configurado para construir este código de máquina?

Existem outros compiladores C ++ que pode fazê-lo também?

Foi útil?

Solução

Atualmente, estou usando as gnu (parte do binutils eo assembler utilizado para gcc) e eu fui com sucesso a montagem de código de montagem de 16 bits com o seguinte:

as <file>
ld --oformat binary -Ttext 0x0 -e start <file>

com os meus arquivos de montagem começando com:

.code16
.globl start
.text
start:

desde a sua binária simples omissão das linhas,

.globl start
start:

simplesmente deu um aviso, mesmo que binários planas não precisam de ponto de entrada.


algo que eu aprendi da maneira mais difícil;

-Ttext 0x0

é crítica, fora de outra forma o segmento .text é empurrado de 16bit endereçamento gama (não me pergunte o porquê)

Pessoalmente, estou ainda aprendendo montagem, assim que esta é apenas a minha maneira, não necessariamente o melhor caminho.


EDIT: Se você estiver escrevendo código de inicialização, você deve alterar

-Ttext 0x0

para

-Ttext 0x7c00

este irá compensar seus endereços de memória por 0x7c00 desde código de arranque é normalmente carregado na 0x7c00 pelo BIOS.

Outras dicas

Sua melhor aposta é provavelmente OpenWatcom , que inclui um compilador C ++. Voltar no início-a meados dos anos 90, eu acredito que este foi o melhor C / C ++ compilador ao redor. Foi código aberto há alguns anos.

não o seu fornecedor de chip (AMD, eu acho) tem nenhum ponteiros para compiladores para o chip?

Se não, você pode ser capaz de utilizar alguns compiladores de 16 bits - mas você vai ter vários potenciais grandes problemas:

  1. recebendo uma biblioteca para o compilador que não é dependente do BIOS ou MS-DOS
  2. depuração
  3. Os ligantes para sistemas embarcados geralmente têm suporte específico para localizar o código em regiões de memória específicas. Isso não é geralmente incluído em compiladores para DOS, mas você pode ser capaz de encontrar algum tipo de vinculador / localizador que vai fazer o truque para você.

Um par de compiladores que ainda são suportados e gerar código de 16 bits são:

Esta busca google mostra uma série de links para definir gcc como um compilador cruzado. Para obtê-lo para atingir algo diferente de um ELF padrão binário pode frig a saída. Esta ligação discute excluindo as bibliotecas padrão e personalizar o formato de saída. Você pode ter que fazer alguma mexer para obtê-lo para o trabalho.

Como alternativa openwatcom.org tem uma versão de código aberto do Watcom compilador C, que também pode ser capaz de fazer o que quiser.

O mais recente como por 2014 é dev86 .

Há um patch para o GCC 4.3: Nova back-end IA16: 16-bit Intel x86

aqui está uma atualização para ele . Note-se que ele provavelmente não funciona muito bem, por exemplo, o pós atualizados diz: "construtores e destruidores são agora suportadas, mas por algum motivo eles único trabalho na configuração alces. "

Esta Docker recipiente tem uma construção do mesmo: https: // registry.hub.docker.com/u/ysangkok/ia16-gcc-rask

Eu não conseguem fazer os binários do DOS ainda: Como faço para montar GAS montagem e vinculá-lo com a biblioteca Abrir Watcom C?

Dê uma olhada bcc , que é um compilador de 16-bit x86 C. Por exemplo, existem também pacotes Debian para ele .

Não tenho certeza, mas eu acho versão antiga do Borland C ++ foi capaz de fazer isso. você pode baixar a versão 5.5 t: aqui boa sorte

Tem sido um longo tempo desde que eu olhei para coisas Paradigm (eles ainda estão por aí?) - você tem certeza de que eles não têm equivalentes de linha de comando para o compilador? Minha lembrança é que eles foram construídos em cima de toolchain compilador da Borland ... Então talvez uma cópia antiga do compiladores Borland pode fazer o truque?

- Ah, parecendo um pouco futher, acho que Paradigm ainda está por aí (www.devtools.com) venda de ferramentas X86. (Deve ser uma vaca de dinheiro!)

Seu produto profissional inclui scripting ... Dependendo da quantidade de trabalho que você pretende fazer, ele só poderia valer a pena para morder a bala e comprar a sua oferta completa ...

Boa sorte.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top