Книга: Программирование для Linux. Профессиональный подход
9.1. Когда необходим ассемблерный код
9.1. Когда необходим ассемблерный код
Инструкции, указываемые в функции asm()
, позволяют программам напрямую обращаться к аппаратным устройствам, поэтому полученные программы выполняются быстрее. Ассемблерные инструкции используются при написании кода операционных систем. Например, файл /usr/include/asm/io.h
содержит объявления команд, осуществляющих прямой доступ к портам ввода-вывода. Можно также назвать один из исходных файлов ОС Linux — /usr/src/linux/arch/i386/kernel/process.s
; в нем с помощью инструкции hlt
реализуется пустой цикл ожидания.
Прибегать к ассемблерным инструкциям как к средству ускорения работы программы следует лишь в крайнем случае. Современные компиляторы достаточно сложны и прекрасно осведомлены об особенностях работы процессоров, для которых они генерируют код. Часто они создают цепочки кодов, которые кажутся неэффективными или неоптимальными, но на самом деле такие последовательности инструкций выполняются быстрее других. В подавляющем большинстве случаев можно положиться на оптимизирующие способности компиляторов.
Иногда одна или две ассемблерные команды способны заменить целую группу высокоуровневых инструкций. Например, чтобы определить позицию самого старшего значащего бита целого числа в языке С, требуется написать цикл, тогда как во многих ассемблерных языках для этой цели существует операция bsrl
. Ее использование будет продемонстрировано в разделе 9.4, "Пример".
- Глава 9 Встроенный ассемблерный код
- Когда нужен постскриптум в бизнес-тексте?
- Почему необходима миграция
- Уменьшение времени, необходимого для резервного копирования и восстановления
- Дополнительные национальные кодовые страницы и порядки сортировки
- Глава 5 Агрессивные формы кода и борьба с ними
- Стиль написания исходного кода
- Как я нашла «правильных» потребителей, когда искала «неправильных»
- 1.4. Кодирование информации
- Когда старая школа молода
- 1.4.1. Кодирование во время выполнения
- Три способа кодирования звука