Асемблер для професіоналів
Пирогов В. Ю. Асемблер для Windows. Вид. 2-е. СПб .: БХВ-Петербург, 2003. - 656 с.
Зубков С. В. Assembler для DOS, Windows і Unix. Вид. 2-е, испр. і доп. М .: ДМК-Пресс, 2003. - 608 с.
Незважаючи на повсюдне поширення мов високого рівня, в першу чергу Сі і С ++, асемблер міцно займає почесне місце в умах і серцях невеликий, але досить кваліфікованої групи програмістів. Справді, лише асемблер дозволяє вирішити на комп'ютері все без винятку завдання, які тільки піддаються вирішенню взагалі (хоча писати на ньому якусь, наприклад, бухгалтерську програму - це такий собі різновид мазохізму).
Зазвичай вивчення асемблера обмежується програмуванням в середовищі DOS, що різко звужує можливості його використання на практиці: як не крути, а DOS давно вже мертва. Однак книга Владислава Пирогова присвячена виключно застосування асемблера в середовищі Windows 9x / NT. Вона складається з чотирьох частин і чотирьох додатків. Відразу відзначимо, що вона розрахована на читачів, вже вміють програмувати на асемблері в який-небудь інший системі, і перш за все в DOS, тому в ній відсутні відомості для початківців - що таке регістри, якими інструкціями має процесор і т. П.
Перша частина книги відведена основам 32-розрядної програмування в Windows: інструментальних засобів, способів звернення до функцій Windows API і тому подібним базових питаннях.
У другій частині програмування під Windows розглядається більш докладно. Розбираються консольні додатки, використання редакторів і трансляторів ресурсів, робота з файлами. Зачіпаються також макросредства асемблера.
У третій частині описуються більш складні моменти програмування в Windows: синхронізація подій, багатозадачність, створення DLL, робота з локальною мережею, деякі питання системного програмування, а також спільна робота з програмами на асемблері в мовах високого рівня.
Остання, четверта частина присвячена питанням налагодження, дизассемблирования програм, а також створення VxD-драйверів для Windows 9x (в наступному виданні книги автор обіцяє розглянути драйвери Windows NT).
Додатки містять короткий довідник по найбільш вживаним повідомленнями і функцій Windows API, довідник по архітектурі і системі команд мікропроцесорів, включаючи захищений режим, і опис структури виконуваних модулів.
Книга Сергія Зубкова складається з 11 глав і двох додатків. Оскільки вона призначена в тому числі і для початківців, значний обсяг в ній займають відомості, які відсутні в книзі В. Пирогова. Так, в першому розділі даються матеріали про асемблері, системах числення, методи кодування символів і т. П., А в другій описуються регістри, способи адресації і основні інструкції процесора. Правда, тут же розглядаються плаваюча арифметика, команди MMX, 3DNow! і SSE, тобто речі, явно розраховані не на «чайників".
Третя глава присвячена директивам асемблера. І знову разом з самими основними директивами наводяться відомості про макросредств і умовному асемблюванні - "просунутих" можливості, які використовуються досить рідко.
Дві глави (4-я і 5-я) присвячені програмування під DOS, при цьому поряд з елементарними питаннями розбирається, наприклад, і програмування на рівні портів введення-виведення, а також драйвери пристроїв для DOS.
Шоста глава відведена програмування в захищеному режимі під DOS, зокрема із застосуванням так званих розширювачів DOS, а сьома - програмування під Windows. Хоча по набору тем ця глава порівнянна з книгою Вл. Пирогова, різниця в обсязі (47 сторінок проти 650) не дозволяє розглянути їх скільки-небудь докладно.
У восьмому розділі дуже коротко (5 сторінок проти 33 у Пирогова) розглядаються проблеми сполучення програм на асемблері з мовами високого рівня.
Останні три розділи присвячені питанням оптимізації, роботі процесора в захищеному режимі і програмування в системі Unix.
Перша з рецензованих книг, сконцентрована в основному навколо програмування під Windows, видається куди більш цілісною і "легкотравної", ніж друга. Відразу відмовившись від спроб "осягнути неосяжне", В. Пирогов розбирає в ній більшість основних питань, що виникають при створенні реальних додатків під Windows. Навіть така складна задача, як створення драйверів, розібрана досить докладно, щоб зрозуміти загальну ідею (хоча для повноцінного і всебічного висвітлення цієї теми може знадобитися окрема книга приблизно такого ж обсягу). Природно, однак, що наявність цієї книги не позбавляє від необхідності купувати додаткову літературу або користуватися електронними джерелами інформації: Windows API містить занадто багато функцій, щоб їх розумне опис вмістилося в книгу, що служить насамперед навчальним цілям.
На противагу В. Пирогову, автор другої книги спробував охопити як теми для новачків, тільки тих, хто приступає до програмування на асемблері, так і інформацію для вельми кваліфікованих програмістів. По-моєму, нічого доброго з цього не вийшло. У підручнику для початківців необхідно послідовне виклад матеріалу від простого до складного, з численними прикладами і досить розгорнутими коментарями, при цьому особливо важкі теми можна або взагалі не зачіпати, або розглядати в останніх главах. Професіоналу пояснення прописних істин не тільки не потрібно, але і заважає - текст загромождают абсолютно непотрібними з його точки зору речами, що розсіює увагу і ускладнює пошук необхідної інформації, а залишився обсягу для викладу дійсно важливих питань не вистачає. Нарешті, довідник повинен взагалі обходитися мінімумом прикладів і коментарів навчального характеру, але він повинен бути чітко структурований і містити якомога повніший матеріал по темі - на те він і довідник. Слід визнати, що книгу С. Зубкова раціонально використовувати тільки в якості довідника по системі команд мікропроцесорів сімейства 80x86 (проте доречно зауважити, що опис архітектури цього сімейства, доступне у вигляді трьох PDF-файлів на сайті фірми Intel (www.intel.com), займає 1881 стор.). Правда, і з власного досвіду, і за відгуками інших читачів попередніх книг цього автора слід зазначити, що він дійсно ретельно перевіряє свої приклади, завдяки чому досягається майже (а то й абсолютно) 100-процентна виконуваність їх на комп'ютерах читачів, - важлива якість для підручника , адже самостійно знайти помилку в прикладі початківцю буває часто дуже непросто.
Серйозний недолік обох книг - відсутність CD-ROM або хоча б дискети з текстами наведених в них прикладів. Для асемблера це особливо відчутно - обсяги вихідних текстів, м'яко кажучи, не викликають ентузіазму для ручного їх набору.
Підводячи підсумки, можна зробити висновок, що книга В. Пирогова цілком підійде вже добре знайомому з асемблером читачеві, хто бажає навчитися створювати програми під Windows, творіння ж С. Зубкова може виявитися корисним людині, оволодів основними навичками програмування для DOS і бажає поглибити свої знання перш за все в цій галузі, а також в ручному програмуванні захищеного режиму. Для початківців програмістів обидві ці книги малоподходящі.
Версія для друку