LINUX.ORG.RU

Thumb-2 это всего-лишь расширение Thumb инструкций?

 , ,


0

1

Есть железка на omap 3621 (Cortex-A8). libc собрано для такой архитектуры/abi:

$ arm-none-eabi-readelf -A libc.so
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_optimization_goals: Aggressive Speed

А вот пользовательская библиотека, с которой нормально стыкуется libc и остальные. Нормально, в смысле, приложение запускается и работает.

$ arm-none-eabi-readelf -A libcr3engine-3-1-0.so
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "5TE"
  Tag_CPU_arch: v5TE
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_FP_arch: VFPv2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_enum_size: int
  Tag_ABI_optimization_goals: Aggressive Size
  Tag_DIV_use: Not allowed
Тут и архитектура другая, и vfp другой версии, и isa. Thumb-2, получается, только расширяет набор инстркций Thumb? А vfpv2 совместимо c v3 или просто в библиотеке не используются vfp инструкции и потому она работает?

Потому что обратная совместимость.

Код ARMv5TE/ARMv6 запускается и на ARMv7-A, и на ARMv8-A.

Либа была собрана для древнего ARMv5TE видимо в угоду совместимости со всякими там дохлоплатами на этой архитектуре и ARMv6.

Я бы пересобрал libcr3engine-3-1-0.so для ARMv7-A с NEON'ом и прочими наворотами. Работать быстрее должно. По-крайней мере при переходе с ARMv6 на ARMv7-A я заметил действительно хороший прирост в скорости работы приложения (3D-игра). ARMv5TE это совсем-совсем дно.

Thumb-2, получается, только расширяет набор инстркций Thumb?

Не уверен, что Thumb вообще в такой прикладной либе юзается.

А vfpv2 совместимо c v3 или просто в библиотеке не используются vfp инструкции и потому она работает?

http://infocenter.arm.com/help/topic/com.arm.doc.dui0472h/CJADDCIF.html

Ctrl+F «compatible»

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.