Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 19 июн 2019, 09:07

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




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 20 дек 2018, 13:56 
Не в сети

Сообщения: 25
Собственно, для хранения промежуточных значений выражений, используется регистровый стэк. Просто он состоит всего из трех регистров (eax, ecx, edx) или (rax, rcx, rdx). Когда свободные регистры заканчиваются, регистр, который находится на дне регистрового стэка заносится в программный стэк, а остальные сдвигаются на одну позицию и компилятор запоминает, что один операнд находится в программном стэке. Есть кое-какие нюансы, но в общем, идея понятна.

Но так было не всегда. Сначала было шесть регистров: eax, ecx, edx, ebx, esi, edi. Но регистры в x86 неравноценны: eax, ecx, edx, ebx включают в себя 8- и 16-битные части (al, cl... ax, cx...), a esi и edi единые и неделимые. Некоторые операции требуют именно 8- или 16-битный регистр в качестве операнда. Это конечно не проблема, но всё же, это обстоятельство несколько усложняет компилятор. Я попробовал отключить регистры esi и edi -- скорость выполнения тестовых программ не изменилась. Регистр ebx по соглашению stdcall требуется сохранять перед использованием и восстанавливать после. Это неудобно, и я отключил еще и ebx. Скорость уменьшилась на 5%. Ради интереса, я отключил еще и edx, оставив только eax и ecx. И только после этого производительность заметно просела. Я сделал вывод, что оптимальное число регистров для хранения промежуточных значений выражений - 4 (можно 3). Поэтому, я решил не усложнять компилятор, использовать регистровый стэк из трех регистров. Остальные регистры зарезервированы и теоретически могут быть использованы под хранение переменных (но с этим пока сложно).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 23 дек 2018, 19:07 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Антон, ты пока в регистры не лезь, не отвлекайся. Надо доделать win64, чтобы более-менее можно было сказать "работает". В принципе, можно и fasm оставить как финишный компилятор, а усилия сосредоточить на доводке.
Мне, например, нужен и win32 и win64 DLL (Linux мало актуально, а МакОсь так совсем не актуально). Ооочень серьёзно намерен использовать твой компиль в коммерческой разработке (может быть как ядро использовать начальство не позволит, но ускорить питон точно не запретит. А скоро будет не лишним). Но нужна уверенность, что в продакшене сбоев не будет. Собственно, поэтому коммитами тебя и бомблю. Комдива просил сделать BSD/MIT лицензию -- сделал бы -- ему бы помогал. Но ты оказался шустрее, так что теперь терпи)) Мне кажется, твой компиль будет быстрее дотащить до продакшена, да и с лицензией у начальства вопросов не будет.
И да. Надо принимать общий стандарт на Оберон.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 23 дек 2018, 19:45 
Не в сети

Сообщения: 128
Валерий, если не секрет, скажите, во что планируете встраивать транслятор?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 24 дек 2018, 08:32 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Да, не то, чтобы секрет имён/адресов называть не стану, но в общих чертах обрисую.
Некий московский стартап переживает этап бурного роста (готовится к нему усиленно). Поскольку, электричество -- это моя карма, понятно, что стартап занимается делами в этой сфере.
Есть некое заказное устройство, которое специально заточено под мониторинг электрических параметров. Оно простое ровно на столько, на сколько это вообще возможно. Впрочем, экранчик во второй версии (уже на подходе) всё же должен быть. И эта железяка должна уметь отдавать данные по запросу извне.
Этот запрос должна делать софтина, которую я с нуля как раз и делаю. Уже сейчас питон жрёт 75 метров памяти (это пока только 16 устройств). А в апреле их уже будет ТРИСТА))) И с этим, допустим, надо бороться.
Данные складываются по тупейшему алгоритму на сервер в самом доступном виде (человеко-читаемый формат -- это моё принципиальное решение).
Питон и так не очень быстрый, а уж анализ поступающих данных делать на питоне -- это будет совсем больно. Вот я (пока начальство доверяет) буду гнуть свою линию на счёт Оберона.
Думаю, надо ковать железо, пока от кассы не отошёл.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 24 дек 2018, 09:43 
Не в сети
Администратор
Аватара пользователя

Сообщения: 187
Могу написать компилер под любую железяку... С редактором :)

Но нужно 800К на 2 года под 3% в месяц. :|


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 24 дек 2018, 11:07 
Не в сети

Сообщения: 25
prospero78su писал(а):
Надо доделать win64, чтобы более-менее можно было сказать "работает".
<...>
Собственно, поэтому коммитами тебя и бомблю.

Если пока бомбить не будешь, доделаю быстро. :) Думаю, уже к новому году будет всё, кроме машинного кода и, возможно, соглашения вызовов. А пока мне надо сделать xmm, а то без этого нельзя сделать нормальную поддержку вызовов.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 24 дек 2018, 19:21 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Всё, бомбёжка закончилась)) Надо свою работу делать, иначе секир башка мне будет. Есть кое-какие мысли по поводу развития компиля, пока не озвучиваю. DLL под win64 собралась, но не пробовал (причина -- завал).
И, похоже, тег экспорта забыл указать. Но, это мелочи. В доке исправь пример с параметрами.
Вообще времени нет. И начальство задач накидало волшебных. Так что, пока вот так.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 25 дек 2018, 08:07 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Антон, делаю экспорт процедуры -- не получается. Что 32 бита, что 64 бита.
Код: "OBERON"
  1.  
  2. IMPORT SYS := SYSTEM,....
  3. .....
  4. PROCEDURE [winapi] Ai1_Set*(pNumUnit: INTEGER; pVal:INTEGER);
  5. .....
  6.  

Смотрю секцию экспорта -- пустая.
Пробовал stdcall -- результат такой же.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 25 дек 2018, 08:53 
Не в сети

Сообщения: 25
Экспорт только из главного модуля. 64-бит сейчас не может работать в принципе -- нет экспорта, нет релоков/pic, нет нормального соглашения вызовов. Для 32-бит dll в параметрах обязательно надо указать -pic или -reloc. У меня работает, если сделать так:
Код: "OBERON"
  1.  
  2. MODULE dll1;
  3.  
  4. IMPORT SYSTEM;
  5.  
  6. PROCEDURE [winapi] plus* (a, b: INTEGER): INTEGER;
  7. RETURN a + b
  8. END plus;
  9.  
  10. PROCEDURE [winapi]; minus* (a, b: INTEGER): INTEGER;
  11. RETURN a - b
  12. END minus;
  13.  
  14. END dll1.
  15.  


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Oberon-07/16
СообщениеДобавлено: 25 дек 2018, 09:17 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Что-то не понимаю. Собрал в 32 бита, и в просмотре секции экспорт опять не вижу процедурки.
Собщение что-то вроде "секция упакована". А через просмотрщик другой -- вижу.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


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

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


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Тех.поддержка phpBB