Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Использование ассемблера для оптимизации программ на С++ - Магда Ю.С.

Магда Ю.С. Использование ассемблера для оптимизации программ на С++ — БХВ-Петербург , 2004. — 496 c.
ISBN 5-94157-414-2
Скачать (прямая ссылка): ispolzovaniyaassemblera2004.djvu
Предыдущая << 1 .. 4 5 6 7 8 9 < 10 > 11 12 13 14 15 16 .. 127 >> Следующая

Естественно, оптимизация на уровне процессора имеет свои особенности. Например, если программа должна работать с процессорами нескольких поколений, то оптимизация должна учитывать общие особенности всех этих устройств.
Здесь представлен далеко не полный перечень возможных вариантов оптимизации программного кода приложений. Как очевидно, большие резервы для повышения эффективности работы программы кроются в самой программе. В книге основное внимание будет уделено оптимизации программного кода с использованием языка ассемблера, поэтому далее рассмотрим более детально, как решаются такие задачи.
Язык ассемблера, как средство улучшения производительности приложений, написанных на языках высокого уровня, используется очень широко. Разумное сочетание в одном приложении модулей, написанных на языке высокого уровня и на ассемблере, позволяет достичь как высокого быстродействия работы программы, так и уменьшения размера исполняемого кода.* В настоящее время такое сочетание используется настолько часто, что фирмы-разработчики компиляторов уделяют особое внимание интерфейсу программ на языках высокого уровня с процедурами на ассемблере. Современные компиляторы языков высокого уровня имеют, как правило, встроенный ассемблер.
На практике применяются два варианта совместного использования ассемблера и языков высокого уровня. В первом случае используется отдельный файл объектного модуля, в котором располагается одна или несколько процедур обработки данных. Вызов этих процедур осуществляется программой, написанной с использованием высокоуровневой среды разработки, например, Visual C++ .NET.
В исходном тексте приложения на языке высокого уровня ассемблерная процедура объявляется соответствующим образом, после чего ее можно вызвать из любой точки основной программы. Внешний объектный модуль на ассемблере присоединяется к основной программе на этапе компоновки.
20
Введение
Файл с исходным текстом процедуры обычно имеет расширение asm и компилируется одним из распространенных пакетов, таких как Microsoft Macro Assembler (MASM), Borland Turbo Assembler (TASM 5.0) или Netwide Assembler (NASM). Последний компилятор превосходит первые два по своим возможностям, однако так сложилось, что в странах СНГ наиболее популярными являются все же компиляторы MASM и TASM.
Преимущества отдельно компилируемых модулей на ассемблере — это возможность использования программного кода в приложениях, написанных на разных языках и даже в разных операционных средах, и независимость процесса разработки и отладки программного кода процедур. К недостаткам, пожалуй, можно отнести некоторые сложности компоновки разработанного модуля с основной программой на языке высокого уровня. При этом необходимо четко представлять механизм вызова внешних процедур и передачи параметров в вызываемую процедуру. Преимущества такого подхода — многократное использование разработанных на ассемблере объектных модулей или библиотек функций. В этом случае программист должен позаботиться об интерфейсе ассемблерного модуля с программой, написанной на языке высокого уровня. Вопросы компоновки ассемблерных модулей и программ на языке C++ подробно будут рассматриваться в главе 7.
Второй вариант совместного использования ассемблера и языков высокого уровня основан на применении встроенного ассемблера. Разработка процедур на встроенном ассемблере удобна, в первую очередь, благодаря быстроте отладки. Так как процедура разрабатывается в теле основной программы, то не требуется специальных средств для компоновки такой процедуры с вызывающей программой. Не нужно также заботиться о порядке передачи параметров в вызываемую процедуру и о восстановлении стека. К недостаткам этого метода оптимизации можно отнести определенные ограничения, которые накладывает среда программирования на работу ассемблерных модулей, а также то, что процедуры, разработанные на встроенном ассемблере, нельзя преобразовать во внешние отдельно используемые модули.
Практически все современные средства разработки ассемблерных программ имеют в своем составе интегрированный отладчик, так же как и языки высокого уровня. И хотя такой отладчик обычно предоставляет меньший уровень сервиса по сравнению с языками высокого уровня, он вполне достаточен для анализа программного кода.
Несмотря на то, что ассемблер воспринимается многими программистами только как вспомогательное средство для улучшения программ, его значение как самостоятельного средства разработки высокоэффективных приложений в последнее время очень изменилось.
До сих пор существует некий стереотип, касающийся разработки приложений на ассемблере. Среди многих программистов, пишущих на языках высокого уровня, бытует мнение о сложности ассемблера, плохой структури-
Введение
21
руемости программного обеспечения и плохой переносимости кода при переходе на другие платформы. Возможно, многие помнят разработку программ на ассемблере в MS-DOS, что действительно требовало немалых усилий. Кроме того, отсутствие в то время современных средств программирования на ассемблере замедляло разработку сложных проектов.
Предыдущая << 1 .. 4 5 6 7 8 9 < 10 > 11 12 13 14 15 16 .. 127 >> Следующая