![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| kosmonaFFFt |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Доброго времени суток... Делаю курсак - компилятор с самопридуманного языка в Java байткод...
Требуется, чтобы в языке были функции... В связи с этим столкнулся с проблемой - как их лучше реализовать на уровне байткода/промежуточного кода... У мну есть мысль сделать функции статическими методами класса с программой, но не очень понял как сделать передачу параметров и возврат значений... Пока что остановился на таком варианте:
В общем как-то так... Если кто знает, подскажите насколько это правильно, и если не очень правильно, как сделать лучше... Заранее спасибо... -------------------- ![]() |
||||
|
|||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
Параметры надо толкнуть в стэк по очереди, потом вызвать метод - либо виртуал либо статик, а результат останется на стэке. Его, инструкцией сторр можно поместить в переменную.
есть такая штучка java ASM - API для создания классов в байткоде. Там есть приблуда которая генерит javacode под требуемый класс. или посмотри на www.jdbcpersistence.org (мой проект) там куча примеров по тому как вызывать методы( org.jdbcpersistence.codegen.JDBCPersistenceBytecodeGenerator) Удачи.. Это сообщение отредактировал(а) dobrolub - 8.1.2010, 02:58 |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Ага, спасибо за помощь...
Я думаю через libjavassist .class файлы делать... Не подскажешь что удобнее будет? -------------------- ![]() |
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
с javaassist у меня опыта не было, наверно тоже можно использовать. Я тогда выбирал между BCEL и ASM. Asm победил по критериям понятности API, размера библиотеки и минимального количества dependencies. В конце я просто взял только классы которые мне нужны и включил их в свои исходники.
|
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Забыл спросить, в каком порядке заталкивать в стек параметры надо?
-------------------- ![]() |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
http://java.sun.com/docs/books/jvms/second....doc.html#14787 |
|||
|
||||
| kosmonaFFFt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 538 Регистрация: 14.4.2008 Где: Иннополис Репутация: нет Всего: 5 |
Мда, не заметил, что это в примерах есть...
Спасибо... dobrolub, не мог бы ты написать простейший пример по созданию класса с Hello, world? -------------------- ![]() |
|||
|
||||
| dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
а это есть в примерах asma
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |