Вопросы по теме 'memory-alignment'

Цель выравнивания памяти
По общему признанию, я этого не понимаю. Скажем, у вас есть память со словом памяти длиной 1 байт. Почему вы не можете получить доступ к переменной длиной 4 байта при одном доступе к памяти по невыровненному адресу (т.е. не делящемуся на 4), как в...
88756 просмотров
schedule 21.03.2024

Выровнять собственный код по границам памяти фиксированного размера с GCC / G ++ / AS?
У меня есть функция C, которая содержит весь код, реализующий байт-коды интерпретатора байт-кода. Мне интересно, есть ли способ выровнять сегменты скомпилированного кода в памяти по границам фиксированного размера, чтобы я мог напрямую вычислить...
1228 просмотров
schedule 09.08.2022

#pragmapack в C++
зачем нам нужна структура #pragma pack для typedef в C++? В частности, когда вы используете эту структуру в сетевой связи.
5315 просмотров
schedule 16.03.2022

Разбор потока двоичных сообщений в C / C ++
Пишу декодер для бинарного протокола (протокол Javad GRIL). Он состоит примерно из сотни сообщений с данными в следующем формате: struct MsgData { uint8_t num; float x, y, z; uint8_t elevation; ... }; Поля представляют собой...
8565 просмотров
schedule 23.06.2022

Именование элементов массива или структуры и массива в объединении
Рассмотрим следующую структуру: struct Vector4D { union { double components[4]; struct { double x, y, z, t; } Endpoint; }; }; Мне кажется, я видел что-то подобное в структуре WinApi IPAddress. Идея состоит в том, чтобы...
3499 просмотров
schedule 22.02.2022

Выровненные и упакованные атрибуты
Я работаю над прошивкой для 16-битного PIC и пишу на C (компилятор Microchip C30). Мое устройство получает длинный список байтов от внешнего устройства, а затем я пытаюсь скопировать эти байты в структуру. Структура определяется следующим образом:...
4391 просмотров

Скорость операций с несогласованными данными
Насколько мне известно, ЦП лучше всего работает с данными, которые выровнены по границе, равной размеру этих данных. Например, если каждый элемент данных int имеет размер 4 байта, то адрес каждого элемента int должен быть кратен 4, чтобы ЦП был...
648 просмотров
schedule 27.10.2023

Динамическое размещение объектов с выровненными элементами — возможные решения?
Я рассматриваю возможность использования SSE для ускорения некоторого кода в моем проекте. Обычно для этого требуется 16-байтовое выравнивание данных, над которыми я работаю. Для статического распределения я полагаю, что __declspec(align(16))...
760 просмотров

Как выровнять 16-битные целые числа для использования со встроенными функциями SSE
Я работаю с двумерными массивами 16-битных целых чисел, определенных как int16_t e[MAX_SIZE*MAX_NODE][MAX_SIZE]; int16_t C[MAX_SIZE][MAX_SIZE]; Где Max_SIZE и MAX_NODE — постоянные значения. Я не профессиональный программист, но каким-то...
5093 просмотров
schedule 12.08.2022

Имеет ли valarray непрерывное выравнивание памяти?
Имеет ли valarray непрерывное выравнивание памяти? Я хочу передать valarray функции (из IPPS), которая принимает только указатели, передав &myValarray[0] . Но поэтому я должен быть уверен, что выравнивание памяти valarray является...
1187 просмотров
schedule 22.06.2022

Почему выравнивание длинного и длинного члена объединения больше, чем содержащее объединение / структура? Это правильно?
Из этого вопроса можно было начать верить, что выравнивание союза не меньше, чем наибольший расклад его отдельных членов. Но у меня проблема с типом long long в gcc / g ++. Полный пример можно найти здесь , но вот части, относящиеся к моему...
1321 просмотров

Выравнивание доступа к памяти графического процессора ядра свертки изображений (OpenCL / CUDA)
Чтобы понять, как обеспечить соблюдение требований выравнивания, я несколько раз прочитал следующий отрывок из книги «Гетерогенные вычисления с OpenCL», стр. № 157. Это показывает, как добавить заполнение для проблемы в свертке изображений (при...
3455 просмотров
schedule 25.04.2022

Как выставить выровненный класс с помощью boost.python
При попытке выставить выровненный класс следующим образом: class __declspec(align(16)) foo { public: void foo_method() {} }; BOOST_PYTHON_MODULE(foo_module) { class_<foo>("foo") .def("foo_method", &foo::foo_method); }...
487 просмотров
schedule 13.05.2022

Заголовки программ в формате ELF: MemSiz против FileSiz
readelf -l /bin/bash дает мне это: Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align PHDR 0x0000000000000040 0x0000000000400040...
1575 просмотров
schedule 26.12.2023

Каковы недостатки выполнения pragma pack(1) в C?
Возможный дубликат: Есть ли производительность проблемы при использовании pragma pack(1)? Каковы недостатки выполнения pragma pack(1) в C? Я определил некоторые данные структуры для протокола связи и хочу отключить любое выравнивание...
1279 просмотров
schedule 02.02.2024

Нет выравнивания памяти с GCC
Я работаю с некоторыми пакетными данными. Я создал структуры для хранения данных пакета. Эти структуры были сгенерированы Python для определенного сетевого протокола. Проблема в том, что из-за того, что компилятор выравнивает структуры, когда я...
3435 просмотров

Выравнивание статического массива с помощью std::aligned_storage
Я пытаюсь реализовать 16-байтовое выравнивание простого статического массива, используя шаблон std::aligned_storage : #include <type_traits> int main() { const size_t SIZE = 8; using float_16 = std::aligned_storage<sizeof(float)...
3084 просмотров
schedule 21.06.2022

Как массив выравнивается в C++ по сравнению с содержащимся в нем типом? 2
Следуя теме Как выравнивается массив в C++ по сравнению с содержащимся типом? Я провел эксперимент. Вот код: #include<iostream> using namespace std; int main() { const int N = 12; { float p1[N], p2[N]; cout << p1...
87 просмотров
schedule 13.06.2022

MinGW и выравнивание упакованных структур с использованием C ++ 11
Для приведенной ниже структуры фактический (без заполнения) размер структуры равен 54. На 64-битной (Windows 7) машине с MinGW (GCC) 4.8.1 x86_64 я получаю sizeof(BMPHeader) как 56, что понятно. Согласно требованиям формата файла BMP, структура...
1409 просмотров
schedule 28.10.2023

Действительно ли выравнивание имеет значение для производительности в C++11?
Действительно ли выравнивание имеет значение для производительности в C++11? В книге Страуструпа есть совет упорядочивать элементы в структуре, начиная с наибольшего и заканчивая наименьшим. Но мне интересно, проводил ли кто-нибудь измерения,...
4583 просмотров
schedule 30.03.2022