Где узнать сборку x64?

Хорошо, я знаю C ++, C #, Java и некоторые другие языки, и я решил изучить сборку следующим образом, но мне кажется, что я с самого начала натолкнулся на твердую кирпичную стену. Мне просто нужно, чтобы кто-то указал мне правильное направление.

Вот вопросы:

  1. Мне сказали, что лучше изучать сборку из Интернета, чем из книг, потому что сборка зависит от вашего оборудования, а книги в основном устарели. Это правда?

  2. У меня 64-битный процессор, и я использую (или, по крайней мере, пытаюсь использовать) FASM. Где найти необходимую документацию?

  3. Я полностью сбит с толку, потому что большинство руководств, которые я видел, даже не работают для меня. Это из-за различий в оборудовании? Как мне найти подходящие учебные пособия?

  4. Могу ли я запустить сборку x86 и x32 на моем 64-битном компьютере?

  5. Не могли бы вы быть так любезны и напишите мне простую программу на сборке (которая работает на моем ПК) с разбивкой в ​​комментариях? Я использую 64-битную Windows 10 на моем процессоре Intel Core i5. Пожалуйста.


person AlanKalane    schedule 26.08.2015    source источник
comment
Вы можете писать простые программы на C и иметь исходный код сборки компилятора C. Используйте их как основу. Вы не упомянули, используете ли вы Windows или какую-либо версию Linux. В случае Windows вы можете запускать 32-битные программы, но не 16-битные программы, в 64-битных версиях Windows. Для 64-битных версий вы можете использовать Virtual PC или что-то вроде dosbox.   -  person rcgldr    schedule 27.08.2015
comment
Если у вас Windows 7 или более поздняя версия, вы можете получить Visual Studio for Desktop Express 2015 бесплатно. Сюда входит ассемблер для 32-битных (ml.exe) и 64-битных (ml64.exe), а также хороший отладчик на уровне исходного кода.   -  person rcgldr    schedule 27.08.2015
comment
software.intel.com/en-us/articles/introduction- to-x64-assembly   -  person Mahmudul Haque    schedule 27.05.2018
comment
youtube.com/ отличный плейлист для начала   -  person mr_pool_404    schedule 21.05.2020
comment
Не часто я согласен с властями, чтобы закрыть вопрос. Однако, мальчик, это плохой вопрос! Это провокация на написание книги, когда просят прокомментировать запутанные и противоречивые замечания.   -  person Albert van der Horst    schedule 16.02.2021


Ответы (1)


Думаю, это правильный вопрос. Найти актуальную информацию об ассемблере может быть немного сложно.

  1. да. Многие печатные и онлайн-ресурсы описывают ассемблер i386 (x86), а не новый amd64 (x86_64). Изменилось многое, например Аргументы функции раньше передавались в стек, но теперь они передаются в регистрах. Это относится как к Unix, так и к Windows.

    По сути, убедитесь, что вы читаете о 64-битной сборке.

  2. Почему бы не попробовать интерактивное руководство. Обратите внимание, что ассемблеры ничем не отличаются, когда дело доходит до простых вещей.

  3. У меня нет Windows, но если у вас возникли проблемы с какой-либо конкретной программой, вы можете спросить об этом здесь. Вам нужно будет опубликовать фактическую неудачную программу.

  4. Да, но вы должны связать его с 32-битными библиотеками и использовать 32-битную версию Win32 API. Но если вы только начинаете, зачем программировать 1980-е, когда вы можете работать с современным набором инструкций?

  5. Попробуйте это.

Также, если вы собираетесь программировать на ассемблере, я настоятельно рекомендую вам приобрести отладчик. Я использую GDB, который хорошо работает и является бесплатным, в Windows вы можете использовать отладчик Visual Studio, который превосходен.

person jforberg    schedule 26.08.2015
comment
Раньше я помню отладку без отладчика. Это гораздо менее эффективно, но все же вполне выполнимо. - person Michael Petch; 27.08.2015
comment
@MichaelPetch Я тоже это делал, но не рекомендую, когда доступны отличные бесплатные отладчики. - person jforberg; 27.08.2015
comment
Преимущество отказа от отладчика состоит в том, что вместо того, чтобы использовать метод проб и ошибок для изучения сборки (отладчики отлично подходят для этого), вы вынуждены гораздо лучше понимать язык ассемблера для конкретной архитектуры. В эти дни я отвечаю на вопросы языка ассемблера по SO и вместо того, чтобы тратить время на попытки скомпилировать его сам, я обычно проверяю код визуально на наличие ошибок. Если бы у меня был выбор между наймом кого-то, кто не может отлаживать без отладчика, и того, кто мог бы (при условии, что все остальное равно), я бы выбрал последнее. - person Michael Petch; 27.08.2015
comment
@MichaelPetch согласился, но это было ответом программисту, который никогда не писал правильную программу сборки. Кроме того, навыки отладки сборки переносятся на C, поскольку теперь вы можете начать понимать программы, для которых у вас фактически нет исходного кода. Но я понимаю вашу точку зрения. - person jforberg; 28.08.2015
comment
В сообщении предлагается узнать о сборке x64, но обе ссылки в нем ведут к руководствам по x86 ... что? - person Zeks; 19.12.2019