OberonCore https://forum.oberoncore.ru/ |
|
Есть ли описание структур рантайма BB? https://forum.oberoncore.ru/viewtopic.php?f=1&t=5140 |
Страница 1 из 1 |
Автор: | ilovb [ Четверг, 29 Май, 2014 12:27 ] |
Заголовок сообщения: | Есть ли описание структур рантайма BB? |
Интересует описание как в приложении к репорту Oberon 2. Такое ощущение, что видел, но не помню где. В частности на данный момент интересуют указатели на массивы. Не могу понять почему не удается напрямую сконвертить POINTER TO ARRAY OF SHORTCHAR в сишный безтеговый char*. |
Автор: | ilovb [ Четверг, 29 Май, 2014 14:13 ] |
Заголовок сообщения: | Re: Есть ли описание структур рантайма BB? |
На всякий случай, я это уже победил с помощью конвертации адреса, взятого от разыменованного поинтера. SYSTEM.VAL(C.PtrChar, SYSTEM.ADR(ptr^)) Меня интересует почему не работает так: SYSTEM.VAL(C.PtrChar, ptr) Т.е., грубо говоря, почему SYSTEM.ADR(ptr^) # ptr ? |
Автор: | Иван Денисов [ Четверг, 29 Май, 2014 16:02 ] |
Заголовок сообщения: | Re: Есть ли описание структур рантайма BB? |
Надо так вроде SYSTEM.ADR(ptr[0]) На сколько я помню, это связано с тем, что есть какая-то служебная информация еще о массиве по адресу указателя, а сам массив немного позже в куче лежит. |
Автор: | ilovb [ Четверг, 29 Май, 2014 16:35 ] |
Заголовок сообщения: | Re: Есть ли описание структур рантайма BB? |
Точно. Спасибо. А по поводу служебной информации... ну я так и понял. Вот и хотелось бы знать как оно устроено, чтоб не гулять по граблям. Да и вообще надо бы документик написать о всех этих особенностях, чтобы было подспорье в биндинге. |
Автор: | Илья Ермаков [ Пятница, 30 Май, 2014 09:40 ] |
Заголовок сообщения: | Re: Есть ли описание структур рантайма BB? |
Оберонкор-Вики-Дополнительная документация. http://oberoncore.ru/library/ermakov_vn ... ejs_kernel Там раздел "Диспетчер памяти", как раз и про дин. массивы, их заголовки описано. |
Автор: | ilovb [ Пятница, 30 Май, 2014 10:59 ] |
Заголовок сообщения: | Re: Есть ли описание структур рантайма BB? |
Спасибо. Вот я слепой. Смотрел же там, но не обратил внимание на: Цитата: Для массивов вводятся следующие поля: Или, возможно, просто не уловил связь с: Цитата: начиная со смещения 0 Значит адрес массива = SYSTEM.ADR(ptr) + 3*4 Теперь все прояснилось |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |