ΠΠ·Π»Π΅Π·Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° QBE β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ.
Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠΈΡ Π°Π½Π°Π»ΠΎΠ³ (LLVM), QBE ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π°, Π²ΠΈΡΠΎΠΊΠ° Π±ΡΡΠ·ΠΈΠ½Π° Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ (ΡΠ°ΠΌΠΈΡΡ QBE ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π° Core2Duo) ΠΈ ΠΏΠΎ-Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ API, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΎΠΏΡΠΎΡΡΠ΅Π½ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ (IL). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, QBE Π½Π΅ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠΈΡΠ»Π΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ Ρ Π²ΠΈΡΠΎΠΊΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄, Π½ΠΎ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° Ρ ΠΎΠ±ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ.
ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ½Π°ΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ x86_64, AArch64 ΠΈ RISC-V (rv64). Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ QBE, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π‘ΠΈ cproc, SCC, PACC, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ Hare ΠΈ Antimony. QBE ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΡΡΡΠ° ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ Π² ΠΠ½ΡΡΠΈΡΡΡΠ° Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π ΠΠ ΠΈΠΌ. Π.Π. ΠΠ²Π°Π½Π½ΠΈΠΊΠΎΠ².
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² Π½ΠΎΠ²ΠΈΡ ΡΠ΅Π»ΠΈΠΉΠ·:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Windows ABI;
- ΠΠΎΠ²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΊΠΎΡΡΠ²Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄. Π ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ QBE Π΅ ΡΡΠ΅Π΄Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 63% ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ GCC;
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° PIE (ΠΊΠΎΠ΄ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ°).
ΠΠΎΠ΄ΡΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° Π‘ΠΈ (C99) ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
