РЕЦЕНЗИИ

Кулаков. В. Программирование на аппаратном уровне. Специальный справочник. 2-е изд. СПб.: Питер, 2003. - 848 с.

Конструкторы первых вычислительных машин обеспечивали программистов полной информацией об устройстве и функционировании своих творений. Иначе и нельзя было: разницы между прикладными и системными программами еще не существовало и все необходимые “низкоуровневые” операции типа ввода-вывода были заботой программиста-прикладника.

Шли годы. Выходили компиляторы, мониторные программы, а затем и операционные системы, рядовой программист все дальше отдалялся от аппаратуры. Однако с каждой вычислительной машиной по-прежнему поставлялась гора документации - описания алгоритмов функционирования процессора и внешних устройств, принципиальные схемы, распечатки микропрограмм... Так что охотники до “интимных подробностей”, желающие досконально разбираться с функционированием ЭВМ, не были обделены информацией. Людей этого плана всегда было немного, и именно они зачастую создавали настоящие шедевры программистского искусства, иногда определяя на годы вперед направление развития компьютерной индустрии.

Ситуация изменилась с появлением персональных компьютеров. Здраво рассудив, что рядовому пользователю не обязательно знать внутреннее устройство ПК, разработчики не позаботились о выпуске соответствующих инструкций для “широкой общественности”. Теперь любители “поковыряться” в аппаратуре, не имеющие доступа к закрытой фирменной документации, стали больше походить на сыщиков, по мельчайшим намекам восстанавливающих картину преступления. Появились, правда, и книги, посвященные программированию аппаратуры ПК “в обход” операционной системы, но и они писались практически такими же любителями. Самым полным и удачным был, наверное, труд Роберта Журдена, русский перевод которого в виде файла до сих пор кочует по постсоветскому пространству. Но за прошедшие годы он безнадежно устарел.

В рецензируемой книге, продолжающей традицию подобных изданий, рассматривается целый ряд вопросов низкоуровневого программирования. Наибольший интерес представляет описание работы с устройствами, подключенными к шине PCI, видеоконтроллерами, жесткими дисками, хост-контроллерами и устройствами USB и NE2000-совместимыми сетевыми адаптерами. Этим темам, почти не рассматривавшимся в более ранних публикациях, уделено пять глав (3, 4, 6, 8, 9) из девяти. Традиционные устройства - диски и видеоконтроллеры - изучаются применительно к современным режимам работы (например, Ultra DMA), поскольку “втиснуть” все потенциально полезные сведения в одну книгу, даже очень толстую, совершенно нереально. Кстати, в прошлом году издательство “Питер” выпустило книгу того же автора и примерно такого же объема, специально посвященную программированию дисковых подсистем.

Еще в двух главах (первой и пятой) речь идет о программировании клавиатуры и мыши. Хотя почти все приведенные в них сведения уже публиковались ранее, включение их в книгу вполне оправданно: у читателя может не оказаться других публикаций по этой тематике, да и те, у кого они имеются, вряд ли захотят заваливать свой рабочий стол десятком толстенных фолиантов.

Во второй главе разбираются некоторые недокументированные возможности процессоров 80x86. Основное внимание уделяется 32-разрядной адресации в реальном режиме, хотя рассматриваются и другие вопросы: перевод числа из десятичного формата в двоичный и обратно с помощью сопроцессора, использование счетчика тактов процессора в качестве таймера и т. п.

Седьмая глава посвящена печати на принтерах в растровом режиме, а также программированию параллельных портов SPP, EPP и ECP. Приведены описание набора команд Epson ESC /P, фактически ставшего международным стандартом для матричных принтеров, его специальная растровая версия, поддерживаемая только струйными принтерами фирмы Epson, и командный язык PCL фирмы Hewlett-Packard.

Использовать книгу как справочник очень просто благодаря подробному оглавлению и алфавитному указателю. На прилагаемой дискете размещены исходные тексты приводимых примеров на ассемблере и уже оттранслированные программы. Однако есть и весьма курьезный “ляп”: судя по ссылкам в тексте, здесь должен быть весьма значительный (порядка сотни пунктов) список литературы, однако его нет!

Рассматриваемую книгу, как и другие публикации В. Кулакова, можно смело рекомендовать всем, кто интересуется вопросами программирования современных ПК без использования “услуг” фирмы Microsoft. Лично мне она сильно облегчила жизнь: хотя практически все приведенные в ней сведения у меня уже имеются, но они “размазаны” по многим источникам, в основном англоязычным doc- и pdf-файлам, что весьма неудобно.

Версия для печати