Порт LUA (5.2.0)

...
  • system - это разве не 70.7?
    rename - это копирование файла в файл с новым именем, и удаление старого?
  • 70.7 это exec(), а system() вызывает командный процессор которого у нас почти нет.
    rename() для файлов и каталогов. Проще забить

    Code: Select all

    int rename(const char *old, const char *new)
    {
       errno = EACCES; // или EPERM
       return -1;
    }
    Это наверное трансляция соответствующих команд LUA. Обычно программы такими вещами не занимаются.
  • Замечательно. Значит, в обозримом будущем Lua 5.2 заработает. Постараюсь запилить функции времени сам.
    [offtop]А как насчет расширения функциональности argc/argv?[/offtop]
    Да, это трансляция команд LUA, потому что функции вызываются из lua iolib
  • Sorcerer wrote:А как насчет расширения функциональности argc/argv?
    В смысле деления командной строки на отдельные токены ? Код есть, добавлю со временем.
  • kogemyaka wrote:Неплохо получилось, всё работает. Ещё бы можно было кнопки удалять и добавить работу со временем.
    Кнопки удалять можно командой создания кнопок (по аналогии с системной функцией).
    Стандартная функция lua для работы со временем только одна - clock, и вместо нее стоит заглушка, возвращающая 0. В принципе, можно добавить все системные функции Колибри, но я пока что не буду этого делать, а займусь lua 5.2.

    Можно при желании добавить в lua возможность использования COFF-библиотек, и все Колибри-зависимые функции вынести туда.
    Кстати, сейчас проверил работу с файлами, все ОК, только переводы строк в текстовых файлах распознаются дважды. Не работает только execute.
  • Sorcerer
    А ты можешь выложить скомпилированные объектники ? Проще будет найти, чего не хватает.
  • Я просто беру lua52 с официального сайта, и собираю. Никаких правок не вносил в эту версию.
    С menuetlibc собиралось только после правки макросов va и создания заглушки для signal (однако падало при вызове argv, и иногда в эмуляторе).
    Attachments
    lua52o.7z (66.25 KiB)
    Downloaded 278 times
  • Спасибо, посмотрю вечером.
    Update.
    Почти добил. Остались две функции clock() и strftime().
  • 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 294 times
    lua52.7z (184.2 KiB)
    Downloaded 300 times
  • :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: Select all

    for i=1,10 do
     print ("Number is "..i)
    end
    
  • Sorcerer
    difftime должна работать. Там ничего нет:

    Code: Select all

    double
    _DEFUN (difftime, (tim1, tim2),
    	time_t tim1 _AND
    	time_t tim2)
    {
      return (double)(tim1 - tim2);
    }
    Я правильно понимаю, что я могу создать инклуд-файл со своими версиями clock(), difftime() и так далее, подключить их к lua.c, и функции будут переобъявлены? И если все заработает, это можно будет включить в библиотеку?
    Конечно.
  • Ну, тогда и os.clock работает :mrgreen: Правда, одно и то же число всегда выводит.
  • clock должна показывать ипользованное процесорное время от запуска программы. Можно заменить на 26.9 и считать разницу от запуска при условной загрузке 100%.
  • При запуске без параметров у меня lua, собранная из тех же [только без перенаправления ввода-вывода] исходников, переходит в режим командного интерпретатора и падает. Наверное, это не очень страшно.
    И библиотеки почему-то не хотят прикручиваться пока что.
  • Who is online

    Users browsing this forum: No registered users and 4 guests