UML мертв, мертв, мертв: UML Действительно Мертвый, Или Только Каталептический?
Обмен информацией через электронную доску/Документация в порядке. Генерация кода от него? Кому нужно это и для какой?
Это не классическая книга (изначально была опубликована в 90-х), но я изучил MIPS asm из Организация и дизайн компьютера: аппаратно-программный интерфейс Паттерсона и Хеннесси (ISBN: 0123706068). Книга не только о сборке; это учебник компьютерной архитектуры. Но MIPS - прилично чистая архитектура.
Хотя я полагаю, что если вы просите классику, вы, вероятно, ищете что-то, что будет достаточно глубоко в работе.
Knuths Искусство программирования предоставляет примеры на MIX или MMIX , гипотетическом языке ассемблера.
Искусство программирования (когда оно будет закончено) будет довольно основательным!
Я использовал эту книгу в школе . Это было для Motorola 68000.
Я также нашел в Интернете бесплатную книгу Программирование сборки ARM .
Я думаю, что рынок книг о процессорах 1970-х и 1980-х был крошечным, и вы могли бы найти только документацию производителей, если таковая имеется.
Я уверен, что большую часть. в итоге превратился в свалку, но, возможно, часть его была спасена любителями.
Возможно, стоит поискать архивные материалы в формате PDF от Motorola, MOS Technology, Digital Equipment Corporation и т. д.
Я сомневаюсь, что он все еще печатается, но мой начинающий университетский курс CS В 1977 г. использовалась CDC Cyber , одна из архитектур Сеймура Крея. (Holy Moly! Это на Amazon! ) На самом деле это довольно приличный язык ассемблера. Он включал уникальную функцию под названием микросхемы , которая была своего рода макросом, но более гибкой для строковых обманов, таких как создание символов label1
через label999
примерно в трех строках источник.
Фактически, в то время все приложения и обычно писались на ассемблере. Я знал о текстовом редакторе, который был, и хорошие части операционной системы определенно были, но мало приложений.
Кроме того, Я не припомню, чтобы были хорошие книги по языку ассемблера. Но мое присутствие было ограничено, так как второй класс CS использовал новый Motorola 6800 - и это было задокументировано специальной коллекцией заметок. В последующие годы мы использовали C в Unix v6, но не было необходимости писать ассемблер, и было всего несколько упражнений, на которых было полезно читать и понимать язык ассемблера PDP-11, особенно для класса чтения ядра, хотя 98% ядро было написано на C
.
После всего этого я знал достаточно процессоров и ассемблеров, и мне редко требовалось больше, чем эталон архитектуры процессора и ассемблер производителя, за исключением процессоров iNtel. Большой проблемой был язык вывода многопоточного компилятора RSX от DEC, который полностью состоял из серии макросов ассемблера. Но большинство процессоров были просты для понимания и программирования, включая Texas Instruments 9900, Motorola 68000 и 68010, Z80, 6502, VAX 750 и TMS 16016/32032.
Процессоры семейства iNtel были исключительно трудными для разборки, как 8086 и семейство 8047/8052. Сильно неортогональные и загруженные странными режимами: почему можно напрямую обмениваться AX
и BX
, но не DS
и ES
? Особенно после того, как вышел 80386 - загрузка сегментного регистра в защищенном режиме привела к огромным потерям тактового цикла. Затем были странные псевдо-инструкции управления сегментами, классы сегментов и локатор кода - пост-обработка объектного кода после связывания. Множество странных и неуклюжих инструментов.
Процессоры семейства iNtel, как 8086, так и 8047/8052, было чрезвычайно сложно разобрать. Сильно неортогональные и загруженные странными режимами: почему можно напрямую обмениваться AX
и BX
, но не DS
и ES
? Особенно после выхода 80386 - загрузка сегментного регистра в защищенном режиме привела к огромным потерям тактового цикла. Затем были странные псевдо-инструкции управления сегментами, классы сегментов и локатор кода - пост-обработка объектного кода после связывания. Множество странных и неуклюжих инструментов.
Процессоры семейства iNtel, как 8086, так и 8047/8052, было чрезвычайно сложно разобрать. Сильно неортогональные и загруженные странными режимами: почему можно напрямую обмениваться AX
и BX
, но не DS
и ES
? Особенно после выхода 80386 - загрузка сегментного регистра в защищенном режиме привела к огромным потерям тактового цикла. Затем были странные псевдо-инструкции управления сегментами, классы сегментов и локатор кода - пост-обработка объектного кода после связывания. Множество странных и неуклюжих инструментов.
AX
и BX
, а не DS
и ES
? Особенно после того, как вышел 80386 - загрузка сегментного регистра в защищенном режиме привела к огромным потерям тактового цикла. Затем были странные псевдо-инструкции управления сегментами, классы сегментов и локатор кода - пост-обработка объектного кода после связывания. Множество странных и неуклюжих инструментов. Почему можно напрямую обмениваться AX
и BX
, а не DS
и ES
? Особенно после выхода 80386 - загрузка сегментного регистра в защищенном режиме привела к огромным потерям тактового цикла. Затем были странные псевдо-инструкции управления сегментами, классы сегментов и локатор кода - пост-обработка объектного кода после связывания. Множество странных и неуклюжих инструментов. Александр Степанов в лекции 1 своих заметок рассказывает о своем обращении к идее «структурированного» программирования на ассемблере. Желая развить эту идею, я поискал книги с такими названиями, как «Структурированное программирование ассемблера в Foo». Но то, что я обнаружил, оказалось освещением некоторой архитектуры процессора, а не принципов разработки программ. Большинство книг, упомянутых в других ответах здесь, согласуются с этим.
Я просмотрел AoCP Кнута, и он, безусловно, подробен и использует MMIXAL. Но кроме небольшого отрывка в ст. 1, гл. 1.4, речь идет о разработке алгоритмов, а не о разработке программ. Так что это действительно в категории с чем-то вроде Cormen, et. al. «Введение в алгоритмы».
Так что, может быть, просто нет
Я бы также посмотрел на сборку набора микросхем 6809 и 68000 для "более чистого дизайна", основанного на том, что я программировал тогда на ассемблере.
Чтобы пойти дальше, я действительно нашел IBM Набор ассемблера 360/670, который довольно легко кодировать. Конкретные тексты - поищите для этого старые учебники, если вы хотите получить неплохие знания в области управления регистрами и т. Д. У меня, вероятно, есть один где-то на полке, я загляну в пыльные углы, когда у меня будет возможность. Конечно, почему, но мне НЕ понравился Z80 в старом ПК Xerox, по какой-то причине это было неприятно.
Проверьте популярные микроконтроллеры, такие как серия серии ATMEL . Это где программирование ассемблера все еще горячая тема. Есть много книг , которые научат вас, как программировать такие устройства, а также системы прототипирования , которые позволят вам построить некоторые действительно крутые гаджеты.
Микроконтроллеры ATHEL AVR имеют чистую архитектуру, как процессоры ARM. Избегайте микрочипских устройств PIC, так как они используют память в погашении. Вам нужен микроконтроллер с линейным адресным пространством.
TI msp430 - очень красивая архитектура, напомнила мне pdp11, когда я впервые увидел его. Что касается книг, я не знаю, что начал писать одну, но так и не закончил ... В любом случае, наверное, не из тех, которые вы искали.
Несколько классических книг, посвященных 6502; полный текст онлайн:
Машинный язык для начинающих (1983)
Вторая книга машинного языка (1984)
Программирование на языке ассемблера для компьютеров Atari (1984)