Go Down

Topic: [Dúvida] O C compila para Assembly ou .EXE? (Read 1 time) previous topic - next topic

InsaneChess

Amigos,
To sem projeto....atoa...e bateu uma dúvida xD

O C compila para Assembly ou Linguagem de Máquina?
O arquivo ".exe" gerado, dentro dele....tem linguagem de máquina que consegue conversar direto com o hardware do computador ou Assembly?

Me falavam que o arquivo ".exe" gerado pelo C era compilação da linguagem para Assembly....
Porém, "minha visão e talves ignorancia do momento é:" 
Assembly ainda não é linguagem de máquina e sim uma intermediaria de nivel mais baixo para que nós possamos entender, e se o .exe fosse assembly o processadorr não ia intender o.O. Sendo assim, o C compila para limguagem de  máquina e não assembly?


Isso também quer dizer que Placas microcontroladoras que entendem assembly, na verdade não entendem...e sim possuem um compilador para transformar o assembly em linguagem de máquina real para depois entender?

A IDE de desenvolvimento do arduíno aceita quais linguagems?
No final antes de ela transferir o programa para a microcontroladora ela sempre vai transformar em linguagem de máquina, ou a própria microcontroladora sabe compilar C....Assembly....ou até mesmo interpletar bytecode Java?

Pessoal, quem for responder e me ajudar com as dúvidas por favor tente explicar de forma racional e detalhista e não só postar algo objetivo sem fundamento...por favor hehe.




mmoscz

Assembly é uma linguagem de programação como o C, mas você tem que programar na UNHA diretamente operando os REGISTRADORES e outras funções de baixo nível.
O C++ é uma linguagem que usa um compilador que depois é lido pelo sistema operacional que executa as funções.
A IDE do arduino pura você programa em uma variação de C++ (vi uma vez alguém programando em PYTHON), que depois é convertido em um arquivo HEX (que é a linguagem de máquina) executada pelo microprocessador.
Se não ficou satisfeito com a resposta, espero que alguém com mais paciência possa responder.
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

bubulindo

Eu não sou fluente em compiladores... mas o C não cria nada. O C é apenas uma definicão.

O compilador é que cria o executável, podes pedir ao compilador para criar um executável no sistema onde está instalado ou podes também pedir para ele compilar para Assembly e ver o código gerado. Isto é em linguagens nativas, digamos... se tiveres linguagens interpretadas, como o Java, Visual Basic, etc...
O que acontece é que o compilador cria um ficheiro que depois é executado por uma máquina virtual. Daí ser interpretada e não "nativa".

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

InsaneChess

Obrigado pelas ótimas respostas pessoal!!!

Outra pergunta:
Já que a IDE do Arduíno possue uma linguagem própria o qual ele compila para a linguagem de Máquina...em HEX, não é possível programar em Assembly?

Falo isso, por que vejo no google um monte de gente falando que programa em Assembly para o Microcontrolador...
Só que para isso, ou a IDE deveria saber converter o Assembly para a Linguagem de máquina ou o Microcontrolador Atmega168 deveria possuir nele um montador para entender assembly.

Ou seja, não tem como utilizar assembly para programar na UNO?
Caso eu tenha intendido errado, alguém me explica please xD

bubulindo

procura por AVR Studio. Lá podes programar os microcontroladores em Assembly.

Lembra-te que a lista de instruções de Assembly para AVR deve ter cerca de umas 30 e tais instruções... e dividir não é uma delas. :)
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

mmoscz

Sobre sua dúvida para microcontroladores, talvez você o que você encontra na internet é muito sobre PIC, pelo que "eu" percebi, existe um ou outro compilador de C para PIC, de resto você tem que
programar em ASM diretamente.

procura por AVR Studio. Lá podes programar os microcontroladores em Assembly.

Lembra-te que a lista de instruções de Assembly para AVR deve ter cerca de umas 30 e tais instruções... e dividir não é uma delas. :)

Como disse o bubulindo você pode também programar em ASM com os microcontroladores da Atmel, mas ela fornece um compilador de linguagem C que é usada pela IDE.
Como em todos os sistemas normalmente se programa em ASM para "tirar todo o suco da laranja", que seria tirar o máximo da performance e recursos do equipamento.


4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

bubulindo


Como disse o bubulindo você pode também programar em ASM com os microcontroladores da Atmel, mas ela fornece um compilador de linguagem C que é usada pela IDE.


A Atmel só passou a fornecer o compilador nas duas últimas versões do AVRStudio. O WinAVR nem tão pouco era publicitado pela ATMEL, mas vendo que foi esse compilador que deu popularidade aos AVR face aos PICs, passaram a incorporá-lo na sua IDE.


Como em todos os sistemas normalmente se programa em ASM para "tirar todo o suco da laranja", que seria tirar o máximo da performance e recursos do equipamento.

Mas para isso tens de saber bem mais que a linguagem do Arduino ou até C.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up