Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Oct 24, 2021 6:24 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 104 posts ]  Go to page Previous 13 4 5 6 7 Next
Author Message
 Post subject: Re: FreePascal
PostPosted: Tue Dec 08, 2020 7:42 am 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 441

Не сделано, сделано на отъебись и другие особенности:
  • ничего не тестировалось и если что-то есть, то это не значит что оно работает, классика;
  • нельзя создавать динамические библиотеки;
  • нельзя загружать динамические библиотеки;
  • при сборке KEX-а не инициализированные секции заливаются нулями, как и "дыры" между секциями;
  • есть обработка параметров командной строки;
  • стандартный вывод (и ошибки) происходит на отладочную доску (sysfn 63.1);
  • стандартный ввод осуществялется с отладочной доски (sysfn 63.2);
  • есть многопоточность (см. первый пункт):
    • размер стека 256KB;
    • есть в KOS (sysfn 69.4/5), но не реализовано в RTL suspend/resume потока;
    • есть threadvar/tls (см. первый пункт);
    • EndThread отсутствует, есть только KillThread, который будет приводить к утечкам памяти (вероятно) и
      блокировкам конкурирующих потоков (возможно);
    • EnterCriticalSection есть, но сделан на тупом цикле (не нашёл в системе mutex-ов);
  • есть исключения (см. первый пункт);
  • стек фиксировнного размера (скорее всего);
  • аппаратные прерывания не обрабатываются, например FPU (sysfn 68.1);
  • и т.д.

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Fri Dec 25, 2020 3:43 pm 
Offline
User avatar

Joined: Sat Oct 31, 2020 2:46 pm
Posts: 15
bw wrote:
не нашёл в системе mutex-ов
Реализуются через фьютексы.


Top
   
 Post subject: Re: FreePascal
PostPosted: Sat Dec 26, 2020 7:18 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 441
Я нашёл эти futex-ы в sysfn77, но не понял, разве их суть как раз не состоит в том, что бы не обращаться лишний раз к ядру? Если один хрен каждый раз дёргать ядро, то почему было не сделать нормальные примитивы синхронизации.

p.s. Или этот код в user-space выполняется?


Top
   
 Post subject: Re: FreePascal
PostPosted: Sat Dec 26, 2020 8:09 pm 
Offline
User avatar

Joined: Sat Oct 31, 2020 2:46 pm
Posts: 15
bw wrote:
разве их суть как раз не состоит в том, что бы не обращаться лишний раз к ядру?
Так и есть. У реализация мутекса поверх футекса удачная блокировка будет делаться без дёргания ядра, например. Тут тебе атомические операции в помощь.
Другие примитивы синхронизации так же эффективно делаются поверх него, поэтому нет смысла делать библеотечные функции в ядре.
Я и сам где-то месяц назад делал мутексы на Обероне для Колибри, ничего сложного. Код, правда, позже выкинул за ненадобностью.


Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 3:39 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
Здравствуйте, можно ли подключить console.obj к порту FreePascal под кос? может это можно как-нибудь через асм вставки сделать.
По компилятору: можно ли использовать вместо ogcoff.pas ogelf.pas или использовать ogbase.pas и owbase.pas напрямую?
По RTL: там представлены не все функции, например нет функций 74, 75, 76, и некоторых подфункций, например подфункции 18, 19 функции 68


Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 3:45 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
Попытался сделать модуль для работы с сисфункцией 75, насколько это работает не знаю


Attachments:
test_sockets.pp [3.94 KiB]
Downloaded 105 times
Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 7:23 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 441
  • Для ELF в FPC нужен внешний линковщик, неоправданный геморой, я считаю, таскать с собой link.kex, который ещё нужно как-то собрать.
  • Что бы не использовать ogcoff, нужно разобраться как он работает и переписать реализованную в нём логику, я не буду этим заниматься.
  • Да, многие системные функции не были реализованы.

..bw


Last edited by bw on Sun Jan 31, 2021 8:08 pm, edited 2 times in total.

Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 7:47 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
а при реализации загрузки длл (сисфункция 68, подфункция 19) можно реализовать модуль консоли(подключить console.obj)?
и было бы неплохо сделать вывод ошибок компиляции


Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 7:54 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 441
Можно всё что угодно, но я не планирую в ближайшее время возвращаться к этому проекту, сорян :-(.
О каком выводе речь? Стандартный вывод в KolibriOS осуществляется на отладочную доску. Если запустить ppc386.kex, то ошибки (и не ошибки) будут выведены туда.

..bw


Last edited by bw on Sun Jan 31, 2021 8:08 pm, edited 1 time in total.

Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 7:57 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
да я забыл про отладочную доску


Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Jan 31, 2021 8:07 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 441
У меня где-то была тупенькая реализация Crt, можно попробовать её воскресить. Но она отсасывает, конечно, у современного console.obj и они обе не годятся для fpc-шного toolchain-а. Вроде console.obj как-то приспособили для работы с несколькими приложениями (а нужно именно это, так как make -> fpc -> fpc386 и т.д. и все они изрыгают текст), но что-то мне там не понравилось. А ещё нужны переменные окружения. И ещё овердохрена вещей окажется не сделанным, так что за пару вечеров сделать нормальный toolchain не получится.

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Mon Feb 01, 2021 5:08 am 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
в ogcoff.pas дофига кокстант которые вообще непонятны, многое в кос даже не пригодится(например читалка длл), может проще посмотреть что возвращают функции ogbase.pas с owbase.pas ,а такие моменты как загрузка .obj бибиотек реализовать в ртл или юнитах, бин код исполняемого файла кос же не очень сложено устроен
а что вообще возвращают функции модулей ogbase и owbase ?


Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Feb 02, 2021 10:51 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
Вопрос: а в RTL есть функция для работы с буфером?


Top
   
 Post subject: Re: FreePascal
PostPosted: Wed Feb 03, 2021 10:59 am 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 441
  • Я больше ничего не могу сказать про компилятор, в ЛС я писал, что времени ему было уделено настолько мало насколько это возможно.
  • Что за буфер? Если буфер обмена, то нет. Сейчас проще самому посмотреть (kosh.inc), чем меня спрашивать. RTL я делал в 2007 году.

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Wed Feb 03, 2021 11:14 am 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 67
я сейчас пытаюсь реализовать функции работы с сетью, если что-то получится, то скину сюда


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 104 posts ]  Go to page Previous 13 4 5 6 7 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited