Как я делаю встроенный ассемблерный код на iPhone?

См. ?format:

> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000" 
>   
28
задан Hans Sjunnesson 30 October 2008 в 06:36
поделиться

3 ответа

Я заставил это работать благодаря некоторой внутренней справке в Apple Devforums , необходимо подписаться, если Вы - преданный разработчик iPhone.

Первая первая вещь, это __ asm __ () , не просто asm () .

, Во-вторых, по умолчанию, XCode генерирует цель компиляции, которая компилирует встроенный ассемблерный код против системы команд Ползунка ARM, таким образом usat не был распознан как надлежащая инструкция. Для фиксации этого действительно "Получите Информацию" о Цели. Прокрутите вниз к разделу "GCC 4.0 - Code Generation" и снятию флажка "Компиляцию для Ползунка". Тогда этот после отрывка скомпилирует очень хорошо при установке Активного SDK на "Устройство"

inline int asm_saturate_to_255 (int a) {
  int y;
  __asm__("usat %0, #8, %1\n\t" : "=r"(y) : "r"(a));
  return y;
}

Естественно теперь это не будет работать с IPhone Simulator. Но TargetConditionals.h имеет, определяет Вас, может #ifdef против. А именно, TARGET_OS_IPHONE и TARGET_IPHONE_SIMULATOR.

19
ответ дан plinth 14 October 2019 в 11:47
поделиться

Я пишу довольно мало ассемблерного кода Коры-A8 ARM. ЦП на iPhone является ARM11 (afaik), таким образом, базовая система команд является тем же.

, Что точно Вы ищете? Я мог дать Вам некоторые примеры, если Вы хотите.

<час>

РЕДАКТИРОВАНИЕ:

я просто узнал, что на iPhone необходимо использовать llvm-gcc компилятор. Насколько я знаю, что это должно понять встроенный ассемблерный синтаксис от GCC. Раз так встроенные ассемблерные учебные руководства всего ARM будут работать над iPhone также.

Вот очень минимальная встроенная ассемблерная функция (в C). Вы могли сказать мне, если это компилирует и работает над iPhone? Если это работает, я могу разглагольствовать немного, как сделать, полезный материал в ARM встраивает ассемблер, специально для архитектуры ARMv6 и расширений DSP.

inline int saturate_to_255 (int a)
{
  int y;
  asm ("usat %0, #8, %1\n\t" : "=r"(y) : "r"(a));
  return y;
}

должно быть эквивалентно:

inline int saturate_to_255 (int a)
{
  if (a < 0) a =0;
  if (a > 255) a = 255;
  return a;
}
11
ответ дан Nils Pipenbrinck 14 October 2019 в 11:47
поделиться

Ползунок рекомендуется для приложения, которые не требуют тяжелой операции плавающей. Ползунок делает размер кода меньшим и приводит также к более быстрому выполнению кода.

, Таким образом, необходимо только выключить Ползунок для приложения как 3D игры...

0
ответ дан catlan 14 October 2019 в 11:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: