OberonCore
https://forum.oberoncore.ru/

Вопросы по модулю Kernel
https://forum.oberoncore.ru/viewtopic.php?f=2&t=4415
Страница 1 из 1

Автор:  Роман М. [ Вторник, 30 Июль, 2013 22:49 ]
Заголовок сообщения:  Вопросы по модулю Kernel

Исследуя модуль Kernel, я каждый раз натыкаюсь на некоторые "магические" цифры. Хотелось бы знать как они были получены.

Примеры:

Число 12

PROCEDURE NewArr
headSize := 4 * nofdim + 12;

PROCEDURE NewBlock
AllocHeapMem(tsize + 12, new); (* 3) allocate new cluster *)
b := SYSTEM.VAL(FreeBlock, SYSTEM.VAL(INTEGER, new) + 12);
b.size := (new.size - 12) DIV 16 * 16 - 4


Число 19

PROCEDURE Next
RETURN SYSTEM.VAL(Block, SYSTEM.VAL(INTEGER, b) + (size + 19) DIV 16 * 16)

PROCEDURE NewBlock
tsize := (size + 19) DIV 16 * 16;

Автор:  Илья Ермаков [ Среда, 31 Июль, 2013 01:10 ]
Заголовок сообщения:  Re: Вопросы по модулю Kernel

Размеры всяческих заголовков... Следуют из структуры кучи.

Эту документацию смотрели?
http://www.oberoncore.ru/wiki/blackbox/kernel

Автор:  maliya [ Среда, 31 Июль, 2013 07:18 ]
Заголовок сообщения:  Re: Вопросы по модулю Kernel

Цитата:
Число 12

12=SIZE(Cluster);
Цитата:
Число 19

BlockAlign=16;
TagSize=4;(*SIZE(INTEGER)*)
19= 4 + 15= TagSize+(BlockAlign-1)

Автор:  Роман М. [ Четверг, 01 Август, 2013 08:55 ]
Заголовок сообщения:  Re: Вопросы по модулю Kernel

Спасибо. Это то что мне было нужно.

Автор:  Роман М. [ Воскресенье, 04 Август, 2013 14:41 ]
Заголовок сообщения:  Re: Вопросы по модулю Kernel

Известно, что тип INTEGER используется для операций с адресной арифметикой в модуле Kernel вместо указателя, поскольку из сообщения об языке Компонентный Паскаль тип INTEGER является 32-битным числом. Это уже нельзя назвать красивым решением, поскольку код непереносим ни между различными аппаратными архитектурами, ни даже между компиляторами КП.
Если я вижу в коде число 4, то подразумевается ли под ним размер машинного слова (архитектура процессора) в контексте адресной арифметики?

Автор:  Пётр Кушнир [ Воскресенье, 04 Август, 2013 17:49 ]
Заголовок сообщения:  Re: Вопросы по модулю Kernel

Роман, копаете в сторону 64 bit? :D

Автор:  Роман М. [ Воскресенье, 04 Август, 2013 18:21 ]
Заголовок сообщения:  Re: Вопросы по модулю Kernel

Пётр Кушнир писал(а):
Роман, копаете в сторону 64 bit? :D
Ну да, в некотором роде. :) Пока только интересуюсь насколько это выполнимо. Благодаря лёгкости языка КП я могу себе позволить исследовать runtime BB, что врядли случилось бы с другим языком того же класса.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/