Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: 32-bit -> 64-bit  (Прочитано 5600 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ezus
Опытный

il
Offline Offline

« : 06-02-2014 15:40 » 

Добрый день.
Проблема: есть старая С++ программа на VC++6.0.
Эта программа исполняется на 8-ядерной машине с 72 GM памяти.
Существует ли какая-либо возможность использовать всю эту память за счет косметических изменений в программе?
Если есть, то какая?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 07-02-2014 02:55 » 

ezus, нет. Нужна сборка под x64. А перевод кода на x64 - это дело, конечно, косметическое, но очень муторное - каждую строчку, каждый int проверить. Ну и не уверен, что в VS 6.0 были x64 компиляторы, т.е. ещё и миграция в более новую студию.
« Последнее редактирование: 07-02-2014 05:45 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
darkelf
Молодой специалист

no
Offline Offline

« Ответ #2 : 07-02-2014 06:44 » 

ezus, поищите по форуму - тут было обсуждение про особенности портирования с 32-х на 64-ре бита, например здесь:
https://forum.shelek.ru/index.php/topic,23396.0.html.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 07-02-2014 07:05 » 

Там ещё не упомянут потенциальный косяк с выравниванием размера структур. В результате которого запросто может получиться, что битовый формат структуры на x86 и x64 окажется несовместимым.

Один из грубых способов - сделать повсюду замену int на __int32. Но для указателей, числовых констант в коде, арифметических выражений с битовыми операциями и "игрой" на переполнение, структур и массивов с арифметикой указателей и безусловным приведением типов эта мера не поможет.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
ezus
Опытный

il
Offline Offline

« Ответ #4 : 09-02-2014 07:54 » 

Спасибо.
Вы подтвердили мои сомнения.
В список от Dimka можно добавить еще адресную арифметику, особенно, если в программе встречаются куски старинного С-кода времен начала 80-х.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines