Espruino:Справочник по API/Класс E/nativeCall()

Материал из Онлайн справочника
Версия от 18:58, 24 июня 2023; Myagkij (обсуждение | вклад) (→‎Описание)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция E.nativeCall()[1]

Синтаксис

E.nativeCall(addr, sig, data)

Параметры

  • addr – адрес функции в памяти (или смещение в data при наличии этого аргумента).
  • sig – сигнатура функции, returnType (arg1,arg2,...). Допустимые типы: void, bool, int, double, Pin, JsVar.
  • data – строка, содержащая саму функцию. В отсутствие этого аргумента в качестве абсолютного адреса будет использован addr. Это опциональный аргумент.

Возвращаемое значение

Нативную функцию.

Описание

Внимание!

Если вы плохо понимаете, то делаете, эта функция – отличный способ спровоцировать сбой Espruino.

Создает нативную функцию, выполняющую код, который находится по заданному адресу. Например, E.nativeCall(0x08012345,'double (double,double)')(1.1, 2.2).

При выполнении Thumb-функции вам почти наверняка надо будет задать «1» в самом младшем бите адреса.

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

Если задать в аргументе data несегментированную строку (flat string), она будет использована напрямую. В противном случае данные в data будут преобразованы в несегментированную строку и лишь потом использованы.

Примечание

Эта функция не доступна для устройств с маленькой flash-памятью.

Примеры

Эта функция используется в следующих статьях документации Espruino:

См.также

Внешние ссылки