Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт ноя 23, 2017 7:47 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 88 сообщений ]  На страницу Пред. 1 2 3 4 5 6 След.
Автор Сообщение
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 10:42 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
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: .


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 10:57 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
system - это разве не 70.7?
rename - это копирование файла в файл с новым именем, и удаление старого?


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 11:33 am 
Не в сети
Kernel Developer

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


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 11:37 am 
Не в сети

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


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 11:49 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Sorcerer писал(а):
А как насчет расширения функциональности argc/argv?
В смысле деления командной строки на отдельные токены ? Код есть, добавлю со временем.


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 12:32 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
kogemyaka писал(а):
Неплохо получилось, всё работает. Ещё бы можно было кнопки удалять и добавить работу со временем.

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

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


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 12:59 pm 
Не в сети
Kernel Developer

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


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 1:17 pm 
Не в сети

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


Вложения:
lua52o.7z [66.25 КБ]
62 скачивания
Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Ср мар 09, 2011 1:21 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Спасибо, посмотрю вечером.
Update.
Почти добил. Остались две функции clock() и strftime().


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Чт мар 10, 2011 8:12 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Sorcerer

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

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


Вложения:
kos.txt [2.76 КБ]
65 скачиваний
lua52.7z [184.2 КБ]
61 скачивание
Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Чт мар 10, 2011 8:40 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 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:
Код:
for i=1,10 do
 print ("Number is "..i)
end


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Чт мар 10, 2011 9:22 am 
Не в сети
Kernel Developer

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


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Чт мар 10, 2011 12:26 pm 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Ну, тогда и os.clock работает :mrgreen: Правда, одно и то же число всегда выводит.


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Чт мар 10, 2011 1:05 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
clock должна показывать ипользованное процесорное время от запуска программы. Можно заменить на 26.9 и считать разницу от запуска при условной загрузке 100%.


Вернуться к началу
 Заголовок сообщения: Re: Порт LUA
СообщениеДобавлено: Чт мар 10, 2011 7:13 pm 
Не в сети

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


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

Часовой пояс: UTC+03:00


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB