powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 64-я разрядная UDF
20 сообщений из 20, страница 1 из 1
64-я разрядная UDF
    #39567199
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искал в гугле про перевод UDF с 32 на 64 бита. Путного ничего не нашел. Поэтому вопросы форумчанам:
1. Какие у вас были проблемы при перекомпиляции dll на 64 бита?
2. Как вы тестировали 64-битную dll?
3. Сейчас декларация ib_util_malloc выглядит следующим образом:
Код: pascal
1.
function ib_util_malloc(Size: Integer): Pointer; cdecl; external 'ib_util.dll';


В 64-битной версии параметр Size остался прежним или стал 64-битным?
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567268
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

1. Обход глюков компилятора. В особенности - этого
http://www.sql.ru/forum/1263501/arifmetika-v-fpc-cast-integer-to-int64
https://bugs.freepascal.org/view.php?id=32046

2. На глаз + тесткейсы;
3. Остался прежним. sizeof(int)=4 на 64бит.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567281
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock3. Остался прежним. sizeof(int)=4 на 64бит.Ничего не путаешь? На x86_64, тип int - 64 бита (8 октетов).
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567282
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxИскал в гугле про перевод UDF с 32 на 64 бита. Путного ничего не нашел. Поэтому вопросы форумчанам:
1. Какие у вас были проблемы при перекомпиляции dll на 64 бита?
2. Как вы тестировали 64-битную dll?
3. Сейчас декларация ib_util_malloc выглядит следующим образом:
Код: pascal
1.
function ib_util_malloc(Size: Integer): Pointer; cdecl; external 'ib_util.dll';


В 64-битной версии параметр Size остался прежним или стал 64-битным?Собирая на GCC (MSYS2) одни и те же исходники UDF под 32 и 64, никаких проблем, особо, не наблюдал. При написании исходников надо лишь учесть, что int, указатели и, естественно, size_t - 64 битные, а размерность int больше не равна размерности long.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567297
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,
судя по некоторым признакам, речь идёт о компиляторе с Паскаля. В котором умудрились тип Integer оставить 32 битным.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567330
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДВ котором умудрились тип Integer оставить 32 битным.

Ты не поверишь, но в С int тоже 32 бита. Это с long int возможны варианты.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567360
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovчччДВ котором умудрились тип Integer оставить 32 битным.

Ты не поверишь, но в С int тоже 32 бита. Это с long int возможны варианты.
С точностью до "наоборот", если речь идет о нативном x86_64 (где разрядность int, а также указателей и size_t, всегда соответствует разрядности платформы), а не о Cygwin.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567372
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devС точностью до "наоборот", если речь идет о нативном x86_64
Парень, я собираю свою софтину под четыре платформы обоих разрядностей. Без тесткейса не
поверю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567383
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devYuRock3. Остался прежним. sizeof(int)=4 на 64бит.Ничего не путаешь? На x86_64, тип int - 64 бита (8 октетов).Я - нет. Это ты путаешь. Я уже своё отпутал.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567384
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovчччДВ котором умудрились тип Integer оставить 32 битным.

Ты не поверишь, но в С int тоже 32 бита. Это с long int возможны варианты.В описании вроде просто long, значит 4 байта.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567413
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockВ описании вроде просто long, значит 4 байта.

Да нет, это как раз тот long с которым есть варианты. На каких-то платформах он 32 бита, а
на каких-то 64.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567425
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПарень, я собираю свою софтину под четыре платформы обоих разрядностей. Без тесткейса не
поверю.Мда... Пардон муа!
Меня заклинило на typedef unsigned int size_t
Видимо, при переходе с 16 на 32. Не знаю, почему в память врезалось, что int на x64 имеет такую же разрядность. Как-будто об этом даже где-то читал.
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567429
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockDimitry Sibiryakovпропущено...

Ты не поверишь, но в С int тоже 32 бита. Это с long int возможны варианты.В описании вроде просто long, значит 4 байта.Из "_mingw.h":
Код: plaintext
1.
2.
3.
4.
5.
#ifndef __LP64__	/* 32 bit target, 64 bit Mingw target */
#  define __LONG32 long
#else			/* 64 bit Cygwin target */
#  define __LONG32 int
#endif
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567438
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа нет, это как раз тот long с которым есть варианты. На каких-то платформах он 32 бита, а
на каких-то 64.Нашел то, о чем регулярно забываю:
64-bit data models
Data model short (integer) int long (integer) long long pointers, size_t Sample operating systemsLLP64, IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) using Visual C++; and MinGWLP64, I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g., Solaris, Linux, BSD, macOS. Windows when using Cygwin; z/OSILP64 16 64 64 64 64 HAL Computer Systems port of Solaris to the SPARC64SILP64 64 64 64 64 64 Classic UNICOS[41] (versus UNICOS/mp, etc.)
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567439
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНичего не путаешь? На x86_64, тип int - 64 бита (8 октетов).Я - нет. Это ты путаешь. Я уже своё отпутал.[/quot]Да, это я путаю. :)
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567440
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567474
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, вопрос по ib_util_malloc был не в части, сколько бит у Integer - 32 или 64, а размерность этого параметра в этой dll у 64-х битного Firebird - 4 байта или 8. Если 8, то к чему приведет передача туда 4 байт - к спонтанным сбоям в работе сервера или это сразу отразится на нем?
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567504
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax, размерность long - 32 бита.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#ifndef _IB_UTIL_H
#define _IB_UTIL_H

#ifdef __cplusplus
extern "C" {
#endif

extern void *ib_util_malloc(long);

#ifdef __cplusplus
}	/* extern "C" */
#endif

#endif /* _IB_UTIL_H *
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567560
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devCyberMax, размерность long - 32 бита
на винде 32, на линуксе 64
...
Рейтинг: 0 / 0
64-я разрядная UDF
    #39567562
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr, верно! Я решил, раз он спрашивает про dll, то имеет в виду Windows.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 64-я разрядная UDF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]