Departamento de Ciência da Computação
Por: Otario1010 • 7/6/2016 • Abstract • 2.952 Palavras (12 Páginas) • 198 Visualizações
- Assembly
Tiago Heinrich
Vinícius Bruch Zuchi
Universidade do Estado de Santa Catarina (UDESC)
Joinville – SC – Brasil
Departamento de Ciência da Computação
Resumo. O objetivo deste artigo é mostrar a história e as principais utilidades do assembly na computação. Visando às variedades dos códigos de acordo com as mudanças de hardware. E também procurando mostrar um pouco da interação do assembly com a linguagem de maquina, como as optimizações que podem ser feitas, manipulação direta da memória, entendimento do funcionamento do processador, como as instruções acessam e processam dados, como um programa acessa dispositivos externos.
Apesar de não ser tão usada como antigamente, devido ao aumento significativo de recursos computacionais atualmente, ainda existem vantagens e desvantagens no uso do assembly como linguagem de programação, contudo há suas dificuldades, que superam em muito as dificuldades de uma linguagem de alto nível. Exemplos serão apresentados para demonstrar o funcionamento do código e algumas aplicações.
Palavras-chave : Assembly. Assembler. Programação.
Abstract. The Objective of this article is to show the history and the main utilities of the assembly in computing. Seeking for the varieties of codes according to hardware changes. Also it will be showing a little of the interaction of the assembly with machine language, like the optimizations which can be done, direct memory manipulation, the understanding of the processor operation, how the instructions access and process data, how a program access external devices.
Although it is not so used like it was formerly, due to the substantial increase of computing resources we have nowadays, there is still advantages and disadvantages in using assembly as a programing language, however its difficulties exceeds by far the difficulties of a high level programming language. Examples will be shown to demonstrate the functioning of a assembly code and some applications.
Key-words: Assembly. Assembler. Programming.
Informações gerais:
Assembly também conhecida como linguagem de montagem. É um código de maquina que é utilizado pelos computadores. É muito usada para programar dispositivos computacionais, como microprocessadores e microcontroladores. A linguagem de máquina é um padrão de bits. A conversão da linguagem de montagem para o código de máquina é feita pelo assembly, que é basicamente um tradutor de comandos, sendo mais simples que um compilador.
O Assembly é uma linguagem simbólica por não possuir números binários, somente utilizando palavras abreviadas. Como a linguagem é apenas uma versão “legível” da linguagem de máquina, a sua montagem (passagem para a linguagem de máquina) é muito rápida. A linguagem é voltada para máquina, ou seja, é preciso conhecer a estrutura do processador para programar em assembly. O código muda de acordo com cada tipo de processador ou arquitetura.
Cada sistema apresenta sua própria linguagem de máquina. No mercado existem duas arquiteturas que são utilizadas pelos computadores: a IA32 (Intel) (32bits), criada em 1985 e primeiramente utilizada pelos processadores i386. Em segundo a IA32-EM64T (AMD) (64bits), foi criada em 2002 e hoje já é utilizada pela Intel.
O assembly traduz as instruções da linguagem para o código de máquina. O montador possui tabelas, onde armazena informações importantes sobre o programa que está sendo montado. Tabelas de rótulos, de constantes e de comandos são as mais comuns.
O assembly é a linguagem ancestral de todas as linguagens de alto nível que existem hoje. A linguagem é mais leve do que qualquer outra. Por ser tão próxima do hardware, ela não é uma linguagem de tão fácil aprendizagem.
Mesmo utilizando linguagens de alto nível, quando um código é compilado ele é transformado primeiramente em linguagem assembly, e posteriormente, linguagem de máquina
A montagem do código não é chamada de compilação e sim montagem. Mesmo cada arquitetura tendo sua própria linguagem de maquina, os computadores ainda conseguem desempenhar as mesmas funções.
A programação com o assembly na atualidade
Nos dias de hoje a programação em baixo nível está em baixa, grandes programadores não recomendam a programação em linguagens de baixo nível. Os novos programas estão sendo escritos em linguagens de alto nível, e até programas mais antigos estão sendo reescritos em linguagens de alto nível ao invés do assembly.
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.
...