Использование инструкций ARM NEON на устаревшем ассемблере

У меня есть проект Visual Studio 2008 C++03 для Windows Mobile 6, в котором я хотел бы реализовать версию memcpy для ARM-NEON.

Информационный центр ARM любезно предоставляет реализацию:

; NEON memory copy with preload
NEONCopyPLD
      PLD [r1, #0xC0]
      VLDM r1!,{d0-d7}
      VSTM r0!,{d0-d7}
      SUBS r2,r2,#0x40
      BGE NEONCopyPLD

К сожалению, ассемблер ARM VS2008 не поддерживает набор инструкций NEON (хотя мой процессор основан на ARM Cortex-A8).

Могу ли я каким-либо образом предоставить байт-код для этих инструкций, чтобы ARM Assembler воспринял его? Могу ли я DCB или DCD ввести правильные значения?

Спасибо


person PaulH    schedule 07.12.2012    source источник


Ответы (1)


Вы можете использовать директиву DCI для «шестнадцатеричных инструкций»:

http://msdn.microsoft.com/en-us/library/ms863606.aspx

person Igor Skochinsky    schedule 07.12.2012
comment
Возможно, я использую его неправильно, но когда я заменяю команду VLDM на DCI 0xE1A00000 ; mov r0, r0 (заполнитель, пока я не могу получить код операции VLDM), я получаю сообщение об ошибке A0051: неизвестный код операции: DCI - person PaulH; 08.12.2012
comment
руководство по ассемблеру RVCT перечисляет несколько. В режиме ARM DCD эквивалентно DCI; в качестве альтернативы DCB также должен работать. - person tc.; 08.12.2012
comment
Спасибо. У меня есть время, чтобы найти коды операций ARM для LVDM и VSTM (инструкции NEON). Можете ли вы предложить ресурс для тех? ARM ARM имеет ограниченный доступ к информационному центру. .arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406b/ - person PaulH; 08.12.2012
comment
Ничего себе нашел. регистрация на сайте ARM бесплатна - person PaulH; 08.12.2012
comment
Скомпилируйте код с помощью gcc, затем используйте objdump для получения машинного кода. - person auselen; 08.12.2012