Если вы действительно решили узнать немного ассемблера, вероятно , вы должны узнать что - то вроде 6502 ассемблера на Commodore 64 (эмулировать, конечно), или 68000 на Amiga.
Вы можете получить представление о Commodore 64 здесь ...
http://thepiratebay.org/torrent/4609238/Tag3-Saal2-Slot16_00--ID2874-the_ultimate_commodore_64_talk-Main
Классическая книга «все, что нужно знать» описана здесь ...
http://reprog.wordpress.com/2010/03/12/programming-books-part-3-programming-the-commodore-64/
Вы можете, вероятно, найти сканирование PDF, если вы посмотрите вокруг.
IMO, 6502 легче, чем Z80, и 68000 легче, чем 8086 - более регулярные наборы команд и т. Д.
Но процессор - это только один аспект аппаратного обеспечения. Кроме того, современный ЦП - это совершенно другой зверь, и он делает вещи прозрачными даже с точки зрения компиляторов, такие как представление виртуального адресного пространства.
Особое преимущество 6502 на C64 заключается в том, что он не только прост с центральным процессором, но и с некоторыми очень простыми аппаратными средствами. Раньше мне было очень весело играть с музыкальным чипом SID.
Так что - это, вероятно, стоящее упражнение, если вы не тратите на него слишком много времени. Я изучил ассемблер 6502 как мой второй язык, когда мне было около 14 лет, сразу после Commodore Basic. Но в основном он получает очень простую рабочую модель, чтобы вы могли добавлять к ней более сложные идеи с минимумом недопонимания.
Некоторые полезные вещи, которые вы можете узнать, работая в ассемблере ...
- Как работает регистр процессора.
- Как работает адресация памяти, включая косвенное обращение.
- Как работает процессорный стек
- Как работает побитовая логика.
- Как процессор управляет устройствами ввода / вывода.
- Как прерывает работу.
Одна конкретная причина, по которой я бы порекомендовал это, состоит в том, чтобы лучше понять, как простые шаги действуют совершенно детерминистически, механически и совершенно без интеллекта или здравого смысла. По сути, привыкаешь к императивной модели исполнения в ее самой чистой и упрямо невежественной форме.
Но насколько именно сейчас полезно знать большинство этих вещей, это сложный вопрос.
Одна вещь, которую вы не научитесь, - это как хорошо играть с иерархией памяти. Те старые машины в основном имели простую модель памяти без слоев кеша и виртуальной памяти. Вы также мало что узнаете о параллелизме - они, безусловно, были способами справиться с этим, но это в основном означало прерывания. Вам не нужно беспокоиться о мьютексах и т. Д.
Иногда умственная модель того, как эти вещи когда-то работали или как работает ассемблер, может даже ввести в заблуждение. Например, восприятие указателя C как адреса может привести к неопределенным проблемам поведения. Указатель AC обычно реализуется как целое число, содержащее адрес, но нет никакой гарантии, что это строго верно. Например, на некоторых причудливых платформах разные указатели могут указывать на разные адресные пространства. Это становится важным, когда вы хотите сделать арифметическую или побитовую логику с двумя указателями.
Если у вас нет одной из этих причудливых платформ, вы можете не думать, что вас это беспокоит, но в наши дни компиляторы все чаще используют неопределяемое стандартами поведение для оптимизации.
Таким образом, ментальная модель архитектуры системы может быть полезной, но все же важно кодировать спецификацию языка, а не гипотетическую модель, которую ваш язык и платформа могут не уважать.
Наконец, множество полезных умственных моделей приходит из понимания того, как компиляторы генерируют код - и генерация кода для современных языков сильно отличается от довольно тривиальных компиляторов, доступных в то время.
Это моя любимая книга для этого ...
http://dickgrune.com/Books/MCD_1st_Edition/
Наряду с материалами о синтаксическом анализе, AST и т. Д. Он охватывает генерацию кода для ряда языковых парадигм - императивных, ООП, функциональных, логических, параллельных и распределенных - а также для управления памятью. Если вы хотите знать, как работают полиморфные вызовы методов, не увязая в деталях набора команд процессора, то такая книга - ваш друг - и скоро выйдет новая редакция.