Espruino:Справочник по API/Класс E/nativeCall(): различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки |
Myagkij (обсуждение | вклад) |
||
Строка 23: | Строка 23: | ||
==Описание== | ==Описание== | ||
{{Внимание1|Если вы плохо понимаете, то делаете, эта функция – отличный способ спровоцировать сбой [[Espruino]].}} | |||
Создает нативную функцию, выполняющую код, который находится по заданному адресу. Например, '''E.nativeCall(0x08012345,'double (double,double)')(1.1, 2.2)'''. | Создает нативную функцию, выполняющую код, который находится по заданному адресу. Например, '''E.nativeCall(0x08012345,'double (double,double)')(1.1, 2.2)'''. | ||
Строка 33: | Строка 33: | ||
Если задать в аргументе ''data'' несегментированную строку (flat string), она будет использована напрямую. В противном случае данные в ''data'' будут преобразованы в несегментированную строку и лишь потом использованы. | Если задать в аргументе ''data'' несегментированную строку (flat string), она будет использована напрямую. В противном случае данные в ''data'' будут преобразованы в несегментированную строку и лишь потом использованы. | ||
{{Примечание1|Эта функция не доступна для устройств с маленькой [[flash-память]]ю.}} | |||
== Примеры == | == Примеры == |
Текущая версия от 18:58, 24 июня 2023
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Функция E.nativeCall()[1]
Синтаксис
E.nativeCall(addr, sig, data)
Параметры
- addr – адрес функции в памяти (или смещение в data при наличии этого аргумента).
- sig – сигнатура функции, returnType (arg1,arg2,...). Допустимые типы: void, bool, int, double, Pin, JsVar.
- data – строка, содержащая саму функцию. В отсутствие этого аргумента в качестве абсолютного адреса будет использован addr. Это опциональный аргумент.
Возвращаемое значение
Нативную функцию.
Описание
Создает нативную функцию, выполняющую код, который находится по заданному адресу. Например, E.nativeCall(0x08012345,'double (double,double)')(1.1, 2.2).
При выполнении Thumb-функции вам почти наверняка надо будет задать «1» в самом младшем бите адреса.
Нет никакой гарантии, что будет использована именно заданная вами сигнатура, потому что есть некоторые ограничения на количество аргументов.
Если задать в аргументе data несегментированную строку (flat string), она будет использована напрямую. В противном случае данные в data будут преобразованы в несегментированную строку и лишь потом использованы.
Примеры
Эта функция используется в следующих статьях документации Espruino:
См.также
Внешние ссылки