С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 1
Регистрация: 08.06.2013
Сообщений: 53
1

Java JNI. Возврат из функций

03.11.2014, 11:23. Показов 1816. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу dll на ассемблере для подключения к Java через JNI. Не могу разобраться с принципом возврата результатов из нативных функций. Если функция возвращает int или byte, то для этого нужно в регистр EAX положить значение этого int или byte. Например, если в регистр положить 00000001, то функция вернет единицу. А что нужно сделать, чтобы функция возвращала float или String ? Если, в случае с float в регистр класть 4-х байтовое значение float, то результат возвращается как NAN. В случае со строками я кладу в регистр адрес начала строки (offset myString), но ява при этом выдает fatal error..
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2014, 11:23
Ответы с готовыми решениями:

JNI, передача и возврат указателя
Все здрасьте. Использую JNI, хочу передавать между java и с++ указатель. Какой java-тип...

Java, Хорстманн, JNI
Здравствуйте. Заканчиваю чтение 9-ого издания книги Хорстманна. Последняя глава -...

Qt и JNI вызов java класса
Всем привет, недавно делал Android приложение, использовал Jni. Вроде было не сильно сложно. Сейчас...

Взаимодействие с++ и Java без JNI
Необходимо сделать синтезатор речи на java, однако в адрюше 2.3 это можно сделать только на с++....

2
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
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
Цитата Сообщение от turbanoff Посмотреть сообщение
float/double насколько я знаю, обычно, возвращаются на стеке сопроцессора.
Да действительно, float загружается командой fld на вершину стека сопроцессора, а потом командой fstp оттуда извлекается. turbanoff, спасибо! Уже в который раз меня выручаете=)
0
04.11.2014, 10:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2014, 10:22
Помогаю со студенческими работами здесь

Запуск приложения Java через Delphi JNI
Здравствуйте уважаемые программисты. Не могли бы вы мне показать как можно(пример) запустить...

Возврат из функций
Подскажите, как переделать, чтобы прога возвращала из функций несколько значений (массив a от N и N...

Возврат указателей объектов из функций
Всем хай. Решил вот освоить C++. Написал вот такой код: #include <iostream> #include <cstdlib>...

Executing Java-code from C++-code via JNI
Всем привет! Убежден, что ошибся с выбором раздела для публикации вопроса, но честно говоря, не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru