1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 53
|
|
1 | |
Java JNI. Возврат из функций03.11.2014, 11:23. Показов 1816. Ответов 2
Метки нет (Все метки)
Пишу dll на ассемблере для подключения к Java через JNI. Не могу разобраться с принципом возврата результатов из нативных функций. Если функция возвращает int или byte, то для этого нужно в регистр EAX положить значение этого int или byte. Например, если в регистр положить 00000001, то функция вернет единицу. А что нужно сделать, чтобы функция возвращала float или String ? Если, в случае с float в регистр класть 4-х байтовое значение float, то результат возвращается как NAN. В случае со строками я кладу в регистр адрес начала строки (offset myString), но ява при этом выдает fatal error..
0
|
03.11.2014, 11:23 | |
Ответы с готовыми решениями:
2
JNI, передача и возврат указателя Java, Хорстманн, JNI Qt и JNI вызов java класса Взаимодействие с++ и Java без JNI |
03.11.2014, 20:34 | 2 |
Сообщение было отмечено Nerr как решение
Решение
float/double насколько я знаю, обычно, возвращаются на стеке сопроцессора.
Насчет String сложнее. Наверняка в eax возвращается указатель на объект. Проще всего будет написать на C, скомпилировать, дизассемблировать и посмотреть что получилось.
1
|
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 53
|
|
04.11.2014, 10:22 [ТС] | 3 |
Да действительно, float загружается командой fld на вершину стека сопроцессора, а потом командой fstp оттуда извлекается. turbanoff, спасибо! Уже в который раз меня выручаете=)
0
|
04.11.2014, 10:22 | |
04.11.2014, 10:22 | |
Помогаю со студенческими работами здесь
3
Запуск приложения Java через Delphi JNI Возврат из функций Возврат указателей объектов из функций Executing Java-code from C++-code via JNI Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |