Existe um livro canônico sobre montagem x86? [fechadas]


25

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?


Quanta experiência de montagem você tem? Você já tentou usar o GCC sem otimização para compilar programas C simples em assembly e depois reverter o código de volta para um programa C?
Brian

10
@ Brian: Eu precisaria conhecer a montagem antes de poder fazer isso.
Billy ONeal

Eu vi uma cópia do conjunto de instruções x86. São 2 volumes, e provavelmente o maior livro que eu já vi. Divirta-se :)
AngryBird

2
Billy, se você não conhece nenhuma assembléia, então qualquer uma delas seria muito boa para começar a ter idéias gerais. A montagem é extremamente próxima da arquitetura; portanto, as instruções de montagem refletem muito os projetos específicos da arquitetura. Comecei com o assembly x86 e li a "Linguagem de montagem para computadores baseados em Intel" de Kip Irvine. Na verdade, o livro foi combinado com uma aula on-line em uma faculdade comunitária. Não tenho certeza de que tipo de aluno você é, mas acho que a instrução guiada funciona melhor para o aprendizado.
Brian

@ Brian: O que você quer dizer com "qualquer um deles"? Eu não entendo o que "eles" são - algum livro? Algum montador? Algum ISA? Eu já joguei com o MIPS assembler; Não consigo encontrar nada no x86.
Billy ONeal

Respostas:


18

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.


11
Livro muito bom!
Coder

Eu li a quinta edição do livro de Irvine, quando foi intitulado "Assembly Assembly for Intel-Based Computers". :)
Brian

11
Acho que essa é uma péssima sugestão, pois a maior parte da segunda edição é específica para o sistema esotérico de alto nível dos autores, o Assembly de Alto Nível, que é essencialmente uma versão bastardizada de C. Eu nunca li a primeira edição publicada. A versão dos que você pode encontrar em seu site gratuitamente e nunca foi publicada é uma ótima leitura. Também é cerca de 50% mais longo e não possui nada sobre o HLA (que é uma total perda de tempo).
Evan Carroll

11
@EvanCarroll Estou confuso. Você alterou o link para o livro errado e, em seguida, criticou o livro para o qual alterou o link. Isso não foi intencional?
Merlyn Morgan-Graham

11
totalmente meu erro. @ MerlynMorgan-Graham é bom em você por pegá-lo e corrigi-lo.
Evan Carroll


9

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.


11
Outra sugestão: escreva um programa simples em C, compile-o para montagem, limpe-o para que o seu montador possa montá-lo e aprimore a versão do assembly. É uma boa maneira de obter algumas funcionalidades mínimas (ler do teclado, gravar no console) indo rapidamente.
TMN

4

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.


Não estou realmente buscando desempenho; só quero poder gerar binários. Ainda vai dar uma olhada :) #
2211 Billy ONeal

2
Você também precisará aprender como usar um assembler em particular, não apenas os códigos de montagem. Cada montador faz as coisas de maneira totalmente diferente. Se você estiver escrevendo um monte de código de montagem, use masm como foi desenvolvido com os codificadores humanos em mente. Se você apenas escrever pequenos trechos de montagem embutida, poderá usar o gcc com o GNU como montagem embutida (também chamada de gás). A sintaxe GNU como 'é completamente diferente da do masm. Como foi escrito principalmente para uso como back-end para o gcc, para gerar o código executável e, portanto, não fornece muitos dos recursos que os codificadores humanos desejam.
Mike Crawford

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.