Programar em Assembly com GAS/Linguagem Assembly
Linguagem Assembly
A linguagem assembly é o ancestral de todas as linguagens modernas de mais alto nível. E mesmo quando falando de linguagens de um nível mais alto, durante a compilação o código é transformado em assembly e a seguir montado. Chama-se montagem o processo de conversão da linguagem Assembly para a linguagem de máquina.
A linguagem assembly é mais leve que qualquer outra linguagem por ser o único código legível pelo homem antes da linguagem de máquina.
Por ter instruções mais próximas as suportadas pela arquitetura e o processador tende a ser mais difícil de se aprender.
Mais se é mais difícil de se aprender que outras linguagens qual é a utilidade?
Vamos a um exemplo simples, quando você liga a sua máquina temos o BIOS que é o primeiro programa a ser executado pelo computador, o BIOS busca um setor de inicialização do disco ativo, um setor ativo é um setor com um código assembly , se encontrar um setor ativo o código assembly será colocado na memória e executado pelo processador.
A linguagem assembly faz uso das instruções para executar operações e graças ao bus interno do processador comunicar com outros controladores que comunicam com os periféricos usando as portas de entrada e saida .
A linguagem assembly também é usada para trabalhar com interrupções ,como as do BIOS ,ou o mecanismo de chamadas ao sistema do Kernel (System Call) ou ainda gerenciar a memória.
O código assembly não é mágico, pois os processadores são diferentes. Tem vários tipos de códigos assembly para para vários tipos de processadores ou arquiteturas diferentes.
Nesse livro vamos trabalhar com o assembly do GNU, que tem como montador um programa chamado "as" para arquiteturas x86. Então podemos dizer que se você quer saber realmente como funcionam os componentes do hardware e os utilizar, é preciso aprender uma linguagem de baixo nível como o assembly .
Se você estiver interessado em fazer um jogo 3D não tem muita utilidade aprender essa linguagem.
Algumas das utilizações mais significativas da linguagem assembly é para desenvolver bootloader , kernel e drivers de um sistema operacional.
Espero que você não esta vindo sem nada na sacola, a linguagem assembly é simples e fácil, mais se você ainda não sabe programar não aconselho começar por aqui.
Comece aprendendo a "linguagem C" por ser uma linguagem de um nível mais alto do que a linguagem assembly e mais baixo do que as outras. Ao mesmo tempo a "linguagem C" é a base de várias outras linguagens como "C++", "Python", etc.