+
Действующая цена700 499 руб.
Товаров:
На сумму:

Электронная библиотека диссертаций

Доставка любой диссертации в формате PDF и WORD за 499 руб. на e-mail - 20 мин. 800 000 наименований диссертаций и авторефератов. Все авторефераты диссертаций - БЕСПЛАТНО

Расширенный поиск

Автоматизация переноса Си/Си++-приложений на новые платформы

  • Автор:

    Курмангалеев, Шамиль Фаимович

  • Шифр специальности:

    05.13.11

  • Научная степень:

    Кандидатская

  • Год защиты:

    2013

  • Место защиты:

    Москва

  • Количество страниц:

    102 с. : ил.

  • Стоимость:

    700 р.

    499 руб.

до окончания действия скидки
00
00
00
00
+
Наш сайт выгодно отличается тем что при покупке, кроме PDF версии Вы в подарок получаете работу преобразованную в WORD - документ и это предоставляет качественно другие возможности при работе с документом
Страницы оглавления работы

Оглавление
Введение
1 Обзор работ
1.1 Методы распространения ПО
1.1.1 Виртуальная машина HotSpot
1.1.2 DalvikVM
1.1.3 Dot net framework и платформа mono
1.1.4 Универсальные исполняемые файлы
1.1.5 Portable Native Client
1.2 Методы запутывания программ
1.2.1 Изменение имен идентификаторов
1.2.2 Контролируемые исключения
1.2.3 «Краденые» байты
1.2.4 Сторожевые страницы
1.2.5 Сокрытие импортируемых функций
1.2.6 Виртуальные машины
1.2.7 Особенности работы средств анализа кода
1.2.8 Требования, предъявляемые к запутывающим преобразованиям
2 Двухфазная компиляция
2.1 Схема функционирования
2.1.1 Сервер приложений
2.2 Описание модификаций в стандартных инструментах
2.2.1 Изменения в компиляторе Clang
2.2.2 Изменения в компоновщике
2.2.3 Динамический выбор уровня оптимизаций
2.2.4 Оптимизация работы ключевых частей инфраструктуры
3 Оптимизации
3.1 Машинно-независимые оптимизации
3.1.1 Сбор и обработка профиля выполнения программы
3.1.2 Открытая вставка функций
3.1.3 Клонирование блоков
3.1.4 Вынос "холодных" участков кода в отдельные функции

3.1.5 Спекулятивная девиртуализация
3.1.6 Формирование суперблоков
3.2 Машинно-зависимые оптимизации
3.2.1 Использование команд предвыборки при обработке массивов в цикле
3.2.2 Модификация алгоритма распределения регистров
4 Переносимость биткода 1ХУМ
4.1 Проблемы, препятствующие переносимости
4.1.1 Несовместимость АВ
4.1.2 Оператор «81геоб>
4.1.3 Встраиваемый ассемблер
4.2 Методы обеспечения переносимости
4.2.1 Несовместимость АВ
4.2.2 Переносимая версия оператора «з12еоб>
5 Методы запутывания кода
5.1 Критерии эффективности методов обфускации
5.2 Предлагаемые методы
5.2.1 Перенос локальных переменных в глобальную область видимости
5.2.2 Шифрование строк
5.2.3 Вставка фиктивных циклов
5.2.4 Преобразование диспетчер
5.2.5 Переплетение функций
5.2.6 Сокрытие вызов функций
5.2.7 Генерация несводимых участков в графе потока управления
5.2.8 Разбиение констант
5.2.9 Клонирование функций
5.2.10 Формирование непрозрачных предикатов
5.2.11 Зависимость от ключа пользователя
5.3 Оценка понижения быстродействия и потребляемой памяти
Заключение
Литература

Введение
На сегодняшний день всё более популярной становится схема распространения программного обеспечения (ПО) через Интернет-магазины приложений. Самыми известными такими магазинами являются Apple App Store [5] (более 900 ООО приложений), Google Play [6] (более 800 ООО приложений), Microsoft Store [7] (более 115 ООО приложений).
Процесс распространения ПО состоит в следующем: разработчик передаёт программный продукт владельцу магазина приложений, приложение размещается в интернет-магазине и становится доступным пользователю. Чтобы программный продукт оставался конкурентоспособным в течение длительного времени, разработчику необходимо обеспечивать функционирование приложения на большинстве программно-аппаратных платформ, поддерживаемых данным магазином приложений, добавляя поддержку новых платформ, в том числе оптимизировать программный продукт под новые версии ОС, модификации аппаратуры и др. Эта проблема особенно актуальна в связи со стремительным развитием мобильных платформ (обновление каждые несколько месяцев).
Как правило, эта проблема решается следующим образом: приложение или компилируется и оптимизируется разработчиком повторно для каждой новой платформы, с последующим добавлением в магазин новой версии бинарного кода, или реализуется с использованием динамических языков. Так для разработки приложений, не требующих контроля над доступными ресурсами, достаточно применения HTML 5 [8] в совокупности с JavaScript [9]. В данном случае разработчику не нужно реализовывать поддержку самих платформ, однако требуется обеспечивать совместимость с наиболее популярными браузерами, используемыми на этих платформах.
При применении JavaVM [10] приложение распространяется в промежуточном представлении. Переносимость достигается ценой потери производительности из-за использования дополнительного слоя абстракции, скрывающего реальное оборудование от исполняемой программы. В этом случае для обеспечения приемлемого уровня производительности дополнительно
предыдущем разделе, требуется запуск модифицированного компоновщика, были выполнены необходимые изменения в драйвере.
2.2.2 Изменения в компоновщике.
Поскольку на этапе компоновки мы можем определить порядок сборки и точные зависимости между модулями программы, были внесены необходимые изменения для сохранения данной информации. Данная информация требуется, для формирования корректной очереди компиляции на второй фазе сборки, и включения в инстанционный пакет, только необходимых файлов. Кроме того, наличие промежуточного представления на этапе компоновки позволяет выполнить дополнительные оптимизации времени связывания (LTO-link time optimizations), область видимости которых будет расширена до нескольких единиц трансляции.
После завершения компоновки модулей, содержащих биткод LLVM и их оптимизации, происходит сохранение объединенного модуля, содержащего биткод, запись всех необходимых ему зависимостей для корректной компиляции на второй фазе сборки и модификация путей к используемым системным библиотекам. В модули, которые содержат биткод LLVM и соответствуют финальным исполняемым файлам приложения внедряется дополнительная информация об именах, требуемых для динамической компиляции, других модулей, содержащих промежуточное представления LLVM.
2.2.3 Динамический выбор уровня оптимизаций
Механизм динамического переключения между уровнями оптимизации предназначен для решения вопроса экономии времени компиляции на функциях, которые исполняются редко при одновременном улучшении кода часто используемых функций. Как показано в работе [34], посредством только изменения опций можно достичь значительных результатов даже для статических компиляторов.
Идея состоит в том, чтобы не применять оптимизации для «холодных» функций, поскольку их оптимизация не оказывает существенного влияния на

Рекомендуемые диссертации данного раздела

Время генерации: 0.314, запросов: 967