OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 19 Июнь, 2025 00:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Kernel.Type
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 20:42 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Код:
Type = POINTER TO RECORD [untagged]
         size-: INTEGER;
         mod-: Module;
         id-: INTEGER;
         base-: ARRAY 16 OF Type;
         fields-: Directory;
         ptroffs-: ARRAY [b]1000000 [/b]OF INTEGER
      END;

Мне не показалось? Т.е. размер структуры около 2Мб? ЗАЧЕМ??? Может кто-то прояснить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Kernel.Type
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 21:01 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
RECORD [untagged] - т.е. нет контроля границ. Используется только POINTER TO этот RECORD. Т.е. это просто способ работы с низкоуровневыми блоками переменного размера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Kernel.Type
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 21:04 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Spasibo, Ilia!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Kernel.Type
СообщениеДобавлено: Четверг, 13 Ноябрь, 2008 06:59 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Илья Ермаков писал(а):
RECORD [untagged] - т.е. нет контроля границ. Используется только POINTER TO этот RECORD. Т.е. это просто способ работы с низкоуровневыми блоками переменного размера.

Стоп. Нет тэга записи. То есть это нельзя собирать сборщиком мусора.
А контроль границ как раз должен быть.

И размер тут, вроде, фиксированный.

untagged-записи используют, вроде, чтобы при передаче куда-нибудь во внешний мир скрытый тэг записи не мешался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Kernel.Type
СообщениеДобавлено: Четверг, 13 Ноябрь, 2008 09:30 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Действительно. [untagged] для записи не значит [untagged] для поля-массива.
Код:
MODULE TestIndex;

  IMPORT  SYSTEM;

  VAR
    rec: RECORD [untagged]
      y: ARRAY 20 OF REAL;
    END;

  PROCEDURE T*;
    VAR  i: INTEGER;
  BEGIN
    (*rec.y[30] := 2;*)
    i := 30; rec.y[i] := 2;
  END T;

END TestIndex.

^Q TestAsm.T

А большой размер массива, похоже и сделан, чтобы при "Используется только POINTER TO этот RECORD" хватило для блоков "любого" размера и контроль не ругался.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2025, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB