Board.KolibriOS.org
https://board.kolibrios.org/

FreePascal
https://board.kolibrios.org/viewtopic.php?f=33&t=1020
Page 5 of 7

Author:  bw [ Tue Dec 08, 2020 7:42 am ]
Post subject:  Re: FreePascal


Не сделано, сделано на отъебись и другие особенности:
  • ничего не тестировалось и если что-то есть, то это не значит что оно работает, классика;
  • нельзя создавать динамические библиотеки;
  • нельзя загружать динамические библиотеки;
  • при сборке 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

Author:  SovietPony [ Fri Dec 25, 2020 3:43 pm ]
Post subject:  Re: FreePascal

bw wrote:
не нашёл в системе mutex-ов
Реализуются через фьютексы.

Author:  bw [ Sat Dec 26, 2020 7:18 pm ]
Post subject:  Re: FreePascal

Я нашёл эти futex-ы в sysfn77, но не понял, разве их суть как раз не состоит в том, что бы не обращаться лишний раз к ядру? Если один хрен каждый раз дёргать ядро, то почему было не сделать нормальные примитивы синхронизации.

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

Author:  SovietPony [ Sat Dec 26, 2020 8:09 pm ]
Post subject:  Re: FreePascal

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

Author:  Doczom [ Sun Jan 31, 2021 3:39 pm ]
Post subject:  Re: FreePascal

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

Author:  Doczom [ Sun Jan 31, 2021 3:45 pm ]
Post subject:  Re: FreePascal

Попытался сделать модуль для работы с сисфункцией 75, насколько это работает не знаю

Attachments:
test_sockets.pp [3.94 KiB]
Downloaded 82 times

Author:  bw [ Sun Jan 31, 2021 7:23 pm ]
Post subject:  Re: FreePascal

  • Для ELF в FPC нужен внешний линковщик, неоправданный геморой, я считаю, таскать с собой link.kex, который ещё нужно как-то собрать.
  • Что бы не использовать ogcoff, нужно разобраться как он работает и переписать реализованную в нём логику, я не буду этим заниматься.
  • Да, многие системные функции не были реализованы.

..bw

Author:  Doczom [ Sun Jan 31, 2021 7:47 pm ]
Post subject:  Re: FreePascal

а при реализации загрузки длл (сисфункция 68, подфункция 19) можно реализовать модуль консоли(подключить console.obj)?
и было бы неплохо сделать вывод ошибок компиляции

Author:  bw [ Sun Jan 31, 2021 7:54 pm ]
Post subject:  Re: FreePascal

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

..bw

Author:  Doczom [ Sun Jan 31, 2021 7:57 pm ]
Post subject:  Re: FreePascal

да я забыл про отладочную доску

Author:  bw [ Sun Jan 31, 2021 8:07 pm ]
Post subject:  Re: FreePascal

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

..bw

Author:  Doczom [ Mon Feb 01, 2021 5:08 am ]
Post subject:  Re: FreePascal

в ogcoff.pas дофига кокстант которые вообще непонятны, многое в кос даже не пригодится(например читалка длл), может проще посмотреть что возвращают функции ogbase.pas с owbase.pas ,а такие моменты как загрузка .obj бибиотек реализовать в ртл или юнитах, бин код исполняемого файла кос же не очень сложено устроен
а что вообще возвращают функции модулей ogbase и owbase ?

Author:  Doczom [ Tue Feb 02, 2021 10:51 pm ]
Post subject:  Re: FreePascal

Вопрос: а в RTL есть функция для работы с буфером?

Author:  bw [ Wed Feb 03, 2021 10:59 am ]
Post subject:  Re: FreePascal

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

..bw

Author:  Doczom [ Wed Feb 03, 2021 11:14 am ]
Post subject:  Re: FreePascal

я сейчас пытаюсь реализовать функции работы с сетью, если что-то получится, то скину сюда

Page 5 of 7 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/