Assembly Language: Como aprender a codificar Assembly hoje

Divulgação: Seu suporte ajuda a manter o site funcionando! Ganhamos uma taxa de indicação por alguns dos serviços que recomendamos nesta página.


Uma linguagem assembly é uma linguagem de programação de nível extremamente baixo que tem uma correspondência de 1 para 1 ao código da máquina – a série de instruções binárias que movem valores dentro e fora dos registros em uma CPU (ou outro microprocessador).

Introdução

Um microprocessador é uma calculadora mecânica. Ele possui vários registros nomeados, que são como guardar canetas para números. Ele recebe instruções na forma de código de máquina, representado por uma série de bits binários (1s e 0s). Por exemplo, aqui está uma linha de código de máquina:

10110000 01100001

Os primeiros bits (10110) são uma instrução para copiar um valor em um registrador. Os próximos três dígitos (000) identificam o registro no qual o valor será copiado. O restante (01100001) é o valor que deve ser copiado.

É claro que 10110 não tem sentido e o computador não “sabe” que significa “copiar o valor”. O processador foi projetado para que a série de impulsos elétricos representados por 10110 (liga-desliga-liga-desliga) cause o resultado desejado. Isso faz parte do que se entende por “mecânico”.

Agora, se você estiver escrevendo um programa para o processador executar, pode imaginar que escrever milhares de linhas de 1s e 0s seja entediante e propenso a erros. A solução é a linguagem assembly. A linguagem assembly fornece substituições compreensíveis por humanos para longas seqüências de código binário.

Exemplo

Por exemplo, se 10110 significa “mover o valor”, poderíamos abreviá-lo com o comando MOV.

Também podemos atribuir um nome mais fácil de lembrar ao 000 registrador (nesse caso, o registro é nomeado AL).

Finalmente, podemos renderizar o valor em um sistema de numeração diferente, como decimal (91) ou hexidecimal (61). Essa linha seria então MOV AL, 61. Depois que um programa inteiro é escrito dessa maneira, um montador pode converter facilmente cada linha na representação binária apropriada.

Os computadores funcionam (executam cálculos, movem dados, transformam dados), processando bilhões dessas pequenas instruções por segundo.

Instruções muito simples (mova esse valor, copie esse valor, adicione esses dois valores e salve o valor ali) se combinam para formar operações complexas, que se combinam em níveis cada vez mais altos para realmente fazer coisas que você reconheceria como significativas.

Recursos da linguagem Assembly

Recursos online

Tutoriais e guias básicos

  • Tutorial de programação de montagem do ponto de tutoriais

  • X86 Assembly Language Programming, um capítulo do FreeBSD Developers ‘Handbook, que ajuda a colocar a linguagem de montagem no contexto do desenvolvimento do sistema operacional

  • Diga Olá para o X64 Assembly, uma introdução bastante gentil ao assembly, no blog Code as Art

  • X86 Assembly Language Programming, outro tutorial que coloca a linguagem assembly bem em seu contexto de programação de SO, este em referência ao Linux, Windows e até um pouco sobre o Mac OS X

  • Linguagem de Montagem de PC, que se concentra em PCs de 32 bits executando Linux, Windows ou FreeBSD

  • X86 Assembly Guide, do departamento de Ciência da Computação da Universidade da Virgínia

  • Webster: faturando-se como “O lugar na Internet para aprender a linguagem assembly”, este site é (aparentemente) administrado pelo autor de The Art of Assembly Language e pelo inventor do HLA

  • Tutorial de montagem do Linux

  • Easy X86-64

  • Montagem do X86

  • Tutorial de programação de montagem do Windows (pdf)

Tutoriais em vídeo

  • Tutorial de programação em linguagem Assembly, uma série de 55 vídeos muito abrangente sobre montagem, seguindo o livro Assembly Language for x86 Processors (6th Edition) de Kip Irvine (se você não estiver acompanhando os vídeos, provavelmente desejará a edição mais recente)

  • Vídeo Curso de Programação em Linguagem Assembly, uma série de 70 partes, ministrada por Arthur Griffith, que tem um charme muito folclórico

  • Assembly Language Intro, uma palestra em Cornell, apresentando a linguagem assembly

  • Programação em linguagem Assembly, uma introdução de montagem de uma hora e um ótimo formato, se você realmente gostou de seguir exemplos de álgebra em um projetor quando estava no ensino médio (isso faz parte de uma série maior de microprocessadores e microcontroladores).

Referência

  • Listagens de instruções X86, lista completa de todas as instruções para as arquiteturas x86, com notas sobre quando cada uma foi adicionada

  • Código de operação e código X86

  • Folha de dicas do Intel X86 Assembly Language (pdf).

Ferramentas

Montadores – existem muitos montadores disponíveis – eis alguns dos mais populares montadores gratuitos e de código aberto:

  • NASM

  • FASM

  • YASM

  • GASM.

IDEs (Ambientes de Desenvolvimento Integrado):

  • SASM, IDE de plataforma cruzada simples para linguagens de montagem NASM, MASM, GAS, FASM

  • IDE fresco, linguagem visual de assembly IDE com assembler FASM integrado

  • WinAsm Studio, um IDE gratuito para o desenvolvimento de programas Windows de 32 bits e DOS de 16 bits usando o Assembler

  • Visual MASM.

Comunidade e Aprendizagem Contínua

  • Assembly Forum em Dream.In.Code

  • Fórum MASM

  • Linguagem Assembly e Código da Máquina nos Fóruns de Hack

Livros

  • The Art of Assembly Language (edição on-line) é um dos livros mais populares sobre linguagem assembly, da sempre fácil leitura No Starch Press; você pode também estar interessado nelas do mesmo autor: Escreva um ótimo código: Volume 1: Compreendendo a máquina e grave um ótimo código, Volume 2: Pensando em nível baixo, escrevendo em alto nível

  • Linguagem Assembly passo a passo: programação com Linux

  • Linguagem de montagem profissional

  • Linguagem de montagem para processadores x86

  • Programação moderna em linguagem Assembly X86: 32 bits, 64 bits, SSE e AVX

  • introdução à programação de montagem de 64 bits para Linux e OS X: Terceira edição – para Linux e OS X

  • Introdução à linguagem Assembly 80X86 e arquitetura de computadores

  • Programação em linguagem Assembly: para computadores PC e laptop.

Você deve aprender a linguagem Assembly?

Se você deve aprender a linguagem assembly depende de quais são seus objetivos. Para a maioria dos desenvolvedores, a resposta é “não”.

Há dois motivos principais para aprender a linguagem assembly: porque você deseja usá-la diretamente ou porque deseja entender os computadores em um nível fundamental.

Do ponto de vista prático, apenas um punhado relativo de engenheiros e cientistas da computação do mundo realmente usa a linguagem assembly.

A grande maioria do desenvolvimento de software, incluindo praticamente todo o desenvolvimento de aplicativos de qualquer tipo, usa linguagens de programação de alto nível e não código de montagem. Algumas áreas específicas em que a linguagem assembly é usada são:

  • Sistemas operacionais

  • Firmware

  • Drivers de dispositivo

  • Design de linguagem

  • Design do compilador

  • Sistemas embarcados

  • Design de hardware

  • Criptografia avançada

  • Ciência da computação teórica

A outra razão para aprender a linguagem assembly é apenas para entender melhor o que realmente está acontecendo nas entranhas de um computador. (É por isso que praticamente todos os profissionais de ciência da computação precisam aprender a linguagem assembly.)

Claro, se você é o tipo de pessoa que está realmente interessada nisso, convém pensar em uma carreira trabalhando no desenvolvimento de sistemas de baixo nível.

Outras coisas para aprender

Existem alguns idiomas em que, se você souber um pouco, pode fazer muito. Python e Ruby são assim – você pode aprender o suficiente em um fim de semana para construir algo que vale a pena. A linguagem assembly não é assim.

A linguagem assembly nunca é usada no vácuo. É provável que o tipo de engenheiro que precisa conhecer a montagem esteja trabalhando na área em que é necessário conhecer algumas outras habilidades para ser eficaz. Provavelmente incluem:

  • Linguagens de hardware, como VHDL e Verilog, juntamente com um bom entendimento de microprocessadores e engenharia elétrica

  • Linguagens de sistema operacional de baixo nível, como C e seus derivados: C ++, C # e D

  • Idiomas herdados como Fortran e Cobol

  • Linguagens de plataforma como Java e Objective-C

  • Algoritmos

  • Compilador, intérprete e design de idioma.

Leitura e recursos adicionais

Temos muito mais informações sobre esse tipo de coisa, Programação: Idiomas, Linha do tempo & Guias.

Que código você deve aprender?

Confuso sobre qual linguagem de programação você deve aprender a codificar? Confira nosso infográfico: Que código você deve aprender?

Ele não apenas discute aspectos diferentes das linguagens, mas também responde a perguntas importantes como: “Quanto dinheiro ganho com a programação de Java para viver?”

Que código você deve aprender?
Que código você deve aprender?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map