Linguagem C, fluxograma.

Chunli

Membro
Linguagem atual > Compiler/interpreter > assembly > Assembler - Hexadec > Transist > Binary

Minha dúvida: Não entendi porque o assembly ficou separado da parte do compiler, o assembly também não é considerado um compilador?

Meu palpite: Está separado porque é um compilador BEM menos complexo?

OBS* Comecei a estudar programação agora, não sei quase nada ainda.
 
Os CPUs não percebem as linguagens de programação, seja ela C, C++, C#, JAVA, etc. No entanto estas linguagens têm um conjunto de regras que têm de ser respeitadas. O que o compilador faz é verificar se as regras no programa que escreveste estão correctas.

Após essa verificação estar correcta, agora é necessário converter as instruções que escreveste para algo que o CPU entenda e aí vem a linguagem assembly. Esta linguagem é constituída por instruções realizadas a baixo nível e que o CPU entende.

A vantagem de usares as linguagens de programação é que é muito mais fácil para o programador realizar o que quer que seja do que estar a escrever código em assembly. Um simples programazito académico escrever em assembly já seria uma dor de cabeça, agora imagina mesmo um software.

Penso que a explicação para perceberes as coisas é mais ou menos isto. Se tiver algo incompleto ou errado peço que me completem/corrijam. :)
 
Linguagem atual > Compiler/interpreter > assembly > Assembler - Hexadec > Transist > Binary

Minha dúvida: Não entendi porque o assembly ficou separado da parte do compiler, o assembly também não é considerado um compilador?

Meu palpite: Está separado porque é um compilador BEM menos complexo?

OBS* Comecei a estudar programação agora, não sei quase nada ainda.

Em complemento, o assembly é uma linguagem baixo nível, as vezes também designada de linguagem máquina, é uma linguagem que no fundo se resume a um conjunto de instruções que se traduzem no binário que é interpretado pela lógica que opera o CPU.

Cada arquitetura tem o seu próprio assembly, para se programar nesta linguagem é necessário conhecer muito bem toda a arquitetura da máquina que se está a programar, CPU e seus recursos, periféricos, memórias, barramentos e etc.

Para teres uma ideia uma simples instrução de C pode corresponder a dezenas de instruções em assembly, por exemplo para mudar o valor de uma variável é necessário endereçar a posição de memória onde esta está guardada, mover a variável para um acumulador fazer sobre ela as operações pretendidas e por fim voltar a endereçar a memória "para a posição onde se pretende que fique guardada" e mover.
Daí que geralmente o assembly é mais utilizado para programar microcontroladores com recursos muito mais limitados que qualquer PC que encontres a funcionar nos dias de hoje e em que esta programação se pretende de máxima eficiência e geralmente as tarefas a executar têm um nível de complexidade relativamente baixo, um simples "Hello World" em assembly não é algo trivial de se fazer.
 
Back
Topo