Departamento de Ciência da Computação
Por: Salezio.Francisco • 6/3/2018 • 2.279 Palavras (10 Páginas) • 237 Visualizações
...
Consequentemente, muitos programadores evitam a utilização do assembly, por ser uma linguagem muito complexa para a programação. Um programador perde muito tempo tentando programar em assembly, o que seria facilmente feito em outra linguagem. São nestas situações onde o código em assembly é complexo demais que é conveniente a utilização de outras linguagens de mais alto nível.
Vantagens e desvantagens
Mesmo com as linguagens de alto nível, o assembly ainda pode oferecer algumas vantagens, como por exemplo:
Uma das maiores vantagens nos códigos em assembly seria a rapidez de execução nos códigos e a sua otimização, com esta linguagem é sempre possível escrever códigos mais rápidos, mas para isso é preciso de um programador muito bem treinado em assembly.
Com a linguagem de programação assembly, o espaço ocupado em memória é otimizado, o que não acontece com os compiladores de outras linguagens.
A portabilidade da linguagem é muito útil, como as linguagens Assembly são específicas de cada processador, onde outras linguagens poderiam oferecer problemas. Também por esta razão o kernel possui partes de códigos escritos em assembly.
Desvantagens em comparação com linguagens de alto nível:
A linguagem assembly possui um número muito limitado de instruções, e muitas operações simples demais , dificultando consideravelmente a vida do programador, o que seria facilmente feito em uma linguagem de alto nível.
A linguagem não é considerada muito “legível”, o que exige bons comentários para a compreensão do código.
O programador deve possuir um grande conhecimento da maquina em que se está sendo programada, pois com a linguagem assembly ele está lidando diretamente com os recursos da memória do processador.
Uma linguagem que oferece custo de desenvolvimento mais elevado, pela sua complexidade.
Também possui o problema de portabilidade, pois ela muda de acordo com a família de processadores.
Aplicações
Os códigos em assembly são geralmente aplicados em processos que necessitam de controle em tempo real ou otimização de tarefas escritas em linguagem de alto nível. Alguns exemplos de aplicações da linguagem são:
Controle de processos para resposta em tempo real, onde o programa tem um tempo limitado para executar todos os processos. Também é muito utilizada para a implementação de programas de comunicação ou transferência de dados, pela vantagem de poder acessar o hardware do computador. A otimização de sub-tarefas é onde o assembly é mais utilizado, podendo trabalhar com programas escritos em linguagem de alto nível, rodando sub-tarefas escritas em linguagem assembly.
A linguagem assembly é normalmente usada em códigos de inicialização do sistema (BIOS), o código que inicializa e testa o hardware do sistema antes da inicialização do sistema operacional.
Existem compiladores que traduzem o código de alto nível para a linguagem assembly antes da montagem (geralmente para otimização).
Linguagens de baixo nível como o C, permitem incorporar o código para assembly. Programadores que utilizam o kernel do linux podem utilizar essas ferramentas.
Montagem de alto nível
O assembly oferece abstração de linguagem, como: Estrutura de controle avançado, declaração de funções, invocação de tipo de dados abstratos, classes entre outros. Recursos de programação orientada a objeto: classes, objetos, abstração, polimorfismo e herança.
Historia do assembly
Linguagens de assembly existem desde a introdução dos computadores de programa-armazenado (computadores que possuem a capacidade de armazenar instruções de programa em memória eletrônica). O computador EDSAC 91949) tinha um assembler chamado “initial orders” que continha mnemonics de uma letra. Nathaniel Rochester escreveu um assembler para um IBM 701 (1954). SOAP (Symbolic Optimal Assembly Program) (1955) foi uma linguagem assembly para o computador IBM 650 escrito por Stan Poley.
Linguagens assembly eliminaram muitos problemas que a programação com linguagem de primeira geração tinham nos primeiros computadores, como ser propensa à erros e consumo de tempo, poupando os programadores de atividades tediosas como memorizar códigos numéricos e calcular endereços. Elas foram amplamente utilizadas para todos os tipos de programação. Porém, em meados dos anos 80 (para microcomputadores, nos anos 90), o uso delas foi largamente substituído por linguagens de mais alto nível, a fim de uma programação mais produtiva. Hoje linguagem assembly ainda é usada para manipulação direta de hardware, acesso à instruções específicas do processador, ou para endereçar problemas críticos de performance. Alguns usos típicos são: dispositivos de drivers, sistemas embutidos de baixo nível, e sistemas em tempo real.
Historicamente, diversos programas foram escrito inteiramente em linguagem assembly. Sistemas operacionais foram escritos inteiramente em assembly até a introdução do MCP (Master Control Program) da Burroughs Corporation, que era escrito em ESPOL (Executive Systems Problem Oriented Language), um dialeto do Algol (uma das primeiras linguagens de alto-nível). Muitas aplicações comerciais foram escrito em linguagem assembly também, incluindo uma grande quantidade de software do mainframe da IBM escrito por grande corporações. COBOL, Fortran, e alguns PL/I eventualmente dispensou muito desses trabalhos, embora uma quantidade de grande organizações mantiveram aplicações com infraestrutura de linguagem assembly até os anos 90.
Em um contexto comercial, os maiores motivos de se usar assembly eram o tamanho pequeno, custos mínimos, maior velocidade e desempenho e confiabilidade
Exemplos típicos de grande programas feitos em assembly deste tempo são: sistemas operacionais PC DOS da IBM, e algumas primeiras aplicações como o programa de spreadsheet ( aplicação interativa de computador para organização, análise e armazenamento de dados em forma tabular) Lotus 1-2-3. Nos anos 90, a maioria dos jogos de vídeo games para console foram escritos em assembly, incluindo a maioria dos jogos para Mega Drive/Genesis e o Super Nintendo. De acordo com alguns internos da indústria, a linguagem assembly
...