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