запрещено ли использование JIT (just-in-time) скомпилированного кода в приложении iOS для AppStore?

Я слышал, что скомпилированный код JIT не разрешен в iOS AppStore, потому что размещение исполняемого кода в куче запрещено. Это правда? Или просто слухи?

3 ответов


  1. устанавливаемый код не допускается ("или" является ключевым словом в 3.3.2). Все (кроме Javascript) должно быть статически связано.

  2. JIT компиляция в текст исходного кода Javascript, по-видимому, разрешена. (Не шутка, есть коммерческий компилятор, который делает это.) Компиляция в байт-код для выполнения интерпретатором, написанным Javascript и работающим в UIWebView, может запутать рецензентов достаточно, чтобы возможно отклонить приложение что.

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


JIT компиляция в текст исходного кода Javascript, по-видимому, разрешена. (Не шутка, есть коммерческий компилятор, который делает это.) Компиляция в байт-код для выполнения...

Я также сделал свои мысли о компиляторе (не JIT, но реальный язык программирования), работающем на iOS. Моя идея заключалась в использовании адресов для ассемблерных функций, реализующих псевдо-опкоды в качестве инструкций вместо "традиционного байт-кода" (1 байт на псевдо-код).

один регистр ARM зарезервирован как " указатель кода "(здесь называется" rCP"), указывающий на мой"байт-код". Последняя инструкция псевдо-опкод-функции - " ldmfd rCP!, {персональный компьютер."} Это означает, что последняя инструкция функции не является "возвратом", а переходом в следующий код операции.

используя этот метод, вы получаете очень быстрый "байт-код". Возможно, коммерческий компилятор работает так. Я не могу поверить, что есть JIT-компилятор, работающий с собственным кодом на iOS.


Это верно. Вы можете прочитать в стандартном соглашении iOS, которое необходимо принять при настройке регистрации разработчика:

3.3.2 приложение не может загружать или устанавливать исполняемый код. Интерпретируемый код может использоваться только в приложение, если все скрипты, код и переводчики упакованы в Приложение и не загружается. Этот единственным исключением из вышеизложенного является скрипты и код загружаются и запускаются Встроенный WebKit от Apple рамки.