powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разбиение __int64 на слова
25 сообщений из 34, страница 1 из 2
Разбиение __int64 на слова
    #39705115
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни, подскажите, плиз, что будет являться аналогом в C++ Builder XE5 для его штатного __int64 следующих преобразований на Delphi:
xx: Int64;
Int64Rec(xx).Lo
Int64Rec(xx).Hi
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705129
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

тынц.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
xx & 0xFFFFFFFF;
(xx >> 32) & 0xFFFFFFFF;


В отличии от дельфийского хака работает на платформах с любым порядком бит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705137
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Котовасия,

Этот "тынц" не работает. Пишет про невозможность преобразования "long long" в Int64Rec. Ну или приведи пример безошибочного его применения в CPP нотации.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705139
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Спасибо, конечно, а без дополнительных операций совсем никак? Мне в данном месте очень критично.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705147
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F...
Этот "тынц" не работает. Пишет про невозможность преобразования "long long" в Int64Rec. Ну или приведи пример безошибочного его применения в CPP нотации.
Уж лучше ты покажи, как "не работает".
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705148
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FСпасибо, конечно, а без дополнительных операций совсем никак?

Не будет никаких "дополнительных операций". Компилятор распознаёт этот паттерн и
генерирует для него соответствующий ассемблерный код для прямого обращения с
старшему/младшему слову.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705165
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Ладно, оставляю в таком виде, спасибо.
Но пока что портированный на CPP код по производительности в целом отстает от паскаля.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705170
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FНо пока что портированный на CPP код по производительности в целом отстает от паскаля.

Ты его с -O3 собираешь, надеюсь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705174
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Признаться, пока даже не знаю, что это такое. От CPP всерьез и на долго оторвался 20 лет назад. Но меряю пока что навскидку в Debug Configuration и то и другое в одной и той же версии студии. Не думаю, что в конфигурации Release с соотв. оптимизациями относительные результаты принципиально поменяются.))
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705175
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FНе думаю, что в конфигурации Release с соотв. оптимизациями относительные результаты
принципиально поменяются.))

Ну да, максимум на порядок (в десять раз). Хотя для некоторых и это может быть принципиально.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705183
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Так и на Delphi в соотв. конфигурации (с соотв. ключами), ты не поверишь, тоже все разгоняется. Я же про относительные результаты. С оптимизациями, конечно, тоже померяю.
Вы лучше подскажите как ему вот в этом месте строку преобразовать, чтобы не было ошибок:
String message;
throw Exception(message.sprintf("%d %d", x, y));

>> cannot initialize param type 'const wchar_t *' with value type 'const char[5]'
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705186
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://en.cppreference.com/w/cpp/language/string_literal (2)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705190
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А какой из перечисленных модификаторов, вы считаете, нужным в данном контексте?
Дело в том, что я до того уже попробовал (по совету интернеты) L"", на что он дает cannot pass object of non-trivial type 'System::UnicodeString' through variadic method.
Сейчас попробовал по очереди все остальные указанные там модификаторы, все в данном контексте дают ошибку, близкую к первоначальной.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705203
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FДело в том, что я до того уже попробовал (по совету интернеты) L"", на что он дает cannot
pass object of non-trivial type 'System::UnicodeString' through variadic method.

Значит либо ты либо твой компилятор какой-то бред творите. UnicodeString просто так
вылазить не будет там, где "param type 'const wchar_t *'".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705219
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Дык, компилятор не мой, а эмбаркадеровский. А у него структура ходовых классов с загибонами, портированная, очевидно, местами из Delphi. Ладно, с вашего позволения, откладываем до завтра.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705248
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FDimitry Sibiryakov,

Признаться, пока даже не знаю, что это такое. От CPP всерьез и на долго оторвался 20 лет назад. Но меряю пока что навскидку в Debug Configuration и то и другое в одной и той же версии студии. Не думаю, что в конфигурации Release с соотв. оптимизациями относительные результаты принципиально поменяются.))не думай. делай пока что говорят.
хотя для борланда наверное только -О2 есть и выигрыш будет небольшим

По поводу строки есть спец.метод для таких
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.Exception.CreateFmt
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705355
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FDimitry Sibiryakov,

А какой из перечисленных модификаторов, вы считаете, нужным в данном контексте?
Дело в том, что я до того уже попробовал (по совету интернеты) L"", на что он дает cannot pass object of non-trivial type 'System::UnicodeString' through variadic method.
Ну так это уже про следующий параметр. Что там у вас в x, y ?
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705356
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FDimitry Sibiryakov,

А какой из перечисленных модификаторов, вы считаете, нужным в данном контексте?
Дело в том, что я до того уже попробовал (по совету интернеты) L"", на что он дает cannot pass object of non-trivial type 'System::UnicodeString' through variadic method.
Ну так это уже про следующий параметр. Что там у вас в x, y ?
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705448
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone,

Нет, не про следующий. Следующими шли в данном случае целые числа. Впрочем, формаиирование строк в исключения я всеже как-то затолкал. С этим все, спасибо.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705455
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglне думай. делай пока что говорят.
хотя для борланда наверное только -О2 есть и выигрыш будет небольшим

По поводу строки есть спец.метод для таких
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.Exception.CreateFmt

1) Мне надо сначала худо-бедно плртировать, чтобы было что сравнительно измерять. Потом все перемеряю, конечно, под нагрузкой, в т.ч. и со всеми включенными оптимизациями.

2) Ха-ха, да это же дельфийский метод дельфийского объекта. Как раз его я и пытаюсь заменить на что-то более натуральное сишное. Впрочем, именно эта проблема уже разрешилась, спасибо.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705459
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
union не рекомендуют в С++ использовать, но пока не запрещен можно с его помощью

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct Int64Rec {
	union {
		uint64_t val;
		struct { uint32_t Lo, Hi; };
	};
};

int main() {
	Int64Rec x;
	x.val = 12345;
	printf("hi=%d lo=%d\n", x.Hi, x.Lo);
}
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705466
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни, подскажите, плиз, еще по вот такой ошибке:
на
void *xx = MapViewOfFile(...);
компилятор выдает: no matching function for call to 'MapViewOfFile'
Вызов производится в обычном виртуальном методе, не конструкторе.
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705471
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще через смену типа указателя
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
uint32_t Int64Hi(uint64_t& value) {
	return *(((uint32_t*)&value)+1);
}

uint32_t Int64Lo(uint64_t& value) {
	return *(((uint32_t*)&value));
}
...
Рейтинг: 0 / 0
Разбиение __int64 на слова
    #39705474
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Этот вопрос уже решился, спасибо. К тому же в педлагаемом варианте лишняя переменная лишнее присвоение, тогда как в дельфи в аналогичном способе достаточно было лишь приведения типов.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Разбиение __int64 на слова
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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