Re[4]: Какой язык имеется в виду? Видимо С++?
От: ra88  
Дата: 20.01.09 22:34
Оценка: +1
Здравствуйте, 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, который потом и используется в коде.
while true;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.