Muitas pessoas questionam a necessidade de aprender e conhecer o
Assembly, que é uma das linguagens de programação de mais baixo nível que um ser humano, ao interagir com um sistema computacional, pode utilizar para codificar instruções.
Sabemos que existem basicamente três grande grupos de linguagens:
- Baixo nível;
- Alto nível;
- Altíssimo nível.
E por incrível que pareça, nos cursos de computação atuais, os alunos costumam aprender linguagens de alto nível, quando não, apenas de altíssimo nível.
Por mais que eu seja fã de Python, Ruby ou Perl, sei que estas linguagens não são as melhores quando precisamos compreender como um sistema funciona realmente e como tratar diretamente com as instruções executadas pelo processador.
Logo, digamos que, quem aprende a programar hoje em dia, começa pela cereja do bolo, ao invés de debulhar o trigo para fabricar a farinha.
Este tipo de aprendizado, mesmo que seja com o foco no mercado de trabalho, pode ser danoso a longo prazo, pois estes profissionais possuem um conhecimento bem menor de Debugging e otimização de código, do que aqueles que sabem como funciona o Core de um sistema.
Daí surgiu a ideia deste pequeno material sobre Assembly. Em primeiro lugar, precisamos entender um pouco mais sobre como um processador funciona, de forma 'en passant' e depois vamos às instruções específicas desta linguagem.
Sei que muitos acham que os dados que os programas manipulam ficam todo residentes na memória RAM, o que é um grande engano. Nessa memória primária, e volátil, ficam apenas os dados maiores e que não estão sendo utilizados pelo processador em dado momento para a realização de algum tipo de operação.
Imaginem o trabalho que não seria para o processador ir até a memória, pegar os dados, processá-los e devolvê-lo, sempre trabalhando fora de seu núcleo. Isso demandaria um poder de processamento muito maior e também maior gasto de energia.
Nesse tipo de situação, a arquitetura adotada quando da criação dos processadores foi a seguinte: criar pequenos containers dentro do próprio processador, para que os dados utilizados em determinadas operações naquele dado momento, pudessem ser armazenados temporariamente para agilizar o processamento e aumentar a rapidez nas respostas.
Daí surgem os denominados registradores.