Вы таки навлекли на себя гнев хотя бы одного asm-фанатика :)
Я собственно о чем. ASM -нужно изучать для того что бы:
- Понимать как работает код в HLL-языках. Что такое указатель я понял лишь написав первую программу на ассемблере.
- Для оптимизации. Современные компиляторы генерируют какой то бред, а не код.
- Для доступа к расширениями процессора. SSE, MMX, FPU, а скоро и AVX. Все они сулят серьезный прирост производительности.
- Для написания драйверов. Нет серьезно, но как можно получить доступ к GDT, IDT, Page Directory или Page Table ? Да ведь никак по сути.
- Для гибкой настройки производительности приложения. При желании можно сделать несколько функции оптимизированных под разные архитектуры и даже если эту оптимизацию сделает компилятор, CPUID данные можно получить только из ассемблерной вставки.
Я вообще не понимаю как можно заниматься системным программированием не зная ассемблера? А ведь это не самая малораспространенная область. Да предположим пользовательские приложения можно и нужно писать на HLL целиком и полностью, но вот утилиты для работы с железом компьютера, ну никак не получится обойтись одними HLL.
Может быть вы имели ввиду что речь идет сугубо о пользовательских приложениях? А вообще то и их частенько пишу на ассемблере( ну нравится мне это дело, удовольствия масса, когда видишь что твоя программа маленькая, быстрая и собрана чуть бы не по байтику :)).
Примечание:
Не одним переносом переменных в регистры, оптимизация жива. Там же масса параметров. Ну и я не предлагаю писать на нем огромные модули с этими самыми сотнями переменных. Да и вообще при правильном разделении кода, этих самых сотен вообще нигде возникнуть не должно. Пара массивов, индексы и одиночные переменные. Вместе не больше 10-15 штук. Их вполне можно помнить. Оптимизация к тому же заключается еще и в использовании правильных команд, некоторые команды настолько устарели что у них уже есть аналоги работающие в пару раз быстрее. Скажем так же команда LOOP медленнее простой связки cmp+jb. Это самый вопиющий пример который я помню, разница в четыре раза. х86 от части имеет свойства VLIW-процессоров, у него есть конвейеры и пока выполняется одна команда, может быть выполнена и еще одна но та которая принадлежит другому конвейеру.
Документ который вы привели это тот же ассемблер только из коробки. Компиляторы не научились оптимизировать код самостоятельно.
Про то что там с FPU получается, это вообще веселье(хотя я лично отказался от использования FPU как такового в пользу SSE, разве что когда тригонометрические функции нужны, пользуюсь).
Драйвер можно писать на сях, согласен. Тут я преувеличил.
А вот по поводу последнего у меня назревает вопрос. Как вы думаете сколько нынче компьютеров имеют процессоры с х86 архитектурой? :) Да и не вымрет она через 20 лет, а раньше скорее всего, ей на смену придет х86_64, но это тоже самое только в профиль. Стоит учитывать то что ей не даст умереть корпорация ее создавшая.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.