forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.HUSKY

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 08.06.2017, 13:52
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию сборка экзотическими компиляторами

Alexey Vissarionov написал(а) к All в Jun 17 12:24:44 по местному времени:

Доброго времени суток, All!

Столкнулся с необходимостью использования в ряде мест штатной для gcc конструкции "_attribute__((__packed__))" для полного отключения любого выравнивания (x8664, ага). А как это делается в других компиляторах - в частности, при сборке под форточки и яблочки?

Хотелось бы что-то наподобие

#ifdef _GNUC_
#define PACKED _attribute__((__packed_))
#endif

чтобы в дальнейшем писать

typedef struct
{
uint8t somebyte;
uint16t some_twobyte;
} PACKED something_t;

и, в данном примере, получать трехбайтовую (а не четырех-, и уж тем более не шестнадцатибайтовую конструкцию).


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Какая я вам мама? Я вам в отцы гожусь
--- /bin/vi
Ответить с цитированием
  #2  
Старый 08.06.2017, 17:10
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию Re: сборка экзотическими компиляторами

Vitaliy Aksyonov написал(а) к Alexey Vissarionov в Jun 17 16:00:36 по местному времени:

Привет, Alexey!

08 июн 17 12:24, Alexey Vissarionov -> All:

AV> Столкнулся с необходимостью использования в ряде мест штатной для gcc
AV> конструкции "_attribute__((__packed_))" для полного отключения
AV> любого выравнивания (x86_64, ага). А как это делается в других
AV> компиляторах - в частности, при сборке под форточки и яблочки?

Эмммм. А зачем? Какая в этом реальная необходимость?

С наилучшими пожеланиями, Vitaliy.

... 10.0 times 0.10 is hardly ever 1.00.
--- GoldED+/LNX 1.1.5-b20160201
Ответить с цитированием
  #3  
Старый 08.06.2017, 17:10
Georgy Meshkov
Guest
 
Сообщений: n/a
По умолчанию Re: сборка экзотическими компиляторами

Georgy Meshkov написал(а) к Alexey Vissarionov в Jun 17 16:00:50 по местному времени:

Привет, Alexey!

Ответ на сообщение Alexey Vissarionov (2:5020/545) к All, написанное 08 июн 17 в 12:24:

AV> Столкнулся с необходимостью использования в ряде мест штатной для gcc
AV> конструкции "_attribute__((__packed_))" для полного отключения
AV> любого выравнивания (x86_64, ага). А как это делается в других
AV> компиляторах - в частности, при сборке под форточки и яблочки?
Под MSCV есть аналог declspec(align(#)). Для отключения выравнивания можно поставить 1.
Также в C++11 появилось кроссплатформенное ключевое слово alignas, но стоит учесть, что оно применяется не к структуре целиком, а к каждому ее члену, т.е. надо писать что-то вроде
typedef struct
{
uint8t somebyte;
alignas(1) uint16t some_twobyte;
} something_t;
При этом если хочется, чтобы массив something_t был тоже выровнен на 1 байт, надо и ей самой alignas проставить.

Примеры кода можно погуглить тут:
https://stackoverflow.com/questions/...m-alignx-macro

С уважением - Georgy
--- GoldED+/W32-MINGW 1.1.5-b20120519 (Kubik 3.0)
Ответить с цитированием
  #4  
Старый 09.06.2017, 03:00
Nickita A Startcev
Guest
 
Сообщений: n/a
По умолчанию сборка экчесическими компиляторами

Nickita A Startcev написал(а) к Vitaliy Aksyonov в Jun 17 00:34:36 по местному времени:

Привет, Vitaliy !


08 Jun 17 , 16:00 Vitaliy Aksyonov писал к Alexey Vissarionov:

AV>> Столкнулся с необходимостью использования в ряде мест штатной для
AV>> gcc конструкции "_attribute__((__packed_))" для полного
AV>> отключения любого выравнивания (x86_64, ага). А как это делается
AV>> в других компиляторах - в частности, при сборке под форточки и
AV>> яблочки?

VA> Эмммм. А зачем? Какая в этом реальная необходимость?

например, быстро читать что-то "бинарное" одним блобом, а потом радостно по граблям ходить.

. С уважением, Никита.
icq:240059686, lj-user:nicka_startcev
... башни-виртуалы
--- GoldED+/LNX 1.1.5-b20161221
Ответить с цитированием
  #5  
Старый 09.06.2017, 07:30
Vitaliy Aksyonov
Guest
 
Сообщений: n/a
По умолчанию Re: сборка экчесическими компиляторами

Vitaliy Aksyonov написал(а) к Nickita A Startcev в Jun 17 06:16:34 по местному времени:

Привет, Nickita!

09 июн 17 00:34, Nickita A Startcev -> Vitaliy Aksyonov:

AV>>> Столкнулся с необходимостью использования в ряде мест штатной для
AV>>> gcc конструкции "_attribute__((__packed_))" для полного
AV>>> отключения любого выравнивания (x86_64, ага). А как это делается
AV>>> в других компиляторах - в частности, при сборке под форточки и
AV>>> яблочки?
VA>> Эмммм. А зачем? Какая в этом реальная необходимость?
NS> например, быстро читать что-то "бинарное" одним блобом, а потом
NS> радостно по граблям ходить.

Я так и думал. :) Да. Это просто и удобно, но нифига не переносимо...
ИМХО, лучше немного напрячься, но сделать нормальную сериализацию.

С наилучшими пожеланиями, Vitaliy.

... 10.0 times 0.10 is hardly ever 1.00.
--- GoldED+/LNX 1.1.5-b20160201
Ответить с цитированием
  #6  
Старый 10.06.2017, 14:20
Nickita A Startcev
Guest
 
Сообщений: n/a
По умолчанию сборка экчесическими компиляторами

Nickita A Startcev написал(а) к Vitaliy Aksyonov в Jun 17 12:00:36 по местному времени:

Привет, Vitaliy !


09 Jun 17 , 06:16 Vitaliy Aksyonov писал к Nickita A Startcev:


AV>>>> Столкнулся с необходимостью использования в ряде мест штатной
AV>>>> для gcc конструкции "_attribute__((__packed_))" для полного
AV>>>> отключения любого выравнивания (x86_64, ага). А как это
AV>>>> делается в других компиляторах - в частности, при сборке под
AV>>>> форточки и яблочки?
VA>>> Эмммм. А зачем? Какая в этом реальная необходимость?
NS>> например, быстро читать что-то "бинарное" одним блобом, а потом
NS>> радостно по граблям ходить.

VA> Я так и думал. :) Да. Это просто и удобно, но нифига не переносимо...
VA> ИМХО, лучше немного напрячься, но сделать нормальную сериализацию.

а еще, кстати, не все архитектуры умеют невыровненное чтение данных.
то есть, такая структура там может шороху навести.

. С уважением, Никита.
icq:240059686, lj-user:nicka_startcev
... умножаться делением
--- GoldED+/LNX 1.1.5-b20161221
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:42. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot