Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Oct 16, 2019 3:08 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 88 posts ]  Go to page Previous 1 2 3 4 5 6 Next
Author Message
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 10:42 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Sorcerer

Файловые функции и strpbrk я добавлю.
void exit(int code){ _exit(code); }; Не posix, но сойдёт.
int remove(const char *path) ф. 70.8
int rename(const char *old, const char *new); Не поддерживается.
int system ( const char * command ); Не поддерживается.
clock strftime difftime на эти нет времени :roll: .


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 10:57 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
system - это разве не 70.7?
rename - это копирование файла в файл с новым именем, и удаление старого?


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 11:33 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
70.7 это exec(), а system() вызывает командный процессор которого у нас почти нет.
rename() для файлов и каталогов. Проще забить
Code:
int rename(const char *old, const char *new)
{
   errno = EACCES; // или EPERM
   return -1;
}
Это наверное трансляция соответствующих команд LUA. Обычно программы такими вещами не занимаются.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 11:37 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Замечательно. Значит, в обозримом будущем Lua 5.2 заработает. Постараюсь запилить функции времени сам.
[offtop]А как насчет расширения функциональности argc/argv?[/offtop]
Да, это трансляция команд LUA, потому что функции вызываются из lua iolib


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 11:49 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Sorcerer wrote:
А как насчет расширения функциональности argc/argv?
В смысле деления командной строки на отдельные токены ? Код есть, добавлю со временем.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 12:32 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
kogemyaka wrote:
Неплохо получилось, всё работает. Ещё бы можно было кнопки удалять и добавить работу со временем.

Кнопки удалять можно командой создания кнопок (по аналогии с системной функцией).
Стандартная функция lua для работы со временем только одна - clock, и вместо нее стоит заглушка, возвращающая 0. В принципе, можно добавить все системные функции Колибри, но я пока что не буду этого делать, а займусь lua 5.2.

Можно при желании добавить в lua возможность использования COFF-библиотек, и все Колибри-зависимые функции вынести туда.
Кстати, сейчас проверил работу с файлами, все ОК, только переводы строк в текстовых файлах распознаются дважды. Не работает только execute.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 12:59 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Sorcerer
А ты можешь выложить скомпилированные объектники ? Проще будет найти, чего не хватает.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 1:17 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Я просто беру lua52 с официального сайта, и собираю. Никаких правок не вносил в эту версию.
С menuetlibc собиралось только после правки макросов va и создания заглушки для signal (однако падало при вызове argv, и иногда в эмуляторе).


Attachments:
lua52o.7z [66.25 KiB]
Downloaded 123 times
Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Mar 09, 2011 1:21 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Спасибо, посмотрю вечером.
Update.
Почти добил. Остались две функции clock() и strftime().


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Mar 10, 2011 8:12 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Sorcerer

Сделал заглушки на некоторые функции. Удалось собрать. При запуске без параметров выводит информационную строку и корректно завершается. Что ещё с ним можно делать я не знаю :oops: .

Update.
kos.txt - новый скрипт для ld. Линковать рекомендую с опцией -s - убирает отладочный мусор.
Для компиляции gcc -D__DYNAMIC_REENT__ -fomit-frame-pointer
дополнительно -ffast-math если проблемы с мат. функциями
-fno-builtin-printf больше не нужна


Attachments:
kos.txt [2.76 KiB]
Downloaded 131 times
lua52.7z [184.2 KiB]
Downloaded 136 times
Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Mar 10, 2011 8:40 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
:wink: Замечательно. Работает запуск lua [имя_файла]. Из-за отсутствия кода разбора параметров другие ключи бесполезны (например, ключ e).
Проверяю сейчас работоспособность, действительно, работает стабильно. Размер бинарника примерно такой же, как у версии menuetlibc. Файловые операции работают.
Что и требовалось доказать, не работают: os.clock, os.difftime, os.time, os.date, os.rename, os.execute
Из всего этого можно с легкостью проститься лишь с os.rename, остальные функции нужны.
Я правильно понимаю, что я могу создать инклуд-файл со своими версиями clock(), difftime() и так далее, подключить их к lua.c, и функции будут переобъявлены? И если все заработает, это можно будет включить в библиотеку?

Для проверки работы lua я всегда держу под рукой простой скрипт 1.lua, который работает на большинстве версий lua:
Code:
for i=1,10 do
 print ("Number is "..i)
end


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Mar 10, 2011 9:22 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Sorcerer
difftime должна работать. Там ничего нет:
Code:
double
_DEFUN (difftime, (tim1, tim2),
   time_t tim1 _AND
   time_t tim2)
{
  return (double)(tim1 - tim2);
}
Quote:
Я правильно понимаю, что я могу создать инклуд-файл со своими версиями clock(), difftime() и так далее, подключить их к lua.c, и функции будут переобъявлены? И если все заработает, это можно будет включить в библиотеку?
Конечно.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Mar 10, 2011 12:26 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Ну, тогда и os.clock работает :mrgreen: Правда, одно и то же число всегда выводит.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Mar 10, 2011 1:05 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
clock должна показывать ипользованное процесорное время от запуска программы. Можно заменить на 26.9 и считать разницу от запуска при условной загрузке 100%.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Mar 10, 2011 7:13 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
При запуске без параметров у меня lua, собранная из тех же [только без перенаправления ввода-вывода] исходников, переходит в режим командного интерпретатора и падает. Наверное, это не очень страшно.
И библиотеки почему-то не хотят прикручиваться пока что.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 88 posts ]  Go to page Previous 1 2 3 4 5 6 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 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