Попробуйте это:
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.FragmentToBeReplaced,theFragmentToBeAdded);
ft.commit();
Хорошо, сначала возьмите все свои фрагменты кода и осуществите рефакторинг их в их собственные функции. Таким образом, Ваш код переходит в:
void addOpcode(uint32_t *result, uint32_t L, uint32_t R) {
*result = L + R;
}
switch (opcode) {
case ADD:
addOpcode(&result, L, R);
break;
....
Хорошо, поэтому после выполнения этого Вашего интерпретатора должен все еще работать. Теперь возьмите все новые функции и разместите их в их собственный файл. Теперь скомпилируйте тот файл с помощью или llvm-gcc или лязга, и вместо того, чтобы сгенерировать собственный код компилируют его с помощью "cpp" бэкенда (-идут-cpp). Это сгенерирует код C++, который инстанцирует кода байта для единицы компиляции. Можно указать опции ограничить его определенными функциями и т.д. Вы, вероятно, хотите использовать "-cppgen модуль".
Теперь отступите, Ваш цикл интерпретатора склеивают вызовы к сгенерированному коду C++ вместо того, чтобы непосредственно выполнить исходный код, затем передают его некоторым оптимизаторам и собственному генератору кода. Gratz на JIT ;-) Вы видите пример этого в нескольких проектах LLVM, как vm_ops в llvm-lua.