Espruino:Справочник по API/Класс E/nativeCall(): различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Функция E.nativeCall()<ref>[ www.espruino.com - ]</ref>= | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript" enclose="div"> | <syntaxhighlight lang="javascript" enclose="div"> | ||
E.nativeCall(addr, sig, data) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Параметры== | ==Параметры== | ||
* '''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]]: | |||
* [https://www.espruino.com/Assembler#line=142,143 Ассемблерная вставка] | |||
=См.также= | =См.также= |
Версия от 19:12, 6 декабря 2020
Функция 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:
См.также
Внешние ссылки
- ↑ [ www.espruino.com - ]