Здравствуйте, Erop, Вы писали:
E>Здравствуйте, ra88, Вы писали:
E>Для начала не кисло бы описать
E>1) Язык (С или С++)
E>2) Компилятор
E>3) Платформу
извиняюсь ещё раз. первое и второе указал вроде бы в ответе, третье думал следует из контекста, но на всякий случай ещё раз:
1) С
2) gcc-4.3.2
3) linux
E>Да, поля структуры. Эта структура будет расположена в памяти по фиксированному адресу. При этом, она может даже не инициализироваться, а просто грузиться из экзешника.
E>Соответсвенно код, обращающийся кданным в такой структуре будет знать адреса данных непосредственно, и сможет обращаться непосредственно по ним. То есть инструкции будут содержать адреса данных непосредственно в себе
E>Что такое агрегат -- знаешь? Это конструкция типа const static struct MyData {
E> int Field1;
E> int Field2;
E> int Field3;
E>} = {
E> 1, 2, 4 // это вот и есть агрегат
E>};
спасибо, действительно не знал такого слова. К сожалению, в моём случае структура выглядит несколько сложнее и неконстантная, т.е. она может принимать различные состояния.
Тем не менее многое прояснилось. Думаю, что справедливо полагать, что первый вариант должен быть быстрее. GCC переводит статическую структуру в данном случае в заклинание типа
98 .local my_var
99 .comm my_var,16,16
что на сколько я понимаю означает, что резервируется память в (в данном случае) в 16 байт с соответствующиим выравниванием и закрепляется за my_var, который потом и используется в коде.