На самом деле это не ответ, а своего рода расширенный комментарий к ответам других людей.
Встроенная сборка по-прежнему используется для доступа к функциям ЦП. Например, в чипах ARM, используемых в сотовых телефонах, разные производители различают свои предложения с помощью специальных функций, которые требуют необычных инструкций машинного языка, не имеющих эквивалента в C/C++.
Еще в 80-х и начале 90-х я много использовал встроенный ассемблер для оптимизации циклов. Например, тогда компиляторы C, ориентированные на процессоры 680x0, делали очень глупые вещи, например:
calculate a value and put it in data register D1
PUSH D1, A7 # Put the value from D1 onto the stack in RAM
POP D1, A7 # Pop it back off again
do something else with the value in D1
Но мне не нужно было делать это лет пятнадцать, наверное, потому что современные компиляторы намного умнее. На самом деле современные компиляторы иногда генерируют более эффективный код, чем большинство людей. Особенно учитывая процессоры с длинными конвейерами, предсказанием ветвлений и т. д., самая быстро выполняющаяся последовательность инструкций не всегда является той, которая будет наиболее понятной для человека. Таким образом, вы можете сказать: «Выполняйте A B C D в таком порядке», и компилятор зашифрует порядок для большей эффективности.
Для начала неплохо поиграться со встроенным ассемблером, но если вы настроены серьезно, я поддержу тех, кто предлагает через некоторое время перейти на «настоящий» ассемблер.
person
Bob Murphy
schedule
23.10.2009