Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2015, 23:43   #1
Turbine
Пользователь
 
Регистрация: 13.08.2008
Сообщений: 76
Сообщение Особенности разработки 64 битных приложений

Здравствуйте!
Кто располагает информацией по основным правилам и особенностям написания 64-битных приложений, пожалуйста, поделитесь информацией.
Интересует все от ключей компиляции до примеров оптимизированного кода.
Turbine вне форума Ответить с цитированием
Старый 24.03.2015, 23:53   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ключи и прочее - в документации

Ничем особо не отличается, разве что использование 64-битных регистров в собственном ассемблерном коде, примеры можете глянуть в том же system.pas.
За вас уже все сделано в RTL, VCL. Были бы вы разработчиком KOL&MCK тогда да, огребли бы гемороя))
Человек_Борща вне форума Ответить с цитированием
Старый 25.03.2015, 08:15   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Turbine Посмотреть сообщение
Здравствуйте!
Кто располагает информацией по основным правилам и особенностям написания 64-битных приложений, пожалуйста, поделитесь информацией.
Интересует все от ключей компиляции до примеров оптимизированного кода.
Особенности 64-битных приложений следующие:
1. Зачастую не запускаются под 32-битной ОС.
2. За один такт процессора выполняется 64 строки кода вместо 32(Прим. Кол-во тактов в сек ~ Частота процессора).
3. 64 - битные приложения получают гораздо больше RAM в пользование.
4. Должны быть скомпилированны под 64-битным компилятором или ОС.
5. Весят чуть больше.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 25.03.2015, 11:41   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Человек_Борща всё правильно сказал. С точки зрения работы приложения на уровне процессора заморачиваться не стоит, всё уже давно сделали за/для вас. Проблемы могут возникнуть при работе с типизированными файлами. Если у вас имеются и x86 и x64 версии вашей программы, то при чтении/записи в файл нужно четко контролировать размер блоков. Ибо один и тот же тип данных в x86 и в x64 может иметь разный размер. Как то например:
Записали в x64-версии число типа NativeInt, прочитали под x86 -> Потеряли данные
Записали в x86, прочитали под x64 -> Получили ошибку (типа файл кончился)

Вот такой тип
Код:
  TMyRec = record
    FOwner: Pointer;
    F1: Byte;
    F2: Byte;
    F3: Byte;
    F4: Byte;
  end;
в стрим одним чёхом не запишишь. SizeOf(TMyRec) для разных платформ будет разным. Придется записывать по частям.
Еще интереснее штука с Extended (см. справку).
Короче нужно использовать платформо независимые типы данных.

В реальных задачах прикладного уровня это не заметишь. Все основные простые типы и так платформонезависимые.
Sibedir вне форума Ответить с цитированием
Старый 25.03.2015, 11:51   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Особенности 64-битных приложений следующие:
1. Зачастую не запускаются под 32-битной ОС.
2. За один такт процессора выполняется 64 строки кода вместо 32(Прим. Кол-во тактов в сек ~ Частота процессора).
3. 64 - битные приложения получают гораздо больше RAM в пользование.
4. Должны быть скомпилированны под 64-битным компилятором или ОС.
5. Весят чуть больше.
1)64-битное приложение в принципе не запускается под 32-битной ОС.
флаги в PE разные.
2)что за бред? строки вообще к скорости отношения не имеют, я могу код в одну строку записать, он что быстрее станет?
3)почти верно, 32-битное приложение на самом деле тоже может много памяти иметь, но неудобно.
4)абсолютно верно.
5)нет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.03.2015, 12:00   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
3. 64 - битные приложения получают гораздо больше RAM в пользование.
Бред. С чего бы? Можно поставить больше RAM в ОС. Распределением ОЗУ между процессами занимается менеджер памяти ОС.

Цитата:
4. Должны быть скомпилированны под 64-битным компилятором или ОС.
Верно, нужен процессор. Но не факт.

Цитата:
5. Весят чуть больше.
Бред. Зависит от компилятора.
FASM внезапно генерирует одинаковое кол-во байт для 32й и 64й программы.

Цитата:
2. За один такт процессора выполняется 64 строки кода вместо 32(Прим. Кол-во тактов в сек ~ Частота процессора).
Замерял строки и такты процессора? С вами все в порядке?
Человек_Борща вне форума Ответить с цитированием
Старый 25.03.2015, 16:13   #7
Turbine
Пользователь
 
Регистрация: 13.08.2008
Сообщений: 76
По умолчанию

Добрго дня!
С типизированными файлами понятно. Обмен между 32/64 версиями побайтным преобразованием.
Отказ от магических констант, указатели в в 64 бита, отдельные процедуры работы с битовыми операциями и т.д.

Хэлпы не изобилуют информацией. Немного про размер данных. В Delphi вроде не так запущено как в С. Кроссплатформенность не учитываем, потому что там и short в ряде случаев 64 битный.

Какие преимущества 64 бит кроме математических вычислений: более быстрые операции сравнения, строковые процедуры, работа с массивами, потоками?
Интересуют как раз принципы написания, благодаря которым 64-битное приложение оказывается эффективнее по скорости выполнения. По идее, раз обрабатывается в два раза больше данных за такт (за вычетом пропускной способности шины) хоть в 25 процентов скорости прирост должен быть. Необходимость в огромных объемах памяти отсутствует. Важна скорость. Примеров, чтобы бенчмаркнуть одно и то же приложение под 32 и под 64 не встречал даже в чужеземных интернетах.

Последний раз редактировалось Turbine; 25.03.2015 в 17:05.
Turbine вне форума Ответить с цитированием
Старый 25.03.2015, 17:49   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Turbine, не. Тут же нужно конкретную задачу смотреть. По-моему каких-то универсальных принципов не существует. Опять же на практике прирост именно в скорости в любом случае будет не очень большой. Это ведь как с многоядерностью.
Ну вот пара задач, которые, на мой взгляд, можно не плохо оптимизировать при x64:
- архиваторы
- графические фильтры
Вообще, математика с возможностью запараллеливать расчеты векторов.

Последний раз редактировалось Sibedir; 25.03.2015 в 18:13.
Sibedir вне форума Ответить с цитированием
Старый 25.03.2015, 17:59   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
По идее, раз обрабатывается в два раза больше данных за такт
да, это по идее новые регистры в 64-м асме.

Для delphi особо ничего нового, вот типы и их размеры под 32 и 64.

Будите писать что-то на встроенном assembler, будет иметь смысл 32 или 64. в system.pas есть примеры. В противном случае не парьтесь, за вас все написано.
Человек_Борща вне форума Ответить с цитированием
Старый 25.03.2015, 18:03   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Turbine, Криса Касперского читал???
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собираем команду для разработки игрушек,приложений DenDan Фриланс 12 16.02.2015 16:41
Создание игры::особенности коллективной разработки флеш приложений АТИКОН Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 21.08.2011 19:51
Особенности окон Java-приложений Gonzo Win Api 3 18.08.2011 17:35