ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Qualcomm ΠΎΡΠΊΡΡΠ»Π° ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° ELD, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² Π½Π°Π±ΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Qualcomm (Π½Π° Π±Π°Π·Π΅ LLVM) ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌ. Π ELD ΡΡΡΠ΅Π½Π° ΡΠ°ΠΊΠ°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°, ΠΊΠ°ΠΊ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ linker-ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ C++ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ BSD.
ΠΡΠΎΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ GNU linker, ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡΠ΅ΠΉ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΉ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ELD ΡΠ°ΡΡΡΠΈΡΠ°Π½Π° Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»ΡΠ³ΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½ΠΎΠ²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ². Π ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ Π±ΡΠΊΠ΅Π½Π΄Ρ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Qualcomm Hexagon NPU, AArch32, AArch64 ΠΈ RISC-V (c ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ Xqiu). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ MCLinker.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ (ΠΎΠΏΡΠΈΡ «—relocatable») ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅.
- Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ELF (Executable and Linking Format).
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (LTO — Link-Time Optimization) ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΡΡΡΠΎΠΊ.
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ GNU ld Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΠΏΡΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
- Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ°Π±ΠΎΡΡ Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΡΠΈΠ»ΠΈΡΠ°Ρ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° linker-ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΡΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ Π΄Π»Ρ GNU ld.
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΡ ΠΊΠ°ΡΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (map-ΡΠ°ΠΉΠ»ΠΎΠ²), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΡΡΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΡΠ°ΠΊ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΡΡΡΠΎΠ².
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ°Π΄ΠΈΠΈ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. ΠΠ»Π°Π³ΠΈΠ½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ.
- Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ (reproduce), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ tar-Π°ΡΡ ΠΈΠ²Ρ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π°ΡΡ ΠΈΠ²Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ — ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π°ΡΡ ΠΈΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
- Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π·Π°ΠΏΡΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΌΡΡΠΎΡΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Qualcomm ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ ELD ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°ΠΊΠΈΡ
ΠΎΠ±Π»Π°ΡΡΡΡ
, ΠΊΠ°ΠΊ ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ², ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ Π°Π½ΠΊΠ»Π°Π²ΠΎΠ² TrustZone, ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π΄Π»Ρ AI, 5G-ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ² ΠΈ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΡΡ
ΡΠ΅ΡΠ΅Π²ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Zephyr RTOS Π΄Π»Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ AArch32, AArch64 ΠΈ RISC-V, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Π½Π° Π±Π°Π·Π΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ RISC-V.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru