Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 64-я разрядная UDF / 20 сообщений из 20, страница 1 из 1
10.12.2017, 09:05
    #39567199
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
Искал в гугле про перевод 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
10.12.2017, 14:31
    #39567268
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
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
10.12.2017, 15:28
    #39567281
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
YuRock3. Остался прежним. sizeof(int)=4 на 64бит.Ничего не путаешь? На x86_64, тип int - 64 бита (8 октетов).
...
Рейтинг: 0 / 0
10.12.2017, 15:31
    #39567282
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
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
10.12.2017, 16:37
    #39567297
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
rdb_dev,
судя по некоторым признакам, речь идёт о компиляторе с Паскаля. В котором умудрились тип Integer оставить 32 битным.
...
Рейтинг: 0 / 0
10.12.2017, 18:01
    #39567330
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
чччДВ котором умудрились тип Integer оставить 32 битным.

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

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

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

Да нет, это как раз тот long с которым есть варианты. На каких-то платформах он 32 бита, а
на каких-то 64.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.12.2017, 23:14
    #39567425
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
Dimitry SibiryakovПарень, я собираю свою софтину под четыре платформы обоих разрядностей. Без тесткейса не
поверю.Мда... Пардон муа!
Меня заклинило на typedef unsigned int size_t
Видимо, при переходе с 16 на 32. Не знаю, почему в память врезалось, что int на x64 имеет такую же разрядность. Как-будто об этом даже где-то читал.
...
Рейтинг: 0 / 0
10.12.2017, 23:27
    #39567429
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
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
11.12.2017, 00:03
    #39567438
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
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
11.12.2017, 00:05
    #39567439
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
YuRockНичего не путаешь? На x86_64, тип int - 64 бита (8 октетов).Я - нет. Это ты путаешь. Я уже своё отпутал.[/quot]Да, это я путаю. :)
...
Рейтинг: 0 / 0
11.12.2017, 00:07
    #39567440
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
...
Рейтинг: 0 / 0
11.12.2017, 08:13
    #39567474
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
Коллеги, вопрос по ib_util_malloc был не в части, сколько бит у Integer - 32 или 64, а размерность этого параметра в этой dll у 64-х битного Firebird - 4 байта или 8. Если 8, то к чему приведет передача туда 4 байт - к спонтанным сбоям в работе сервера или это сразу отразится на нем?
...
Рейтинг: 0 / 0
11.12.2017, 09:39
    #39567504
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
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
11.12.2017, 11:24
    #39567560
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
rdb_devCyberMax, размерность long - 32 бита
на винде 32, на линуксе 64
...
Рейтинг: 0 / 0
11.12.2017, 11:26
    #39567562
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
64-я разрядная UDF
dimitr, верно! Я решил, раз он спрашивает про dll, то имеет в виду Windows.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 64-я разрядная UDF / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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