Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Всем доброго вечера, работают ли инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} (по идее позволяющие выйти за пределы 2Гб в x32 приложениях) с FastMM5 и как это проверить? Попробовал на паре проектов но непонятно есть эффект или нет (например в проекте в котором есть Out of Memory проблемма осталась) . Как правильно количественно определить эффект от этих инструкций? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 20:41 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotun, Сказать версию Delphi прежде всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 21:40 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotun, Проверить очень легко - напишите тестовый цикл Код: pascal 1. 2. если в ходе выполнения программа не упадёт, значит опция работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 21:47 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
DarkMaster hlopotun, Сказать версию Delphi прежде всего. 10.4.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 21:58 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
zedxxx hlopotun, Проверить очень легко - напишите тестовый цикл Код: pascal 1. 2. если в ходе выполнения программа не упадёт, значит опция работает. да, тест прошел успешно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 22:01 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
какие проблемы потенциально может вызвать использование этой опции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 22:05 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotun, Может вызвать AV, если с указателями работаете как с интами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2021, 22:19 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
zedxxx hlopotun, Может вызвать AV, если с указателями работаете как с интами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2021, 21:56 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, от огорчения... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2021, 22:24 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Приведение беззнакового типа (Pointer), к знаковому (Integer) чревато переполнением последнего. И если затем выполнить некоторый инкремент/декремент этого числа и обратное приведение, можете получить указатель, который будет указывать абы куда. Безопасный тип для приведения указателей в число и обратно - NativeUInt . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2021, 23:22 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
zedxxx к знаковому (Integer) чревато переполнением последнего. zedxxx И если затем выполнить некоторый инкремент/декремент этого числа и обратное приведение, можете получить указатель, который будет указывать абы куда. zedxxx Безопасный тип для приведения указателей в число и обратно - NativeUInt . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2021, 00:00 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
zedxxx Приведение беззнакового типа (Pointer), к знаковому (Integer) чревато переполнением последнего. Это может доставить проблемы только тогда, когда включён контроль переполнения ({$O+} или как его там). Но я уже лет тридцать как не видел его включённым. zedxxx И если затем выполнить некоторый инкремент/декремент этого числа и обратное приведение, можете получить указатель, который будет указывать абы куда. RTFM Дополнительный код . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2021, 01:07 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
zedxxx _Vasilisk_, Приведение беззнакового типа (Pointer), к знаковому (Integer) чревато переполнением последнего. И если затем выполнить некоторый инкремент/декремент этого числа и обратное приведение, можете получить указатель, который будет указывать абы куда. Пример такого можете привести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2021, 03:27 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Проблема в арифметике указателей, действительно, есть. Но она не в области знаков +- типа, к которому приводим, и даже не в самом приведении типа, как таковом. Проблема вылете значащих битов за разрядную сетку. Если биты улетели (в результате приведения или операций), то это может привести к ошибке в вычислениях. Позвольте продемонстрировать оба случая на примерах. Пример 1. Приводим адрес к менее широкому целочисленному типу, например, к байту, а потом приводим полученный результат снова к адресу. Совершенно очевидно, что указатель будет испорчен. Пример 2. Похожая ситуация может возникать при адресных вычислениях в алгоритмах поиска, сортировок и т.п. Пусть у нас 32-битные адреса. Пусть у нас есть массив 256 байтов по адресу a0=$FFFF0000. Последний байт этого массива лежит по адресу a2=$FFFF00FF. Очевидно, что "средний" байт находится по адресу a1=$FFFF007F. Однако, адрес "среднего" байта нельзя искать по формуле a1:=(a0+a2) shr 1, т.к. при сложении будет потерян старший бит результата. Правильно так: a1:=a0+(a2-a0) shr 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2021, 10:04 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Важное уточнение: {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} позволяет получить доступ к 4Gb памяти для 32-х битных приложений только в 64 битных OS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2021, 17:59 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
zedxxx hlopotun, Может вызвать AV, если с указателями работаете как с интами. Примерно так?: Код: pascal 1. 2. 3. 4. 5. 6. 7. или так: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 09:37 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
тут интересно пишут на эту тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 09:57 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Lisichkin Важное уточнение: {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} позволяет получить доступ к 4Gb памяти для 32-х битных приложений только в 64 битных OS. т.е. надо делать так? Код: pascal 1. 2. 3. 4. 5. или на 32битной ОС $SETPEFLAGS просто не будет работать и к ошибке не приведёт? (неначем проверить, нет 32битной ОС). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 11:21 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
нет, так наверное нельзя. WIN64 это тупо под какую платформу компилируем. Поэтому {$IFDEF WIN64} тут тупо не имеет смысла если компилим под x32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 11:30 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 12:29 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, А смысл, если ему нужно флаг при линковке поставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 13:04 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Мимопроходящий, А смысл, если ему нужно флаг при линковке поставить да, тут надо как то по другому выкрутиться. Если вообще надо выкручиваться (т.е. если {$SETPEFLAGS $20} при запуске на х32 вызывает ошибку. А вызывает она ошибку или нет непонятно). У когонибуть есть XP? Проверьте, есть ошибка при использовании FastMM5 и {$SETPEFLAGS $20} или нет. То что 3Гб выделяться не будет это понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 14:51 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
19.07.2021 14:51, hlopotun пишет: > У когонибуть есть XP? ХР тоже бывает х64 Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 15:00 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
кстати, если в проекте есть модуль который компилируется в dll ешё в 5й версии Delphi (генератор отчётов привязанным к старой версии delphi/без исходников) то про FastMM5 и {$SETPEFLAGS $20} скорее всего можно забыть или его можно заставить работать со своим менеджером памяти? наверное вопрос разделения памяти между модулями стооит выделить в отдельную тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 15:45 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
У DLL свой собственный RTL и, соответстенно, менеджер памяти. И вообще ты давно уже перекомпилировал бы всё в 64 бита если бы не тратил время на форум. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 16:10 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov У DLL свой собственный RTL и, соответстенно, менеджер памяти. И вообще ты давно уже перекомпилировал бы всё в 64 бита если бы не тратил время на форум. Сотни модулей, и dll и com итп в том числе тот что только в D5 компилируется. Плюс в куче модулей integer (pointer (self)) а потом обратно в pointer. Инструкция {$O+} тоже встречается минимум в десятке модулей, проверил сегодня. Если бы всё было так просто. Я уже писал что сей монстр ваяли более 25 лет и не один программист. По началу ваял шеф и хотел сделать модульную структуру, отсюда куча dll и ocx. Плюс привязка к парадоксу и его dllкам. Например куча данных из dll читаются их парадокса или firebird через свой велосипед с общим интерфейсом и далее передаются в программу в виде dom/xml и потом обратно через свой велосипед засовываются опять же в самописные dataset .... Всё хоть и оптимизированно но намного медленнее чем могло бы быть если бы работали через тот же FireDac напрямую. Сейчас перечислил, аж сам приуныл. Короче старый проект со всеми вытекающими. Хоть одно хорошо, куча клиентов и спрыгнуть им особо некуда да и если бы было куда вряд-ли было бы возможно перенести все данные. Поэтому фраза "уже давно перекомпилил бы на х64 тут не подходит". Если бы было так просто уже перекомпилили бы. Да и кстати, как не смешно, есть ещё динозавры которые на XP сидят, но их можно по идее "убедить" купить что поновее. такие дела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 17:16 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
и это просвещенная Эуропа... дикари! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 17:20 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotunЕсли бы всё было так просто. Я уже писал что сей монстр ваяли более 25 лет и не один программист. Да зачем тебе монстр если надо всего один модуль импорта? Скопируй его и нещадно откусывай лишнее. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 17:22 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov hlopotunЕсли бы всё было так просто. Я уже писал что сей монстр ваяли более 25 лет и не один программист. Да зачем тебе монстр если надо всего один модуль импорта? Скопируй его и нещадно откусывай лишнее. в этом модуле как раз половина этого "добра" и задействована. Тут вердикт только один походу. Переписать импорт под firebird + firedac, выкинуть парадокс и прочую муть в виде dll и ocx. Максимум пара недель работы (а может и за неделю уложимся). Почти столь ко же сколько ушло на исследование проблеммы. Если проблемма где и есть то только в понимании бизнес логики штамма артиклей и datanorm формата (тут тоже не всё просто), но тут думаю разберёмся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 17:38 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotun Максимум пара недель работы (а может и за неделю уложимся). Оптимист. Это без перерывов на сон и обед? Бери месяц хотя-бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 18:19 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotun Инструкция {$O+} тоже встречается минимум в десятке модулей, проверил сегодня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2021, 19:46 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ hlopotun Инструкция {$O+} тоже встречается минимум в десятке модулей, проверил сегодня. а как контроль переполнения влияет в данном случае? С указателями и битом под минус понятно. С с переполнением не совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2021, 09:14 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
тут человек от абракадабры интересные советы/мысли даёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2021, 12:44 |
|
||
|
Инструкции {$SETPEFLAGS $20} или {$SETPEFLAGS IMAGE_FILE_LARGE_ADDRESS_AWARE} и FastMM5
|
|||
|---|---|---|---|
|
#18+
hlopotun а как контроль переполнения влияет в данном случае? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. При включенном контроле переполнения на выделенной строке будет исключение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2021, 12:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2037170]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 203ms |

| 0 / 0 |
