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