ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
5 декабря
110738 Топик полностью
AlexandrY (20.01.2008 23:52, просмотров: 440) ответил bialix на Документация по Lua на русском.
Ну што, вценил "чистый C" и портировал таки эту LUA на STR91x Чистый C хуже чистого спирта, двое суток голова болела. Короче вылезла проблема на ихних каскадах вложенных макросов для определения конструкции next(ls) RealView ее глухо не понимал, т.е. парсер с ней вылетал в аборт. Пришлось макросы заменить на одну С-и функцию. С ретаргетингом была отдельная песня. Зато теперь можно LUA запускать реально во многих потоках. Это сильно нужно когда скрипты запускаются из разных юзеровских сессий на встроенном WEB сервере. Вообщем чистого C-и не бывает, еще раз убедился. Привожу результат работы скрипта LUA из стандартных тестов под названием "bisect.lua" - нахождение корня уравнения X*X*X - X - 1 = 0
Lua 5.1.2  Copyright (C) 1994-2007 Lua.org, PUC-Rio
0 c=1.5 a=1 b=2
1 c=1.25 a=1 b=1.5
2 c=1.375 a=1.25 b=1.5
3 c=1.3125 a=1.25 b=1.375
4 c=1.34375 a=1.3125 b=1.375
5 c=1.328125 a=1.3125 b=1.34375
6 c=1.3203125 a=1.3125 b=1.328125
7 c=1.32421875 a=1.3203125 b=1.328125
8 c=1.326171875 a=1.32421875 b=1.328125
9 c=1.3251953125 a=1.32421875 b=1.326171875
10 c=1.32470703125 a=1.32421875 b=1.3251953125
11 c=1.324951171875 a=1.32470703125 b=1.3251953125
12 c=1.3248291015625 a=1.32470703125 b=1.324951171875
13 c=1.3247680664062 a=1.32470703125 b=1.3248291015625
14 c=1.3247375488281 a=1.32470703125 b=1.3247680664062
15 c=1.3247222900391 a=1.32470703125 b=1.3247375488281
16 c=1.3247146606445 a=1.32470703125 b=1.3247222900391
17 c=1.3247184753418 a=1.3247146606445 b=1.3247222900391
18 c=1.3247165679932 a=1.3247146606445 b=1.3247184753418
19 c=1.3247175216675 a=1.3247165679932 b=1.3247184753418
20 c=1.3247179985046 a=1.3247175216675 b=1.3247184753418
after 20 steps, root is 1.3247179985046387 with error 9.5e-07, f=1.8e-07
Объем всего LUA на STR91x - 80-90 кБ в THUMB режиме Задача с парсингом приведеного выше скрипта заняла объем стека 5 Kб. А вообще парсинг в LUA очень рекурсивная вещь с вложенностью по умолчанию до 200. Вложенность в текущем скрипте была не более 10. Соответственно стек может вырасти еще в 20 раз.
INDEMSYS