SergOmarov 34 Опубликовано: 30 июля, 2015 Есть 2 компьютера, одного есть в оперативной памяти функция, как ее передать другому? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 30 июля, 2015 (изменено) передать код, и загрузить его на другом компьютере. Изменено 30 июля, 2015 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 30 июля, 2015 А если я не знаю, где код? У меня есть только функция в оперативной памяти. Мой вопрос был о том, как из оперативной памяти эту функцию извлечь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 30 июля, 2015 --функция function hello() print("Hello World!") end -- преобразуем функцию в строку str=string.dump(hello) -- передаем на другой компьютер ... -- восстанавливаем hello1=loadstring(str) -- и запускаем hello1() 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 30 июля, 2015 А если я не знаю, где код? ... Зеро, похоже, тут проблема более грандиозная Нужно что-то из компа передать, что-то из ОЗУ, но что именно, но не знает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 30 июля, 2015 А если код не знаешь нужно его написать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 31 июля, 2015 На ум сразу приходят пару идей: Сделать менеджер оперативной памяти и грузить программы через него, как через lua.lua Если известно имя функции, то string.dump Парсить всю память по рабочим индексам, если ~= nil, то занести в таблицу, но как найти нужный код я без понятия и как сразу дампить все окружения тоже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 1 августа, 2015 --функцияfunction hello()print("Hello World!")end-- преобразуем функцию в строкуstr=string.dump(hello)-- передаем на другой компьютер...-- восстанавливаемhello1=loadstring(str)-- и запускаемhello1() Очень хороший пример, спасибо) На ум сразу приходят пару идей: Сделать менеджер оперативной памяти и грузить программы через него, как через lua.lua Если известно имя функции, то string.dump Парсить всю память по рабочим индексам, если ~= nil, то занести в таблицу, но как найти нужный код я без понятия и как сразу дампить все окружения тоже. Дуб, а в OC можно напрямую взаимодействовать с оперативной памятью? Можно пример? Или ты имел ввиду for i,G_.итератор() do G_.variables:insert(i) end ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 1 августа, 2015 Есть 2 компьютера, одного есть в оперативной памяти функция, как ее передать другому? Неясный вопрос. Ты хочешь извлечь байткод функции из окружения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 1 августа, 2015 Да, вроде того. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 1 августа, 2015 Неясный вопрос. Ты хочешь извлечь байткод функции из окружения? Только не байт-код. Байт-код в компилируемых языках, а у нас луа — интерпретируемый. (Хотя компилировался-бы, через LuaJIT) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 1 августа, 2015 Только не байт-код. Байт-код в компилируемых языках, а у нас луа — интерпретируемый. (Хотя компилировался-бы, через LuaJIT)Вообще-то в памяти уже висит именно байт-код, достаточно посмотреть дамп тех индексов, в которые загружается код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 1 августа, 2015 Много базара, мало кода. Как в lua получать указатели, если можно так сказать? Как работать с памятью через указатели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 1 августа, 2015 Через Cи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 1 августа, 2015 А у нас тут код на си и загрузка бинарных исполняемых файлов разрешена? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
swg2you 403 Опубликовано: 1 августа, 2015 Только не байт-код. Байт-код в компилируемых языках, а у нас луа — интерпретируемый. (Хотя компилировался-бы, через LuaJIT) Опять 25 ) load() на выходе дает скомпилированный чанк в форме байт-кода, а уже байт-код интерпретируется луа машиной. Луа интерпретирует скомпилированный байт-код программы а не текст!!!!111адинадин Много базара, мало кода. Как в lua получать указатели, если можно так сказать? Как работать с памятью через указатели? Никак. Даже загрузка байткода, полученного извне, изначально отключен по соображениям безопасности. Если очень хочется, то можно load с помощью которой все компилится, заключить в конверт с нужным функционалом. Но это имитация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 2 августа, 2015 Блин, а тут ТАКАЯ ИДЕЯ БЫЛА! Взять байт-код всех методов КБ и записать их в файл, как либу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 2 августа, 2015 Нет, идея была в другом. Всем спасибо) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 2 августа, 2015 (изменено) LeshaInc, lua-код транслируется в псевдо-байткод что бы виртуальная машина не занималась лищними действиями, то есть не парсила,и не анализировала строки, виртуальная машина копирует устройство озу, вместо имени функции адреса, короче ассемблер. Просто идёт превращение нам понятного языка, в инструкции последовательные. Изменено 2 августа, 2015 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 3 августа, 2015 load() в моде не грузит байт-код, поэтому для перехвата кода надо сделать надстройку к операционной системе, которая будет запускаемые файлы прогонять через себя. Как я понял, это нужно для параллельных вычислений, но это тупиковый путь, для ускорения лучше выполнять код на внешних ресурсах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор вопроса 34 Опубликовано: 4 августа, 2015 А из результата string.dump никак не получить объект? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Есть 2 компьютера, одного есть в оперативной памяти функция, как ее передать другому?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах