Я сомневаюсь, что он все еще печатается, но в моем начальном университетском классе CS в 1977 году использовалась CDC Cyber , одна из архитектур Seymour Cray. (Holy Moly! Это на Амазоне! ) На самом деле это довольно приличный язык ассемблера. Он включал в себя уникальную функцию под названием micros , которая была похожа на макрос, но более гибкая для строкового обмана, например создания символов от label1
до label999
примерно в трех строках источника.
На самом деле, в то время целые приложения были un , обычно написанными на ассемблере. Я знал о текстовом редакторе, который был, и хорошие части операционной системы, конечно, были, но мало приложений.
Кроме того, я не помню, чтобы там были хорошие книги на ассемблере. Но моя экспозиция была ограничена, так как второй класс 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 - загрузка сегмента в защищенном режиме повлекла за собой огромные потери тактового цикла. Затем были странные псевдоинструкции управления сегментами, классы сегментов и локатор кода - постобработка объектного кода после компоновки. Много странных, неуклюжих инструментов.