Есть много книг по сборке. Тем не менее, они обычно имеют дело с ISA, о которых мне все равно, например, MIPS или ARM. Я не имею дело с этими архитектурами; у меня нет причин пытаться их изучать.
Но сборочные книги по x86 кажутся ... несуществующими.
Например, я пытаюсь создать игрушечный компилятор, генерирующий исполняемые файлы Windows Portable.
Существует ли книга, которая является стандартом де-факто для описания лучших практик, методологий проектирования и другой полезной информации о сборке x86? Что из этой книги делает ее особенной?
Ответы:
Я использовал язык ассемблера для процессоров x86 в качестве учебника, когда учился в колледже, и мне было очень легко его понять. У меня есть более старое четвертое издание, и я сравнил его с шестым изданием и не заметил особых изменений, так что вы, вероятно, могли бы купить более старую копию дешевле. Люди жалуются на то, что он использует свою собственную библиотеку для ввода / вывода, но он рассказывает вам, как сделать это «трудным» способом в последних главах.
источник
Очевидное место, куда можно пойти, - это веб-сайт Intel, где вы можете найти руководства по программированию и справочные материалы, которые содержат все, что нужно знать об архитектуре x86.
Здесь: Руководства разработчика программного обеспечения для архитектуры Intel® 64 и IA-32
источник
Программирование Art of Assembly - превосходный ресурс, в котором много говорится о программировании для x86.
Документация x64 ABI также полезна. Я пытался найти ссылку на версию, которая была на веб-сайте AMD, но, похоже, я больше не могу ее найти, поэтому думаю, что это нужно сделать.
Что-то, что может помочь [немного] во время обучения, вместо того, чтобы пытаться написать законченное приложение с нуля на ассемблере, вместо этого написать большую часть этого на C (или любом другом скомпилированном языке на самом деле), а затем вызвать кусок кода на ассемблере из что. Как только вы это сделаете, переверните его, напишите программу на ассемблере и вызовите из этого некоторые функции языка Си.
Изменить: Исправлена опечатка.
источник
Очень хорошая книга для изучения сборки x86 - Pentium Processor Optimization Tools . Несмотря на то, что основное внимание в книге уделяется оптимизации ассемблерного кода, она в процессе обучения учит сборке Pentium, а также является хорошим справочником.
Это долго из печати, но не трудно найти использованный.
Он поставляется с дискетой, содержащей «оптимизатор кода сборки». Он на самом деле не оптимизирует ваш код, но вместо этого создает закомментированный листинг, который указывает, где лежат неэффективности, такие как задержки конвейера.
Инструмент, который поставляется с книгой, является ограниченной версией более интересного продукта, который компания автора продавала, но по причинам, которые мне незнакомы, они давно вышли из бизнеса. Я не знаю почему - я думаю, такой инструмент будет продаваться как горячие пирожки.
x86 в целом - очень сложная тема, поскольку существует множество вариантов, которые поддерживаются разными моделями микропроцессоров. После того, как вы ознакомитесь с основами, вам следует обратиться к книгам данных Intel или AMD, чтобы узнать, какой именно чип вы нацеливаете. К сожалению, код, который работает быстро на одной модели процессора, может быть не таким быстрым на другом чипе.
источник
Почему бы не попробовать викибук - http://en.wikibooks.org/wiki/X86_Assembly . Это дает хорошее вводное начало для языка ассемблера.
Сложность в сборке заключается в том, чтобы понять, насколько она проста, и что вам нужно придерживаться этой простоты.
источник