OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 15:15

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




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 21 Июнь, 2007 20:03 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Если у кого-то есть предложения как улучшить работу кодогенератора BlackBox-а просьба их высказать. Не вижу причин по которым от разумной оптимизации надо отказываться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 21 Июнь, 2007 22:53 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
GUEST писал(а):
Если у кого-то есть предложения как улучшить работу кодогенератора BlackBox-а просьба их высказать. Не вижу причин по которым от разумной оптимизации надо отказываться.

Есть предложение делать inline-подстановку маленьких процедур в место вызова.
Вопрос в том, кто реализовывать будет... :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 21 Июнь, 2007 23:06 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
А ещё не генерировать кучу инструкций FWAIT при вычислениях с плавающей точкой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 00:53 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
GUEST писал(а):
Если у кого-то есть предложения как улучшить работу кодогенератора BlackBox-а просьба их высказать. Не вижу причин по которым от разумной оптимизации надо отказываться.

Есть большое такое, конкретное предложение - сначала перевести BlackBox на slim-binaries, а уже потом заниматься кодогенерацией.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 02:40 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
PGR писал(а):
А ещё не генерировать кучу инструкций FWAIT при вычислениях с плавающей точкой.

Решается без проблем: удалить вызовы DevCPE.GenByte(9BH) из процедуры DevCPL486.GenFStore.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 04:21 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Ещё :)
Постоянные загрузки управляющего слова FPU:
Код:
push   33Eh
fldcw  word ptr [esp]
pop    ecx

Устраняется удалением всех вызовов InitFpu в модуле DevCPC486.

Также DevCPC486.InitFpu еще и дублируется в Kernel.InitFpu.
Наверное, однократной инициализации при старте BlackBox будет достаточно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 05:24 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
PGR писал(а):
Есть предложение делать inline-подстановку маленьких процедур в место вызова.
Очевидно такая подстановка есть задача представления нескольких вариантов исходного текста, а не для работы компилятора.
PGR писал(а):
Вопрос в том, кто реализовывать будет... :roll:
Вначале надо определить что именно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 06:53 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
GUEST писал(а):
Очевидно такая подстановка есть задача представления нескольких вариантов исходного текста, а не для работы компилятора.

По-моему - как раз работа компилятора. А если перенести компиляцию в загрузчик - можно и межмодульный inline замутить, с сохранением возможности загрузки/выгрузки модулей.
Цитата:
Вначале надо определить что именно.

Есть некоторые мыслишки... Приделать slim-binaries, при этом загрузчик должен предоставлять интерфейс для плагинов-оптимизаторов. Загрузчик линкуем в исполнимый файл, а модули оптимизаторов подключаем отдельно. Забавная схема получается - для увеличения скорости кода клиентам высылается дополнительный модуль оптимизатора...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 09:04 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Ivor писал(а):
А если перенести компиляцию в загрузчик - можно и межмодульный inline замутить, с сохранением возможности загрузки/выгрузки модулей.

Да, это вообще идеальный вариант 8)

Ivor писал(а):
Есть большое такое, конкретное предложение - сначала перевести BlackBox на slim-binaries, а уже потом заниматься кодогенерацией.

Насколько я понял, реализация slim-binaries есть в ETH Oberon. Как включить их генерацию при компиляции?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 09:22 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
PGR писал(а):
Насколько я понял, реализация slim-binaries есть в ETH Oberon. Как включить их генерацию при компиляции?

Ручками :) Реализация была в Oberon for Mac, в Blackboxе её отродясь не существовало :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 09:52 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Ivor писал(а):
Ручками :)

Как???
Из документации "Compiling source text(s) - Compiler.Compile"
Цитата:
The options are:
s - Enable generation of new symbol file
e - Enable generation of extended symbol file
u - Suppress compilation if the object file is up-to-date
w - Enable generation of warning messages


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:01 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
В смысле компилятор править. И кодогенерирующий загрузчик писать. А кому сейчас легко ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:09 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Ivor писал(а):
В смысле компилятор править. И кодогенерирующий загрузчик писать. А кому сейчас легко ;)

Почему править? Уже...
Цитата:
The Compiler is an important component of the Oberon system. Except for parts of the inner core, Oberon System 3 is implemented in the original Oberon language. The compiler supplied is an Oberon-2 compiler. Any Oberon-2 compiler is compatible in principle with System 3 and System 3 programs can be written and compiled with Oberon-2.The compiler can generate two types of object files: classical native object files containing target machine code or by default slim binaries. Slim binaries are a new form of object files that contain no object code at all, but a portable description of module's content that makes these files completely independent of the eventual target machine (platform independent). Object code generation is carried out on-the-fly by the module loader (depending on the underlying hardware) and takes no longer than loading traditional object files.

Только "by default" реально генерируется native...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:12 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Еще можно сделать удаление "мертвого" кода хотя бы на уровне процедур. Если процедура не экспортирована и нигде в модуле не используется ее идентификатор, то не генерировать для нее код.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:25 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
PGR писал(а):
Почему править? Уже...

А цитата откуда? Вообще я до БлэкБокса только дома доберусь, но помнится мне, что слимы нигде в нём не фигурируют. А уж кодогенерирующего загрузчика точно нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:26 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Вот тут про inline говорят, а мне вот интересно как господа предлагают узнавать stack trace - какая процедура какую вызвала, если все процедуры заинлайнены? И уж не поэтому ли ни в Java ни в .Net никакого инлайна и в помине нету и не предвидется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:29 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Ivor писал(а):
А цитата откуда? Вообще я до БлэкБокса только дома доберусь, но помнится мне, что слимы нигде в нём не фигурируют. А уж кодогенерирующего загрузчика точно нет.

Из ETH Oberon.
Цитата:
Насколько я понял, реализация slim-binaries есть в ETH Oberon. Как включить их генерацию при компиляции?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:29 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Сергей Губанов:
Смотря что инлайнить. Если простую процедуру без внутренних переменных - в чём проблема? К тому же имея полную информацию о программе в виде slim-binary много чего отследить можно.


Последний раз редактировалось Иван Горячев Пятница, 22 Июнь, 2007 10:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:32 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
PGR писал(а):
Из ETH Oberon.

Не заметил, прошу прощения. Про ETH не скажу, но вполне вероятно что в реальности такое существует только в версии для Mac. Но мы то о БлэкБоксе говорим?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 22 Июнь, 2007 10:39 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Ivor писал(а):
Но мы то о БлэкБоксе говорим?

За основу надо же что-то взять, не делать же всё from scratch :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу 1, 2, 3, 4  След.

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


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

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


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

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