Existem muitos livros sobre montagem. No entanto, eles geralmente lidam com ISAs sobre os quais não me importo, como MIPS ou ARM. Eu não lido com essas arquiteturas; não há razão para eu tentar aprendê-los.
Mas os livros de montagem x86 parecem ... inexistentes.
Digamos, por exemplo, que estou tentando criar um compilador de brinquedos que gere arquivos executáveis portáteis do Windows.
Existe um livro por aí que seja o padrão de fato para descrever as práticas recomendadas, metodologias de design e outras informações úteis sobre o assembly x86? E esse livro o torna especial?
Respostas:
Usei o Assembly Language para processadores x86 como um livro quando estava na faculdade e achei muito fácil de entender. Eu tenho a quarta edição mais antiga e a comparei com a sexta edição e não percebi muita mudança, então você provavelmente poderia comprar uma cópia mais antiga. As pessoas reclamam do uso de sua própria biblioteca para E / S, mas ele explica como fazê-lo da maneira "mais difícil" nos últimos capítulos.
fonte
O lugar óbvio para ir é o site da Intel, onde você pode encontrar manuais de programação e referência para download que contêm tudo o que há para saber sobre a arquitetura x86.
Aqui: Manuais do desenvolvedor de software das arquiteturas Intel® 64 e IA-32
fonte
A programação Art of Assembly é um excelente recurso que tem bastante a ver com a programação x86.
A documentação ABI x64 também é útil. Eu estava tentando encontrar um link para a versão que estava no site da AMD, mas não consigo mais encontrá-lo, então acho que este terá que ser feito.
Algo que pode ajudar bastante durante a aprendizagem é, em vez de tentar escrever um aplicativo completo do zero na montagem, em vez disso, escreva a maior parte em C (ou qualquer outra linguagem compilada realmente) e, em seguida, chame um pedaço do código de montagem de aquele. Depois de fazer isso, inverta-o, escreva um programa de montagem e chame algumas funções C a partir dele.
Editar: corrigido um erro de digitação.
fonte
Um livro muito bom para aprender o Assembly x86 é o Pentium Processor Optimization Tools . Embora o foco principal do livro seja a otimização do código de montagem, ele ensina a montagem do Pentium ao longo do caminho e também é um bom livro de referência.
Está muito esgotado, mas não é difícil encontrá-lo.
Ele vem com um disquete contendo um "otimizador de código de montagem". Na verdade, ele não otimiza seu código, mas produz uma lista comentada que aponta onde estão as ineficiências, como as paradas do pipeline.
A ferramenta que acompanha o livro é uma versão limitada de um produto com mais recursos que a empresa do autor costumava vender, mas, por razões que não conheço, elas estão fora do negócio há muito tempo. Não sei por quê - eu acho que essa ferramenta seria vendida como pão quente.
O x86 em geral é um tópico muito complexo, pois há muitas variantes suportadas por diferentes modelos de microprocessadores. Depois de conhecer o básico, você deverá consultar os bancos de dados da Intel ou da AMD para saber o chip exato que está alvejando. Infelizmente, o código que roda rapidamente em um modelo de CPU pode não ser tão rápido em um chip diferente.
fonte
Por que não experimentar o wikibook - http://en.wikibooks.org/wiki/X86_Assembly . Dá um bom começo introdutório à linguagem assembly.
A parte difícil da montagem é perceber como é simples e que você precisa permanecer com essa simplicidade.
fonte