Статический анализ кода для автоматизированного обнаружения ошибок при переносе программ на 64-битные платформы тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат технических наук Рыжков, Евгений Александрович
- Специальность ВАК РФ05.13.11
- Количество страниц 135
Оглавление диссертации кандидат технических наук Рыжков, Евгений Александрович
Введение.
Глава 1. Постановка задачи переноса приложений на 64-битные платформы
1.1 Проблема переноса приложений на 64-битные платформы.
1.2 Способы тестирования приложений для подтверждения корректности переноса кода.
1.2.1 Просмотр кода.
1.2.2 Статический анализ кода.
1.2.3 Динамический анализ кода.
1.2.4 Метод белого ящика.
1.2.5 Метод черного ящика.
1.2.6 Ручное тестирование.
1.3 Основные задачи исследования.
Глава 2. Статический анализ кода как наиболее удобное решение для проверки корректности 64-битных программ.
2.1 Применение статического анализа кода при разработке программ.
2.1.1 Процесс анализа.
2.1.2 Дерево кода.
2.1.3 Методы статического анализа.
2.2 Разработка статического анализатора: требования, архитектура, реализация.
2.2.1 Требования к анализатору кода.
2.2.2 Архитектура анализатора кода.
2.2.3 Реализация анализатора кода.
Глава 3. Обнаружение ошибок при переносе программ на 64-битные платформы.
3.1 Примеры потенциально-опасных конструкций в коде программ на языке Си++.
3.1.1 Использование функций с переменным количеством аргументов.
3.1.2 Магические константы.
3.1.3 Хранение в double целочисленных значений.
3.1.4 Операции сдвига.
3.1.5 Упаковка указателей.
3.1.6 Memsize-типы в объединениях.
3.1.7 Изменение типа массива.
3.1.8 Виртуальные функции с аргументами типа memsize.
3.1.9 Сериализация и обмен данными.
3.1.10 Битовые поля.
3.1.11 Адресная арифметика с указателями.
3.1.12 Индексация массивов.
3.1.13 Смешанное использование простых целочисленных типов и memsize-типов.
3.1.14 Неявные приведения типов при использовании функций.
3.1.15 Перегруженные функции.
3.1.16 Выравнивание данных.
3.1.17 Исключения.
3.1.18 Использование устаревших функций и предопределенных констант
3.1.19 Явные приведения типов.
3.2 Правила статического анализа кода для диагностики потенциально-опасных конструкций.
3.2.1 Приведение 32-битных целых типов к memsize-типам.
3.2.2 Приведение memsize-типов к целым 32-битным типам.
3.2.3 Memsize-типы в виртуальных функциях.
3.2.4 Memsize-типы в перегруженных функциях.
3.2.5 Приведение типов указателей на memsize-типы.
3.2.6 Приведение memsize-типов к double.
3.2.7 Memsize-типы в функции с переменным количеством аргументов
3.2.8 Опасные константы.
3.2.9 Memsize-типы в объединениях.
3.2.10 Исключения и memsize-типы.
3.3 Методика создания новых правил диагностики ошибок.
Глава 4. Программный комплекс для статического анализа 64-битных приложений Viva64.
4.1 Обзор программы Viva64.
4.2 Сравнение диагностических возможностей современных анализаторов при проверке 64-битного кода.
4.3 Применение Viva64 для проверки CAD-системы Leios Studio.
4.3.1 Библиотека компонентов Leios Components.
4.3.2 Программный интерфейс для работы с облаками точек и триангулированными сетками.
4.3.3 Библиотека подгонки деталей.
4.3.4 Библиотека обработки граней и ребер.
4.3.5 Необходимость миграции библиотеки компонентов на 64-битную платформу.
4.3.6. Участие компании ООО «СиПроВер» в миграции библиотеки компонентов.
Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК
Современные методы статического и динамического анализа программ для автоматизации процессов повышения качества программного обеспечения2012 год, доктор физико-математических наук Аветисян, Арутюн Ишханович
Автоматическая генерация тестов для семантических анализаторов трансляторов2006 год, кандидат физико-математических наук Архипова, Мария Викторовна
Метод межпроцедурного и межмодульного анализа кодов программ, написанных на языках C и C++, для построения многоцелевого контекстно-чувствительного анализатора2017 год, кандидат наук Сидорин, Алексей Васильевич
Межпроцедурный контекстно-чувствительный статический анализ для поиска ошибок в исходном коде программ на языках Си и Си++2016 год, кандидат наук Бородин Алексей Евгеньевич
Принципы и методы создания компилятора переднего плана Стандарта Cu ++1999 год, кандидат физико-математических наук Зуев, Евгений Александрович
Введение диссертации (часть автореферата) на тему «Статический анализ кода для автоматизированного обнаружения ошибок при переносе программ на 64-битные платформы»
В 2003-2004 годах в мире персональных компьютеров началась очередная революция. Она захватила все без исключения компьютеры, операционные системы, прикладные программы. Стремительно начавшись, она должна была поднять вычислительную технику на очередной уровень уже к 2005-2006 годам. Однако на момент написания этих строк (заканчивается 2008 год) революция так и не достигла своего пика. Речь идет о переходе на 64-битные технологии. Давайте посмотрим, с чего начался этот переход, как продолжался и каково состояние дел сейчас.
Вообще 64-битные технологии в мире не являлись новинкой даже в 2003 году. На платформах альтернативных современным персональным компьютерам 64-битные решения существуют достаточно давно. Однако только в 2003 появились первые 64-битные процессоры для персональных компьютеров. Эти процессоры представляли собой реализацию технологий AMD64 компании AMD и ЕМ64Т компании Intel. Причина появления новых 64-битных процессоров банальна. У старых 32-битных процессоров существует принципиальное ограничение - они могут работать только с четырьмя гигабайтами оперативной памяти, при этом каждому отдельному пользовательскому приложению доступно не более двух гигабайт. Пока подобные ограничения мешали лишь в профессиональной среде (дизайнерам, инженерам и т.п.), то вопрос решался просто. Специалисты обычно использовали нестандартную вычислительную технику, и это снимало проблемы. Однако когда обыкновенные игры для персональных компьютеров подобрались к пределу в два гигабайта оперативной памяти уже и «домашним» пользователям понадобились новые процессоры.
Естественно рынок прекрасно подготовился к новым потребностям пользователей. В 2003 году только появились первые образцы 64-битных процессоров, а в 2005 году уже нельзя было купить в магазине не 64-битный процессор. Казалось бы, проблема решена? К сожалению, для того чтобы преимущества 64-битных систем стали доступны пользователям, надо иметь в компьютере четыре гигабайта оперативной памяти (или более). А на 2005 год наиболее распространенной конфигурацией были машины с одним, максимум двумя гигабайтами.
К концу 2006 года оперативная память в обыкновенных персональных компьютерах уже стала приближаться к трем-четырем гигабайтам. Казалось бы, уж теперь самое время оценить преимущества 64-битных компьютеров. Но для того, чтобы это сделать, нужно иметь еще и 64-битную операционную систему. К счастью, Microsoft выпустила 64-битные версии Windows ХР и Windows Server 2003 задолго до этого. Но на компьютерах пользователей эти операционные системы не спешили появляться. И эта ситуация сохраняется в настоящем времени. Практически на всех пользовательских компьютерах установлены 32-битные операционные системы семейства Windows ХР и Windows Vista. Это объясняется отсутствием (как тогда, так и сейчас) 64-битных драйверов и что более важно недостаточным количеством 64-битных программ. Ведь хотя 32-битные программы и работают на 64-битных операционных системах почти без проблем, но больший объем оперативной памяти могут использовать только 64-битные программы.
Именно в 64-битных программах и кроется объяснение того факта, что до сих пор большинство пользователей не могут сказать, что используют 64-битную инфраструктуру при работе на компьютере, несмотря на все ее преимущества. Как оказалось, процесс переноса программ с 32-битных систем на 64-битные на практике не так уж и прост. И именно разработчики программ оказались «виноваты» в отсутствии 64-битных программ. Разберемся, в чем же дело.
Для того чтобы выпустить 64-битную версию программы ее нужно перекомпилировать специальным компилятором, который сгенерирует 64-битный код. Какие-то компании (как например Microsoft, Intel) выпустили 64-битные компиляторы довольно оперативно. Это значит, что уже в 2005 году эти компиляторы были доступны разработчикам. Другие же (как например Borland) до сих пор не выпустили 64-битных версий своих средств разработки. Это приводит к тому, что программы, разработанные в среде Borland С++, никак не могут быть скомпилированы для работы в 64-битном окружении.
Но поскольку многие программы разрабатываются с использованием средств от Microsoft и Intel, то, казалось бы, 64-битных программ должно быть все-таки довольно много? Увы, опыт многих компаний, занимающихся разработкой программного обеспечения, показал, что недостаточно просто перекомпилировать программу новым 64-битным компилятором.
Дело в том, что в программах, скомпилированных для 64-битных платформ, могут проявляться неожиданные (даже для разработчиков программ) ошибки. Приведем несколько примеров.
Будучи перекомпилированной под 64 бита обычная пользовательская программа делала вид, что прекрасно работает. До тех пор, пока пользователь не нажал клавишу F1. Вместо ожидаемого открытия справочной системы на экране появилось окошко с короткой фразой про невозможность загрузить справку. Казалось бы, какое отношение имеет справочная система к разрядности процессора? Но дело оказалось действительно в некорректной работе программы на новой системе. Поведение функций, отвечающих за справочную систему, изменилось и справка просто «сломалась».
Другой пример. Приложение для визуализации данных, в котором используемый объем оперативной памяти приближался к двум гигабайтам, было естественным кандидатом на 64-битную версию. Новая 64-битная версия работала прекрасно, пользователи не видели никаких проблем. До тех пор, пока кто-то не захотел построить изображение по данным, превышающим несколько гигабайт. Картинка была построена, но на экране показалось. только половина изображения. Почему? Некорректная работа в программе с большими объемами данных.
Незнакомый с индустрией разработки программных систем человек может задаться вопросом: «Почему подобные ошибки в программах не выявляются на этапе тестирования?» Ответ на этот вопрос не совсем очевиден. Дело в том, что существующие системы внутренних и внешних тестов программного обеспечения не позволяют выявить ошибки, характерные именно для 64-битных систем. Ведь по своей сути часто тесты должны выполняться очень быстро, поэтому, скажем, тестировать обработку нескольких гигабайт данных в таких тестах не будут. Инструменты для разработчиков долгое время также оставались в стороне от проблемы 64-битного программного обеспечения. Специализированные инструменты начали появляться относительно недавно, в 2007 году. В разработке одного из таких инструментов и принимает участие автор данной работы.
О каких инструментах идет речь? Есть специальный класс программ, называемый статические анализаторы кода. Этот анализатор кода разбирает» исходный код программы и выдает программисту список потенциальных проблем в коде. После чего программист их исправляет, и программа уже получается готовой к выходу в 64-битный мир.
Настоящая работа посвящена как раз исследованию и реализации такого инструмента под названием У-1Уа64, разрабатываемому в компании ООО «СиПроВер».
Анализатор кода У1уа64 предназначен для диагностики ошибок в исходном коде программ, проявляющихся при миграции приложений на 64-битные платформы. При переносе программ на 64-битные платформы, в программах проявляются ошибки. Эти ошибки были допущены при разработке программ, намного раньше процесса миграции на 64-битные системы. Однако в рамках 32-битной платформы они не проявлялись и стали проявляться только на 64-битной платформе. Анализатор УЬ/а64 предназначен для выявления подобных ошибок в программах. Основное содержание данной работы - это формулировка правил диагностики ошибок и реализация системы автоматической диагностики.
Анализатор У1уа64 разработан для анализа программ на языках программирования Си и Си++. Выбор этих языков обусловлен тем, что с одной стороны, много коммерческих программных продуктов реализованы на этих языках. С другой стороны, данные языки наиболее сильно подвержены возможности программисту написать код с ошибками, так как они являются достаточно низкоуровневыми языками.
Вопросами повышения качества программного обеспечения занимаются С. Макконнел, М. Фаулер, С. Майерс, в России - В.В. Липаев. Проблемами 64-битного кода - М. Питрек, А.Зейчик, М. Уолл, К.С. Гэтлин,
А. МакНаутон. Разработкой статических анализаторов занимаются С. Гутз, А. Колава. Недостатком работ данных авторов является тот факт, что они не уделяли внимание автоматизированному обнаружению ошибок в 64-битных приложениях. Они обращали свое внимание либо на различные методики обучения программистов написанию качественного кода, либо на другие способы повышения качества. При этом автоматизированное обнаружение ошибок рассматривалось лишь для наиболее традиционных ошибок программистов - 64-битный код оставался в стороне.
Объектом исследования является процедура миграции (переноса) программного обеспечения с 32-разрядной на 64-разрядную платформу.
Предметом исследования являются правила диагностики потенциально опасных синтаксических конструкций в коде программ на языках Си и Си++.
Цель диссертации. Целью работы является повышение качества программных продуктов и сокращение количества программных ошибок во время процедуры миграции программного обеспечения на 64-битные платформы. Для достижения этой цели разработаны правила диагностики потенциально опасных синтаксических конструкций и реализован программный продукт в виде статического анализатора кода для проверки корректности процесса переноса программ на языках Си и Си++ на 64-битную платформу.
Основные задачи исследования.
1. Исследование потенциально опасных синтаксических конструкций и выражений в коде программ на языках программирования Си и Си++, которые могут привести к ошибкам в программах при переносе их кода с 32-битных на 64-битные платформы.
2. Разработка правил диагностики выявленных потенциально опасных синтаксических конструкций в виде, доступном для автоматизированного обнаружения ошибок в программах; разработка методики создания новых правил диагностики ошибок миграции.
3. Реализация на основе разработанных правил статического анализатора кода, выявляющего соответствующие ошибки в исходном коде программ.
4. Сравнительный анализ разработанного статического анализатора кода с альтернативными инструментами.
5. Исследование применимости разработанного статического анализатора кода на примере диагностики ошибок в реальном программном продукте.
Методы исследования - методы теории множеств, теории формальных языков, теории графов, методы программирования на языках высокого уровня.
Научная новизна работы. Научная новизна работы заключается в следующем:
1. Проведено исследование и выполнена систематизация потенциально опасных синтаксических конструкций и выражений в коде программ на языках программирования Си и Си++, которые могут привести к ошибкам в программах при переносе их кода с 32-битных на 64-битные платформы.
2. Впервые предложены классы для систематизации ошибок: приведения тепшге-типов, функции с параметрами тепшге-типов, синтаксические конструкции с тепшге-типами, использование «магических» чисел.
3. Разработаны формальные правила диагностики ошибок, возникающих при переносе кода на 64-битные архитектуры, отличающиеся от эвристических, не описанных строго методов диагностики существующих программных продуктов.
4. Разработана методика создания новых правил диагностики ошибок в программах при переносе их кода с 32-битных на 64-битные платформы.
Положения, выносимые на защиту. На защиту выносятся следующие положения:
1. Систематизация потенциально опасных синтаксических конструкций в коде программ на языках программирования Си и Си++, которые могут привести к ошибкам в программах при переносе их кода с 32-битных и на 64-битные платформы.
2. Классы ошибок, возникающих в приложениях при миграции на 64-битную платформу.
3. Формальные правила диагностики ошибок, возникающих при переносе кода на 64-битные архитектуры.
4. Методика создания новых правил диагностики ошибок в программах при переносе их кода с 32-битных на 64-битные платформы.
Практическая значимость. На основе сформулированных правил реализован программный комплекс У1уа64, подтверждающий применимость
13 данных правил. С помощью него возможно автоматизировать процесс поиска ошибок в программах при разработке 64-битных версий приложений. Это позволяет выпускать новые 64-битные программы, во-первых, значительно быстрее, а, во-вторых, со значительно более высоким уровнем качества. На разработанный программный продукт получено свидетельство об официальной регистрации программы для ЭВМ.
Апробация работы. Основные результаты работы докладывались на конференциях: 1. Software Engineering Conference (Russia), 1-2 ноября 2007 г., Москва. 2. Технологии Microsoft в теории и практике программирования, 1-2 апреля 2008 г., Москва. 3. Ломоносов - 2008: Международная конференция студентов, аспирантов и молодых ученых, 7-11 апреля 2008 г., Москва. 4. Международная молодежная научная конференция «XXXIV Гагаринские чтения», 2008 г, Москва. 5. Всероссийская студенческая олимпиада «Конкурс компьютерных программ», 22-23 мая 2008 г., Вологда. 6. Математические методы в технике и технологиях - ММТТ-21, 27-31 мая 2008 г., Саратов. Работа обсуждалась на плановых семинарах: в Тульском государственном университете, кафедра автоматики и телемеханики, Тула, 29 марта 2007 г., 27 февраля 2009 г.; в Вычислительном центре Российской академии наук, отдел систем математического обеспечения, Москва, 15 мая 2008 г.; в Институте системного программирования Российской академии наук, отдел «Технологий программирования», Москва, 7 июня 2008 г., в Научно-исследовательском вычислительном центре Московского государственного университета, Москва, 23 марта 2009 г.
Публикации. По теме диссертации опубликовано 10 печатных работ.
Структура и объем работы. Диссертационная работа состоит из введения, четырех глав, заключения и списка литературы. Объем работы
Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК
Автоматический поиск ошибок в компьютерных программах с применением динамического анализа2013 год, кандидат наук Исходжанов, Тимур Равилевич
Методы и средства противодействия атакам на компьютерные системы, основанным на использовании уязвимостей программного кода2012 год, кандидат технических наук Гуров, Дмитрий Валерьевич
Исследование и разработка языковых средств описания неоднородных вычислительных систем и их реализация в системе программирования mpC2000 год, кандидат физико-математических наук Ледовских, Илья Николаевич
Автоматизированный контроль корректности MPI-программ на основе шаблонов ошибочного поведения2014 год, кандидат наук Власенко, Андрей Юрьевич
Сохранение конфигураций защиты в гетерогенных сетях при миграции пользователей и файловых систем1999 год, кандидат технических наук Шапошник, Александр Васильевич
Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Рыжков, Евгений Александрович
Основные результаты работы:
1. Проведено исследование и выполнена систематизация потенциально опасных синтаксических конструкций и выражений в коде программ на языках программирования Си и Си++, которые могут привести к ошибкам в программах при переносе их кода с 32-битных на 64-битные платформы.
2. Впервые предложены классы для систематизации ошибок: приведения тепшге-типов, функции с параметрами тепшге-типов, синтаксические конструкции с тепшге-типами, использование «магических» чисел.
3. Разработаны правила диагностики выявленных потенциально опасных синтаксических конструкций в виде, доступном для автоматизированного обнаружения ошибок в программах.
4. Разработана методика создания новых правил диагностики ошибок в программах при переносе их кода с 32-битных на 64-битные платформы.
5. На основе разработанных правил реализован программный продукт статический анализатор кода У1уа64, выявляющий ошибки миграции в исходном коде программ. Выполнено сравнение разработанного статического анализатора кода с альтернативными инструментами. Экспериментальная проверка показала, что основанный на представленных в работе правилах диагностике программный комплекс У1уа64 обнаруживает большое количество ошибок миграции. Практические результаты работы внедрены в ООО «СиПроВер».
6. Теоретические результаты работы используются в учебном процессе на кафедре автоматики и телемеханики Тульского государственного университета в рамках дисциплины «Объектно-ориентированное программирование».
Заключение
Список литературы диссертационного исследования кандидат технических наук Рыжков, Евгений Александрович, 2009 год
1. Ахо, А. Компиляторы: принципы, технологии и инструменты / А. Ахо, Р. Сети, Д. Ульман; пер. с англ. М.: Издательский дом «Вильяме», 2003.-768 с.
2. Бек, J1. Введение в системное программирование / JI. Бек. -М.:Мир, 1988.-448 с.
3. Бен-Ари, М. Языки программирования. Практический сравнительный анализ / М. Бен-Ари. М.:Мир, 2000. - 366 с.
4. Вайнгаартен, Ф. Трансляция языков программирования / Ф. Вайнгаартен. М.: Мир, 1977. - 190 с.
5. Волкова, И.А. Формальные грамматики и языки. Элементы теории трансляции / И.А. Волкова, Т.В. Руденко. М.: Диалог-МГУ, 1999. -62 с.
6. Гетц, Б. Избавьтесь от ошибок Электронный ресурс. / Б. Гетц. -Электрон, текстовые дан. 2007. - Режим доступа: http://www.ibm.com/developerworks/ru/library/i-itp06294/index.html, свободный.
7. Гордеев, A.B. Системное программное обеспечение / A.B. Гордеев, А.Ю. Молчанов. СПб.: Питер, 2001. - 736 с.
8. Грис, Д. Конструирование компиляторов для цифровыхвычислительных машин / Д. Грис. М.: Издательство «Мир», 1975. -544 с.
9. Ю.Донован, Д. Системное программирование / Д. Донован. -М.:Мир, 1975.-500 с.
10. П.Зуев, Е.А. Принципы и методы создания компилятора переднего плана Стандарта Си++: дис. . канд. техн. наук : 05.13.11 / Е.А. Зуев. М., 1999.- 174 с.
11. Зуев, П. О компьютерной безопасности Электронный ресурс. / П. Зуев. Электрон, текстовые дан. - 2003. - Режим доступа: http://www.imm.uran.ru/RUS/WIN/PUBLIC/MISC/zuev, свободный.
12. Карпов, А.Н. 20 ловушек переноса С++-кода на 64-битную платформу / А.Н. Карпов, Е.А. Рыжков // RSDN Magazine. 2007. - №1. - С.65-75.
13. Касьянов, В.Н. Методы построения трансляторов / В.Н. Касянов, И.В. Поттосин. Новосибирск: Наука, 1986. - 330 с.
14. Кован, К. Безопасность систем с открытым кодом Электронный ресурс. / К. Кован. Электрон, текстовые дан. - 2003. - Режим доступа: http://www.osp.ru/os/2003/07-08/183264, открытый.
15. Колосов, А.П. 32 подводных камня ОрепМР при программировании на С++ / А.П. Колосов, Е.А. Рыжков, А.Н. Карпов // RSDN Magazine. -2008. №2. - С.3-17.
16. Колосов, А.П. Применение статического анализа при разработке программ / А.П. Колосов, Е.А. Рыжков // Известия ТулГУ. Технические науки. 2008. - Вып. 3. -С. 185-190.
17. Колосов, А.П. Система автоматического обнаружения ошибок в исходном коде программ при создании 64-битного ПО (Viva64) / А.П. Колосов, Е.А. Рыжков // Сборник тезисов X Всероссийской студенческой олимпиады «Конкурс компьютерных программ». 2008.
18. Костельцов, А. В. Построение интерпретаторов и компиляторов: Использование программ Bison, Вуасс, Zubr / А. В. Костельцов. М.: Наука и техника, 2001. - 224 с.
19. Креншоу, Д. Пишем Компилятор Электронный ресурс. / Д. Креншоу.- Электрон, текстовые дан. 2000. Режим доступа: http://www.kulichki.net/kit/crenshaw/tutorl.html, свободный.
20. Кротов, А.Н. Принципы реализации семантики языка Си++ в системе ЗС++: дис. . канд. техн. наук : 05.13.11 / А.Н. Кротов. М., 2002. -154 с.
21. Лавров, С.С. Программирование. Математические основы, средства, теория / С.С. Лавров. СПб.: БХВ-Петербург, 2002. - 320 с.
22. Льюис, Ф. Теоретические основы проектирования компиляторов / Ф. Льюис, Д. Розенкранц, Р. Стирнз. М.:Мир, 1979. - 654 с.
23. Макконнелл, С. Совершенный код / С. Макконнелл. СПб.: Питер, 2007. -896 с.
24. Пратт, Т. Языки программирования: разработка и реализация / Т. Пратт, М. Зелковиц. СПб.: Питер, 2002. - 688 с.
25. Рейуорд-Смит, В.Дж. Теория формальных языков. Вводный курс / В. Дж. Рейуорд-Смит. -М.: Радио и связь, 1988. 128 с.
26. Роббинс, Д. Отладка \¥тс1ол¥8-приложений / Д. Роббинс. -М.: ДМК Пресс, 2001.- 448 с.
27. Рыжков, Е.А. Применение технологии статического анализа кода в современном процессе разработки программ / Е.А. Рыжков, А.Н.
28. Карпов // Сборник трудов конференции "Software Engineering Conference (Russia) 2007 SEC(R)-2007". - 2007. - C.240-245.
29. Рыжков, E.A. Применение технологии статического анализа кода при разработке параллельных программ / Е.А Рыжков, О.С. Середин // Известия ТулГУ. Технические науки. 2008. - Вып. 3. -С. 191-196.
30. Рыжков, Е.А. Сущность библиотеки анализа кода VivaCore / Е.А. Рыжков, А.Н. Карпов // RSDN Magazine. 2008. - №1. - С.56-63.
31. Самофалов, В.В. Технология отладки программ для машин с массовым параллелизмом / В.В. Самофалов, A.B. Коновалов // Вопросы атомной науки и техники. Сер. Математическое моделирование физических процессов. 1996. - Вып.4. - С.52-56.
32. Себеста, Р. Основные концепции языков программирования / Р. Себеста. М.: Издательский дом «Вильяме», 2001. - 672 с.
33. Серебряков, В.А. Основы конструирования компиляторов / В.А. Серебряков, М.П. Галочкин М.: Едиториал УРСС, 2001. - 224 с.
34. Хантер, Р. Основные концепции компиляторов / Р. Хантер. М.: Издательский дом «Вильяме», 2002. - 256 с.
35. Adiga, H.S. Porting Linux applications to 64-bit systems Электронный ресурс. / H.S. Adiga. Электрон, текстовые дан. - 2006. - Режим доступа: http://www.ibm.com/developerworks/library/l-port64.html, свободный.
36. Artho, С. Applying Static Analysis to Large-scale, Multi-threaded Java Programs Электронный ресурс. / С. Artho, A. Biere. Электрон, текстовые дан. - 2001. — Режим доступа: http://staff.aist.go.ip/c.artho/papers/ArthoBiere-ASWEC2001.pdf, свободный.
37. Bagge, O.S. CodeBoost: A Framework for Transforming С++ Programs Электронный ресурс. / О. S. Bagge. Электрон, текстовые дан. - 2003. - Режим доступа: http://www.codeboost.org/papers/codeboost-thesis-bagge.ps.gz, свободный.
38. Bailey, A. AMD64 and the New Math Электронный ресурс. / A. Bailey. -Электрон, текстовые дан. 2006. - Режим доступа: http://developer.amd.com/documentation/articles/Pages/62720069.aspx, свободный.
39. Bailey, A. Tools and Techniques for Developing 64-Bit Linux Software. Электронный ресурс. / A. Bailey. Электрон, текстовые дан. - 2006. -Режим доступа:http://developer.amd.com/documentation/articles/Pages/91420064Q.aspx, свободный.
40. Binstock, A. Porting to 64-Bit Intel® Architecture Электронный ресурс. / A. Binstock. Электрон, текстовые дан. - 2008. - Режим доступа:http://softwareintelxom/en-us/articles/porting-to-64-bit-intel-architecture/,свободный.
41. Bruner, R. x86-64 Architecture & Software Porting. Электронный ресурс. / R. Bruner. Электрон, текстовые дан. - 2002. - Режим доступа: http://www.amd.com/usen/assets/content type/DownloadableAssets/dwamd Software Porting -RichBrunner.pdf, свободный.
42. Carter, С. C/C++ Compiler Switches for Fast, Portable 64-Bit Code . Электронный ресурс. / С. Carter. Электрон, текстовые дан. - 2005. -Режим доступа:http://developer.amd.eom/documentation/articles/pages/372005120.aspx, свободный.
43. Christopher, C.N. Evaluating Static Analysis Frameworks Электронный ресурс. / C.N. Christopher. Электрон, текстовые дан. - 2006. - Режим доступа: http://www.cs.cmu.edu/~aldrich/courses/654/tools/christopher-analysis-frameworks-06.pdf, свободный.
44. Farrell, J.A. Compiler Basics Электронный ресурс. / J. A. Farrell. -Электрон. текстовые дан. 1995. - Режим доступа: http://www.cs.man.ac.uk/~pii/farrell/compmain.html, свободный.
45. Gatlin, К. Windows Data Alignment on IPF, x86, and x64 Электронный ресурс. / К. S. Gatlin. Электрон, текстовые дан. - 2006. - Режим доступа: http://msdn.microsoft.com/en-us/library/aa290049.aspx, свободный.
46. Ganssle, J. The value proposition unfulfilled Электронный ресурс. / J. Ganssle. - Электрон, текстовые дан. - 2004. - Режим доступа: http://www.embedded.com/columns/breakpoint/47101904? requestid^ 101 94, свободный.
47. Giesen D. Philosophy and practical implementation of static analyzer tools Электронный ресурс. / D. Giesen. Электрон, текстовые дан. - 1998. -Режим доступа: http://www.dse.nlMhelosen/artikelen/static analysis.pdf, свободный.
48. Gimpel Software PC-Lint: 64-bit Test Электронный ресурс. / Gimpel Software. Электрон, текстовые дан. - 2008. - Режим доступа: http://www.gimpel.com, свободный.
49. Gordon, J. Writing 64-bit programs Электронный ресурс. / J. Gordon. -Электрон, текстовые дан. 2006. - Режим доступа:http://www, j or gon. free serve. со .uk/GoasmHelp/64bits .htm, свободный.
50. Graegert, S. 64-bit Data Models Explained Электронный ресурс. / S. Graegert. Электрон, текстовые дан. - 2006. - Режим доступа: http://digitalether.de/index.php?option=com content&task^iew&id^l&It emid^46, свободный.
51. Jones, J. Abstract syntax tree implementation idioms Электронный ресурс. / J. Jones. Электрон, текстовые дан. - 2003. - Режим доступа: http://www.hillside.net/plop/plop2003/Papers/Jones-ImplementingASTs.pdf, свободный.
52. Josey, A. Data Size Neutrality and 64-bit Support Электронный ресурс. / A. Josey. Электрон, текстовые дан. - 1997. - Режим доступа: http://www.unix.org/whitepapers/64bit.html, свободный.
53. Jetley, R. Using static analysis to evaluate software in medical devices Электронный ресурс. / R. Jetley, P. Anderson. Электрон, текстовые дан. - 2008. - Режим доступа:http://www.embedded.com/design/20700Q574, свободный.
54. Mangan, Т. Porting С++ Applications to х64 Электронный ресурс. / Т. Mangan. Электрон, текстовые дан. - 2006. - Режим доступа:http://www.tmurgent.com/WhitePapers/WP Portx64.pdf, свободный.
55. Martin, В. Multiplatform Porting to 64 Bits Электронный ресурс. / В. Martin, A. Rettinger, J. Singh. Электрон, текстовые дан. - 2006. -Режим доступа: http://www.ddi.com/hpc-high-performance-computing/184406427, свободный.
56. Mashey, J.R. 64 bit processors: history and rationale Электронный ресурс. / J.R.Mashey. Электрон, текстовые дан. - 1995. - Режим доступа: http://yarchive.net/comp/64bit.html, свободный.
57. Mashey, J.R. The 64-bit integer type "long long": arguments and history Электронный ресурс. / J.R.Mashey. Электрон, текстовые дан. - 1995. - Режим доступа: http://yarchive.net/comp/longlong.html, свободный.
58. Mashey, J.R. The Long Road to 64 Bits Электронный ресурс. / J.R.Mashey. Электрон, текстовые дан. - 1995. - Режим доступа: http://queue.acm.org/detail.cfm?id=l 165766, свободный.
59. McNaughton, The One-Stop Shop for 64-bit Development Электронный ресурс. / A. McNaughton Электрон, текстовые дан. - 2006. - Режим доступа:http://developer.amd.com/documentation/articles/pages/3242006109.aspx, свободный.
60. Meyers, S. A First Look at С++ Program Analyzer / S. Meyers, M. Klaus // Dr. Dobb's Journal. 1997, Feb. Issue.
61. Microsoft. Migrating 32-bit Managed Code to 64-bit Электронный ресурс. / Microsoft Электрон, текстовые дан. - 2005. - Режим доступа: http://msdn.microsoft.com/en-us/library/ms973190.aspx, свободный.
62. Moonen, L. A Generic Architecture for Data Flow Analysis to Support Reverse Engineering Электронный ресурс. / L. Moonen. Электрон, текстовые дан. - 1997. - Режим доступа: http://homepages.cwi.nl/~leon/papers/dhal97/dhal97.pdf, свободный.
63. Mueller, J.P. 24 Considerations for Moving Your Application to a 64-bit Platform Электронный ресурс. / J.P. Mueller. Электрон, текстовые дан. - 2006. - Режим доступа:http://developer.amd.com/documentation/articles/pages/63 020063 8 .aspx, свободный.
64. Murawski, S. Beyond Windows XP: Get Ready Now for the Upcoming 64Bit Version of Windows Электронный ресурс. / S. Murawsku. -Электрон, текстовые дан. 2006. - Режим доступа: http://msdn.microsoft.com/en-us/magazine/cc30220Q.aspx, свободный.
65. Parasoft C++Test: C++Test User's Guide Электронный ресурс. / Parasoft.- Электрон, текстовые дан. 2008. - Режим доступа: http://www.parasoft.com, свободный.
66. Patrizio, A. How and Why Microsoft Migrated to AMD64: Case Study Электронный ресурс. / A. Patrizio. Электрон, текстовые дан. - 2006. -Режим доступа:http://developer.amd.com/documentation/articles/pages/628200633.aspx, свободный.
67. Pietrek, М. Everything You Need То Know То Start Programming 64-Bit Windows Systems Электронный ресурс. / M. Pietrek. Электрон, текстовые дан. - 2006. - Режим доступа: http://msdn.microsoft.com/en-us/magazine/ссЗ 00794.aspx, свободный.
68. Pistelli, D. Moving to Windows Vista x64 Электронный ресурс. / D. Pistelli. Электрон, текстовые дан. - 2007. - Режим доступа: http://www.codeproiect.com/KB/vista/vista x64.aspx, свободный.
69. Ruiz, J. Don't blow your stack: Static stack analysis for high-integrity systems Электронный ресурс. / J.F. Ruiz. Электрон, текстовые дан. -2008. - Режим доступа: http://www.embedded-computing.com/articles/id/?3270, свободный.
70. Sangoi, S. The 64 bit OS Architecture Электронный ресурс. / S.R. Sangoi. Электрон, текстовые дан. - 2007. - Режим доступа: http://www.codeproject.com/tGB/system/64BitOSAndPortingIssues.aspx, свободный.
71. Shekar, С. Extend your application's reach from 32-bit to 64-bit environments. Электронный ресурс. / С. Shekar. Электрон, текстовые дан. - 2006. - Режим доступа:http://www.s7solutions.com/pdfs/Migrating32bitapplicationto 64bit arti cle3.pdf, свободный.
72. Sokolov, S. Bulletproofing С++ Code Электронный ресурс. / S. Sokolov. Электрон, текстовые дан. - 2007. - Режим доступа: http://www.ddj.com/cpp/196802351, свободный.
73. Tarsy, G. Floating-Point Computing: A Comedy of Errors? Электронный ресурс. / G. Tarsy, N. Toda. — Электрон, текстовые дан. 2004. - Режим доступа: http://developers.sun.com/solaris/articles/fp errors.html, свободный.
74. Terklay, В. 64-Bit Programming with Visual С++? Электронный ресурс. / В. Terklay. Электрон, текстовые дан. - 2009. - Режим доступа: http://blogs.msdn.eom/brunoterkaly/archive/2009/01/12/64-bit-programming-with-visual-c.aspx, свободный.
75. The Open Group. 64-Bit Programming Models: Why LP64? Электронный ресурс. / The Open Group. Электрон, текстовые дан. - 1998. - Режим доступа: http://www.unix.org/version2/whatsnew/lp64wp.html, свободный.
76. Tyrlik, M. Making the transition to 64 bits Электронный ресурс. / M. Tyrlik. Электрон, текстовые дан. - 2004. - Режим доступа: http://www.ibm.com/developerworks/library/pa-intro64.html?ca=dgr-lnxw07To64Bits, свободный.
77. Viva64 Online Help Электронный ресурс. / Viva64. Электрон, текстовые дан. - 2008. - Режим доступа: http://www.viva64.com, свободный.
78. Wienholt, N. Get to Know the VSTS Native C/C++ Code Analyzer Электронный ресурс. / N. Wienholt. Электрон, текстовые дан. - 2006.- Режим доступа:http://www.codeguru.com/columns/kate/article.php/cl 1511/, свободный.
79. Ьиилион ка ан«1.1и:ш кода \ ivHt on
80. Карим ЛнОрги Николш-гшч ¡К! /'ы » кпн ¡имении .1,1 ем ин>Ь*иин ч (Ш')> .и карпов Андреи Нинч. тгнич. /'ы ** А«« ¿Гм/ГНММ Л.Н'КГШ/ф^.МЧ (Ш •)•<& иш
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.