создание исходного кода в процессе работы программы
От: Аноним  
Дата: 26.12.11 15:55
Оценка:
Здравствуйте! У меня такая вот дилемма.
Нужно писать программу (типа нейронной сети) которая состоит из маленьких модулей.
Причем. Состав и очередность модулей может быть разная.

1. Например если я заранее знаю какие модули и как будут вычислять я напишу так.
void MyFunction(double &INOUT_A, double &IN_B, double &OUT_E)
{
  /// Входные данные А - Б.
  ///======= 1 модуль =======
  double С = А + Б

  ///======= 2 модуль =======
  double D = C * A

  ///======= 3 модуль =======
  E = (D * B) ^ 2

  /// Выходные данные А - E
}


Скомпилирую этот код. И естественно он будет выполняться молниеносно (количество модулей может быть очень большим).

2. Теперь мне нужно чтобы в процессе работы уже скомпилированной программы. Она (программа) читала файл и определяла количество и порядок модулей. для расчета и вычисляла его.
Я собираюсь решать это с помощью классов.

Имеем базовый class NODE с виртуальной функцие calc()
От базового класса создаем набор модулей.

Теперь код будет выполняться следующим образом:
А) Создание массива ссылок базового класса NODE.
B) Заполнение его нужными элементами.
C) Связывание (линкование) входных и выходных данных в дочерних классах.

D) Циклический обход массива:

while(....)
{
  Node[i]->Calc();
}


Вроде все нормально будет работать.
Но
2.1. Выполняться этот обход массива будет много много раз.
2.2. Нужно как можно большее быстродействие.

3. Вопросы:
Можно ли как то создавать исходный код в процессе работы программы.

То есть. Я вижу это так.
3.1 Необходимо выделить необходимый объем памяти в программе.
3.2 Заполнение его кодом.
3.3 Получение ссылки на входные регистры, выходные регистры, и на основную функцию запуска расчета.
3.4 запускать эту функцию и наслаждаться таким же быстродействием как и в 1-ом примере.

4.
4.1 Скажите пожалуйста ссылки где такое могло быть реализовано.
4.2 Без Ассемблера это не реализовать?

Заранее спасибо за Ответы.
исходный код в процессе работы программы конвейер ассемблер
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.