Я настоятельно рекомендую:
1) использовать набор инструкций симулятора (на одном уровне с тем, что вы спрашиваете). гораздо лучшая видимость и лучший шанс на успех, меньше разочарований, меньше шансов уйти.
2) НЕ изучите сначала сборку x86. (наличие аппаратного обеспечения является плохим предлогом для обучения x86). очень плохой архитектуры, сначала изучите хорошую архитектуру, затем, если вы потрудитесь учиться x86, изучите ее позже, а затем изучите 8088/86 с использованием одного из многих симуляторов/эмуляторов.
3) Изучите несколько наборов инструкций, если вы начинаете с хорошего, то все остальные наборы инструкций и даже языки программирования являются небольшим вопросом синтаксиса.
4) вы не изучаете системные вызовы, которые являются плохим способом изучения сборки, изучения набора команд и способа программирования с ним, системные вызовы - это после того, как вы изучили сборку и решили продолжить программирование приложений в ней ,
msp430 (или pdp11/lsi11), arm, thumb, avr, mico8 и список других намного лучше. за исключением mips, так как после того, как вы выучили некоторые из них, у него есть необычные функции, которые могут привести вас к неправильному мышлению для других архитектур.
Если ваши навыки программирования уже сильны, тогда вы можете забрать сборку в течение нескольких дней и иметь несколько-много наборов инструкций в течение нескольких недель.Если вы следуете этому руководству и узнаете несколько несвязанных друг с другом (хороших) наборов инструкций, тогда начните смотреть на x86, и вы точно поймете, почему я рекомендую изучать его последним или никогда. Как и 6502, pic и некоторые другие, у них есть историческая образовательная ценность, но из-за характера истории семьи вы не можете получить много от нее с точки зрения настройки/программирования. На самом деле я рекомендую прочитать «Zen of Assembly» и помню, даже когда написано, что речь идет о том, как думать о кодировании производительности в целом, а не о настройке производительности 8088/86.
Хороший способ научиться сборке - написать дизассемблер, проблема в том, что большинство наборов команд представляют собой переменную длину слова, а разборчики длины слов - это сложная проблема программирования. ARM и большой палец (не thumb2) являются фиксированной длиной слова и очень легко записываются дизассемблеры.
Вы можете использовать как 64-битный процессор с 32-битным кодом без проблем. Нет необходимости использовать VM – Gunner