私は、Cortex-A8プロセッサ上のWindows Embedded Compact 7 ARMアセンブラを使用して、ARMWebサイトからのプリロード実装を備えたNEONメモリコピーを使用しています。
単語に揃えられていない値を関数に提供すると、データ型のずれの例外が発生することに気付きました
例えば:
; NEON memory copy with preload
ALIGN
LEAF_ENTRY NEONCopyPLD
PLD [r1, #0xC0]
VLDM r1!,{d0-d7} ;datatype misalignment
VSTM r0!,{d0-d7}
SUBS r2,r2,#0x40
MOV R0, #0
MOV PC, LR
ENTRY_END
size_t size = /* arbitrary */;
size_t offset = 1;
char* src = new char[ size + offset ];
char* dst = new char[ size ];
NEONCopyPLD( dst, src + offset, size );
memcpy( dst, src + offset, size ); /* works perfectly */
これはVLDMコマンドに期待されていますか?この記事では、この実装が単語に合わせた値に限定されているとは述べていません。修正可能ですか?もしそうなら、どのように?