LINUX.ORG.RU

Создание сегмента кода в рантайме?


0

0

У меня есть задача - создать во время выполнения программы новый сегмент кода, загрузить туда данные, а затем этот код выполнить. Проблема в том, что если я загружаю код в хип, то при попытке его выполнить получаю SIGNAL 0. Как сделать правильно?


> Как сделать правильно?

Использовать лисп :)

dave ★★★★★
()

Использовать Ruby?

urxvt ★★★★★
()

использовать ASM?

jeuta ★★★★
()
Ответ на: комментарий от Love5an

не особо))
но как сгенерить в нем кода на x86 в память и запустить на выполнение? (право, не знаю, даже интересно)

k0l0b0k ★★
()
Ответ на: комментарий от k0l0b0k

Наоборот, это их ниша.

использовать ASM?

Здесь советуют дельные языки, а твой совет вообще мимо корзины.

tia
()
Ответ на: комментарий от dave

>Не знаешь, а мнение, однако, имеешь :))

ну как обычно. так все-таки.
вот у меня пишется MIPS4 to x86(_64) JIT/VM. Чем Ruby и Lisp лучше тех же C/C++ для этой задачи? (код под MIPS не статичен, может постоянно меняться)

k0l0b0k ★★
()
Ответ на: комментарий от Love5an

немножко не то.
то что лисп умеет сам себя скомпилить/выполнить это известно.
будет ли это работать с той скоростью, ради которой затевается JIT чего-нибудь?

k0l0b0k ★★
()
Ответ на: комментарий от k0l0b0k

Это будет работать на уровне обычного машинного кода, то есть на уровне С с поправкай на рантайм, если там что-то такое в коде есть. И в большинстве случаем это будет сопоставимо с качественным JIT, фактически это и есть обычная компиляция по месту, то есть JIT.

ixrws ★★★
()
Ответ на: комментарий от ixrws

>Это будет работать на уровне обычного машинного кода, то есть на уровне С с поправкай на рантайм, если там что-то такое в коде есть. И в большинстве случаем это будет сопоставимо с качественным JIT, фактически это и есть обычная компиляция по месту, то есть JIT.

поверю на слово. но, я сравнивал интерпретатор команд MIPS на C с компиляцией на лету в x86 ASM - скорость увеличивалась в 9-10 раз, и как раз достигала необходимой (порядка 200 DMIPS).

k0l0b0k ★★
()

еще можно посмотреть исходники wine)

sergej ★★★★★
()
Ответ на: комментарий от dimon555

нет, у меня более благородные цели: запустить приложение(точнее игрушку) от iPhone на Nokia n900. Для этого нужно для начала распарсить mach-o формат от macosX на сегменты, и загрузить их в память. Как только попытался, тут же споткнулся о невозможность выполнять в хипе. Потому и возник вопрос.

wl
() автор топика
Ответ на: комментарий от wl

т.к. ты фактически пишешь загрузчик, то может возможно окажется полезным изучение исодников ld-linux.so

anonymous
()
Ответ на: комментарий от anonymous

спасибо, посмотрю. я пытался найти что-то подобное, но как-то заблудился в исходниках, не зная, в какую сторону копать

wl
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.