Il y a beaucoup de livres sur l'assemblage. Cependant, ils traitent généralement des ISA dont je ne me soucie pas, comme MIPS ou ARM. Je ne m'occupe pas de ces architectures; il n'y a aucune raison pour moi d'essayer de les apprendre.
Mais les livres d'assemblage x86 semblent ... inexistants.
Disons par exemple que j'essaie de construire un compilateur de jouets générant des fichiers exécutables Windows Portable.
Existe-t-il un livre qui constitue la norme de facto pour décrire les meilleures pratiques, les méthodologies de conception et d'autres informations utiles sur l'assemblage x86? Qu'en est-il de ce livre qui le rend spécial?
Réponses:
J'ai utilisé le langage d'assemblage pour les processeurs x86 comme manuel lorsque j'étais au collège et je l'ai trouvé très facile à comprendre. J'ai l'ancienne quatrième édition et je l'ai comparée à la sixième édition et je n'ai pas remarqué beaucoup de changement, vous pouvez donc probablement acheter une ancienne copie à bon marché. Les gens se plaignent de son utilisation de sa propre bibliothèque pour les E / S, mais il vous explique comment procéder de la manière "difficile" dans les derniers chapitres.
la source
L'endroit évident où aller est le site Web d'Intel, où vous pouvez trouver des manuels de programmation et de référence à télécharger qui contiennent tout ce qu'il y a à savoir sur l'architecture x86.
Ici: Manuels du développeur de logiciels d'architectures Intel® 64 et IA-32
la source
L'art de la programmation d'assemblage est une excellente ressource qui en dit long sur la programmation x86.
La documentation ABI x64 est également utile. J'essayais de trouver un lien vers la version qui était sur le site Web d'AMD, mais je n'arrive plus à le trouver, donc je suppose que celui-ci devra le faire.
Au lieu d'essayer d'écrire une application complète à partir de zéro dans l'assembly, écrivez plutôt la plupart en C (ou tout autre langage compilé vraiment), puis appelez un morceau de code d'assembly à partir de cette. Une fois que vous avez fait cela, inversez-le, écrivez un programme d'assemblage et appelez quelques fonctions C à partir de cela.
Modifier: correction d'une faute de frappe.
la source
Un très bon livre pour apprendre l'assemblage x86 est Pentium Processor Optimization Tools . Bien que l'objectif principal du livre soit l'optimisation du code d'assemblage, il enseigne l'assemblage Pentium en cours de route et constitue également un bon livre de référence.
Il est épuisé depuis longtemps mais n'est pas difficile à trouver utilisé.
Il est livré avec une disquette contenant un "optimiseur de code d'assemblage". Il n'optimise pas réellement votre code, mais produit une liste commentée qui indique où se trouvent les inefficacités telles que les blocages de pipeline.
L'outil fourni avec un livre est une version limitée d'un produit plus fonctionnel que la société de l'auteur vendait, mais pour des raisons que je ne connais pas, il a longtemps cessé ses activités. Je ne sais pas pourquoi - je pense qu'un tel outil se vendrait comme des petits pains.
x86 en général est un sujet très complexe car il existe de nombreuses variantes prises en charge par différents modèles de microprocesseurs. Une fois que vous connaissez les bases, vous voudrez consulter les livres de données d'Intel ou d'AMD pour la puce précise que vous ciblez. Malheureusement, le code qui s'exécute rapidement sur un modèle de CPU peut ne pas être aussi rapide sur une autre puce.
la source
Pourquoi ne pas essayer le wikibook - http://en.wikibooks.org/wiki/X86_Assembly . Il donne un bon début d'introduction au langage d'assemblage.
Le plus dur à propos de l'assemblage est de réaliser à quel point c'est simple et que vous devez rester avec cette simplicité.
la source