Здавалка
Главная | Обратная связь

Перенос приложений на AMD64



 

Одним из назначений языков высокого уровня является по возможности сократить привязку программного кода к архитектуре и обеспечить максимально возможную переносимость между аппаратными платформами. Например, правильно написанные программы на языке Си++ теоретически не зависят от аппаратной платформы. И для компиляции существующих 32-битный приложений под платформу AMD64 в идеале достаточно просто сменить компилятор и просто перекомпилировать программу. Но на практике дела обстоят более сложно.

До сих пор существует программное обеспечение, использующий ассемблерный код для 32-битных процессоров. Многие программы, написанные на языках высокого уровня, содержат ассемблерные вставки. Поэтому просто перекомпилировать большой проект часто бывает невозможно. Решение проблемы понятно. Во-первых, можно отказаться от переноса приложения на новую платформу. Это может быть весьма разумным решением, так как, например операционные системы семейства Windows обеспечивают хорошую обратную совместимость, благодаря технологии Wow64. Второй вариант - переписать программный код. Причем разумным выглядит его переписывание с использованием языков высокого уровня. Кстати заметим, что компилятор Visual C++ более не поддерживает компиляцию ассемблерных вставок в 64-битном режиме компиляции.

Наличие ассемблерного программного кода не единственное препятствие при освоении 64-битных систем. При переносе программ на 64-битные системы возникают разнообразные ошибки, связанные с изменением модели данных (размерности типов). Причем ряд ошибок проявляет себя только при использовании большого объема памяти, который был не доступен на 32-битных системах. Подобные ошибки хорошо описаны в статье "20 ловушек переноса Си++ - кода на 64-битную платформу".

Сказанное выше относится больше к приложениям, разработанным на языке Си/Си++. С управляемым кодом (C#) дела обстоят лучше, хотя и здесь можно ожидать мелких неполадок. К сожалению, большие программные комплексы часто строятся с использованием библиотек, созданных на языках Си/Си++. И поэтому в случае крупного проекта, написанного на C#, скорее всего найдутся модули или библиотеки на языке Си/Си++, которые могут быть небезопасны и содержать уязвимости.

Для тестирования и проверки программного кода, переносимого на 64-битную платформу можно использовать различные специальные методики и инструменты. Например, хорошие результаты дает использование статических анализаторов, таких как Viva64 (для Windows систем) и PC-Lint (для Unix систем). Более подробно с этим инструментарием можно познакомиться в статье "Сравнение диагностических возможностей анализаторов при проверке 64-битного кода".

Заключение

 

Предложенная компанией AMD архитектура AMD64 несомненно оказалась востребованной на рынке. Достоинство AMD64 в том, что она позволяет плавно перейти на 64-битные программы, при этом не теряя совместимости со старыми 32-битными приложениями. Однако ничего революционного в AMD64 нет.

Миграция 32-битных программ на AMD64, как показывают эксперименты, позволяет, во-первых, решать задачи, существенно более требовательные к памяти, а, во-вторых, получить порядка 10% прироста производительности "просто так", без изменения кода, за счет оптимизации компилятором приложения под новую архитектуру.

Можно сделать вывод, что архитектура AMD64 намного лет отодвинула проблему ограничения доступного объема оперативной памяти, но не решила проблем роста производительности современных персональных машин. Будущее остается за многоядерными и многопроцессорными системами.

7 Использованный материал:

1) http://support.amd.com/us/Embedded_TechDocs/24592.pdf

2) http://www.viva64.com/ru/a/0029/

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.