en
Feedback
PLComp

PLComp

Open in Telegram

Π―Π·Ρ‹ΠΊΠΈ ΠΈ компиляторы: вопросы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ синтаксиса Π΄ΠΎ пороТдСния машинного ΠΊΠΎΠ΄Π°. Авторы: @vekazanov @igorjirkov @true_grue @clayrat @eupp7 @alexanius @AntonTrunov @GabrielFallen @graetestofnoldor

Show more
The country is not specifiedThe category is not specified
485
Subscribers
No data24 hours
-17 days
+530 days
Posts Archive
Π‘Π°ΠΌΡ‹ΠΉ Ρ€Π°Π½Π½ΠΈΠΉ ΠΈ задавший Π³Π»Π°Π²Π½Ρ‹Π΅ направлСния исслСдований Π² области компиляторов ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ это, бСзусловно, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор языка Fortran I. Π Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Π½ΠΈΠΌ вСлись Π² сСрСдинС 1950-Ρ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π² компиляторС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ устарСли, Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, остроумный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ распрСдСлСния рСгистров продСрТался Π² Fortran Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚. РаспрСдСлСниС рСгистров Π² Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅ 1 проводится Π² Π΄Π²Π° этапа. На Π²Ρ…ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ этапа поступаСт список инструкций, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… рСгистров. Бписок разбиваСтся Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строится Π³Ρ€Π°Ρ„ ΠΏΠΎΡ‚ΠΎΠΊΠ° исполнСния. ΠŸΡ€ΠΈ этом Π²ΠΎ всСх вСтвлСниях (IF, вычисляСмых GOTO) программисты Π½Π° языкС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ сами (!) Ρ€Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ‚Π²Π΅ΠΉ. ВСроятности впослСдствии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для модСлирования частоты Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠ΅Ρ‚Π΄ΠΎΠΌ ΠœΠΎΠ½Ρ‚Π΅-ΠšΠ°Ρ€Π»ΠΎ. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ этапС, начиная ΠΎΡ‚ самого "горячСго" ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², строится Ρ€Π΅Π³ΠΈΠΎΠ½, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ проводится распрСдСлСниС рСгистров. Π Π΅Π³ΠΈΠΎΠ½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ самым горячим ΠΈΠ· сосСдних Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ упираСтся Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ ΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Π»ΠΎ/ΠΊΠΎΠ½Π΅Ρ† Π³Ρ€Π°Ρ„Π°. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ обрабатываСтся Π·Π°ΠΊΠΎΠ»ΡŒΡ†ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹. Π‘Π°ΠΌΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ рСгистров происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½Π°; ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹Ρ‚Π΅ΡΠ½ΡΡŽΡ‚ΡΡ рСгистры, Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ вострСбованныС Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части Ρ€Π΅Π³ΠΈΠΎΠ½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹Π΅). ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ…ΡΡ историСй компиляторов: https://www.cs.fsu.edu/~lacher/courses/COT4401/notes/cise_v2_i1/fortran.pdf - ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ соврСмСнный ΠΎΠ±Π·ΠΎΡ€ компилятора http://archive.computerhistory.org/resources/text/Fortran/102663113.05.01.acc.pdf - ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ публикация 1957-Π³ΠΎ Π³ΠΎΠ΄Π°. #history #fortran #registerallocation

Next-gen Haskell Compilation Techniques На ΠΌΠΎΠΉ взгляд, прСзСнтация интСрСсна Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠΌ компиляторщикам. Автор ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ массу акадСмичСских ссылок. Π’ Ρ†Π΅Π»ΠΎΠΌ, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ соврСмСнного компилятора. МнС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ идСя с использованиСм Datalog, которая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сСбя ΠΎΠΏΡ€Π°Π²Π΄Π°Π»Π° ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ статичСского Π°Π½Π°Π»ΠΈΠ·Π°. https://docs.google.com/presentation/u/0/d/1g_-bHgeD7lV4AYybnvjgkWa9GKuP6QFUyd26zpqXssQ/mobilepresent #ghc #grin

И ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡŽ https://t.me/plcomp/64 ΠΏΠΎ "A Survey on Register Allocation". Π‘Ρ‚Π°Ρ‚ΡŒΡ-ΠΎΠ±Π·ΠΎΡ€ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ распрСдСлСния рСгистров. Автор стараСтся простыми словами ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π½Π° Ρ…ΠΎΠ΄Ρƒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡˆΠ°Π³Ρƒ ΡΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ источниками. Π’ этом смыслС содСрТаниС ΠΎΠ±Π·ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΄ΠΎΡ…ΠΎΠ΄Ρ‡ΠΈΠ²Ρ‹ΠΌ. Но, казалось Π±Ρ‹, это Π½Π΅ большоС достиТСниС -- Π½Π° Ρ‚Π΅ΠΌΡƒ распрСдСлСния рСгистров Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π² извСстных ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ…, Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ LLVM, каТСтся, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π°ΠΊΡ€Ρ‹Π» эту Ρ‚Π΅ΠΌΡƒ для компиляторщиков, ΠΌΠΎΠ», Π±Π΅Ρ€ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈ Π½Π΅ Π΄ΡƒΠΌΠ°ΠΉ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ устроСно. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρƒ ΠΊ сути. Fernando M Q Pereira, Π°Π²Ρ‚ΠΎΡ€ рассматриваСмого ΠΎΠ±Π·ΠΎΡ€Π°, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹Ρ… соврСмСнных спСциалистов Π² области распрСдСлСния рСгистров. F.M.Q. β€” Π°Π²Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Puzzle Solving ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ‚Π΅Π½Ρ‚ Π½Π° Π½Π΅Π³ΠΎ. Π§Ρ‚ΠΎ касаСтся самого ΠΎΠ±Π·ΠΎΡ€Π°, Ρ‚ΠΎ это, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ для компиляторщика-профСссионала, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ вопросы пороТдСния Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, особСнно для Π½Π΅Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ…, Π½Π΅ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€. И ΠΏΡ€ΠΈ всСй своСй внСшнСй доходчивости это Π½Π΅Π»Π΅Π³ΠΊΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ ΠΎΠ±Π·ΠΎΡ€Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ классичСскиС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅, спСциализированныС. ΠŸΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ LLVM Π²Ρ‹ ΠΈΡ… Π½Π΅ встрСтитС. Π Π΅Ρ‡ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎ распрСдСлСнии рСгистров прямо Π² Ρ„ΠΎΡ€ΠΌΠ΅ SSA, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Π±ΠΎΠ»Π΅Π΅ экзотичСских Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°Ρ…, Π² Π΄ΡƒΡ…Π΅ PBQP. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€, поэтому Π°Π²Ρ‚ΠΎΡ€ Π½Π΅ скупится Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Ρ… тСорСтичСских Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². На этот счСт, Π² частности, Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ†Π΅Π½Π½Ρ‹ΠΉ, Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎ NP-ΠΏΠΎΠ»Π½Ρ‹ΠΌ (соврСмСнным!) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΈΠ· области распрСдСлСния рСгистров. #registerallocation

Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ сотСн ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ соврСмСнных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² дСсятках рСгистров Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… процСссоров - ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языков высокого яровня. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π·Π°Π΄Π°Ρ‡Π° распрСдСлСния рСгистров являСтся NP-ΠΏΠΎΠ»Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ мноТСство эвристичСских ΠΈ частичных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. "A survey on register allocation" - ΠΎΠ±Π·ΠΎΡ€ Ρ‚Π΅ΠΌΡ‹ Π Π  Π½Π° 2008 Π³ΠΎΠ΄ с пояснСниСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈ ΠΈ пСрСчислСниСм Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅. Много внимания удСляСтся Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² раскраски Π³Ρ€Π°Ρ„Π°, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ сканирования (linear scan) ΠΈ пСрспСктивным Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌ (цСлочислСнноС Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, multi-commodity flow problem ΠΈ Π΄Ρ€.). Π’ 2008 Π³ΠΎΠ΄Ρƒ всС ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ компиляторы ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΊ использованию Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… прСдставляний со статичСски ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ присваиваниСм (SSA). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ СстСствСнно, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΎΠ±Π·ΠΎΡ€Π° посвящСна Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π² Π Π  свойств ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠ΅Π³ΠΎ прСдставлСния ΠΈ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΊ Π½Π΅ΠΌΡƒ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±Π·ΠΎΡ€Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ лСгковСсноС локальноС (Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²) Π Π  ΠΈ тяТСлоС Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π Π ; Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго популярныС Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… компиляторах Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» написан доступно ΠΈ явно ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² курс Π΄Π΅Π»Π° ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΊΡƒΡ€ΡΠ½ΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ аспирантов; Π°Π²Ρ‚ΠΎΡ€ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ разбираСтся Π² ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅, Π½ΠΎ ΠΈ ΡƒΠΌΠ΅Π΅Ρ‚ Π΅Π³ΠΎ донСсти. #registerallocation #survey http://compilers.cs.ucla.edu/fernando/publications/drafts/survey.pdf

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ PLComp с прСдстоящими ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ! ΠŸΠΎΠ΄Π²Π΅Π΄Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ‚ΠΎΠ³ΠΈ этого Π³ΠΎΠ΄Π°. 1. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ, Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΎΠΌΠ° HOPL. https://t.me/plcomp/6 Π—Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ для всСх, ΠΊΡ‚ΠΎ интСрСсуСтся историСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ЯП. 2. Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° E-Graphs для создания систСм ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ синтСза ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. https://t.me/plcomp/8 ИмСнно Π² этом Π³ΠΎΠ΄Ρƒ появились доступныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ E-Graphs, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ постСпСнного внСдрСния ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² компиляторы. 3. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ примСнСния SyGuS (синтаксичСски-управляСмый синтСз ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ) Π² компиляторах. Для BPF (https://t.me/plcomp/51), для сСтСвых процСссоров (https://dl.acm.org/doi/abs/10.1145/3387514.3405852) ΠΈ для DSP (https://www.cs.utexas.edu/~bornholt/papers/diospyros-lctes20.pdf ). Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π³ΠΎΠ΄Ρƒ, надСюсь, ΠΌΡ‹ Π² PLComp Ρ‚Π°ΠΊΠΆΠ΅ смоТСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° основныС события Π² компиляторной/языковой Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Пока ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ "Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅", ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСдстоящих ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ. 1. ASPLOS 2021. https://asplos-conference.org/papers/ 2. POPL 2021. https://popl21.sigplan.org/program/program-POPL-2021 3. CGO 2021. https://conf.researchr.org/info/cgo-2021/accepted-papers #conf

Π Π°Π±ΠΎΡ‚Π° Strategic Tree Rewriting in Attribute Grammars заслуТиваСт внимания ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ объСдинСния стратСгичСского пСрСписывания Ρ‚Π΅Ρ€ΠΌΠΎΠ² с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°ΠΌΠΈ. https://www-users.cs.umn.edu/~evw/pubs/kramer20sle/kramer20sle.pdf Π’ послСднСС врСмя интСрСс ΠΊ Π·Π°Π±Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π½Ρ‹ΠΌ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°ΠΌ (АГ), ΠΏΠΎΡ…ΠΎΠΆΠ΅, вновь возрастаСт. Напомню, Ρ‡Ρ‚ΠΎ АГ, Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π”. ΠšΠ½ΡƒΡ‚ΠΎΠΌ Π΅Ρ‰Π΅ Π² 1968 Π³ΠΎΠ΄Ρƒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ элСгантным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ (статичСской) сСмантики ΠΈ Π½Π΅ сводятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ лишь ΠΊ сСмантичСским дСйствиям ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ YACC. Π’ случаС АГ Ρƒ нас, Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ синтСзированныС, Ρ‚Π°ΠΊ ΠΈ унаслСдованныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΡ‡Π΅ΡΡ‚ΡŒ контСкст (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π½) ΠΏΡ€ΠΈ сСмантичСских вычислСниях. Π‘Π°ΠΌΠΈ ΠΆΠ΅ вычислСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° Π³Ρ€Π°Ρ„Π΅, ΠΏΠΎ готовности Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²-Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². БущСствуСт ряд соврСмСнных систСм быстрого прототипирования DSL-компиляторов с использованиСм АГ, это, Π² частности, JastAdd, Kiama ΠΈ Silver. Π’ рассматриваСмой ΡΡ‚Π°Ρ‚ΡŒΠ΅ систСма Silver (http://melt.cs.umn.edu/silver/ ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стратСгий Π² Π²ΠΈΠ΄Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка. Π—Π°Ρ‡Π΅ΠΌ это Π½ΡƒΠΆΠ½ΠΎ? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ стратСгичСского пСрСписывания тяТСло Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с контСкстной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, классичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‚ E. Visser ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ динамичСскоС созданиС ΠΏΡ€Π°Π²ΠΈΠ» Π² зависимости ΠΎΡ‚ контСкста, Ρ‡Ρ‚ΠΎ Π½Π΅ назовСшь элСгантным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. На ΡƒΡ€ΠΎΠ²Π½Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² с контСкстом Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ прСобразования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ с использованиСм стратСгий. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ дСмонстрируСтся ряд ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Ρ‚Π°ΠΊΠΎΠ³ΠΎ "смСшанного" ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…: оптимизация рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° основС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… БрТозовского ΠΈ нормализация for-Ρ†ΠΈΠΊΠ»Π° для Halide-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ языка. Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, насколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ окаТСтся ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, Π½ΠΎ сама ΠΏΠΎ сСбС систСма Silver Π² любом случаС прСдставляСт интСрСс [1]. 1. Π―Π·Ρ‹ΠΊ AbleC (Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ C11): http://melt.cs.umn.edu/ableC/ #semantics #ag #dsl #stratego

Π’ срСдС компиляторщиков ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ утвСрТдСния Π² Π΄ΡƒΡ…Π΅ "SSA это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅" ΠΈ "Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π½Π΅Ρ‚ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ phi-функциями ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ". Π‘ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠΉ ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния различия, всС-Ρ‚Π°ΠΊΠΈ, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ. Π’ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ этих Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ со сравнСниСм ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ компилятора: http://blog.ezyang.com/2020/10/the-hidden-problem-with-basic-block-procedures-in-ssa/ Π”ΠΎΠ±Π°Π²Π»ΡŽ, Ρ‡Ρ‚ΠΎ нСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· этих прСдставлСний Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° (см. Ρ‚Π°ΠΊΠΆΠ΅ https://news.ycombinator.com/item?id=24872752 ). Но, Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ использования Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² высокоуровнСвых IR ΠΈ для ΠΌΠ΅ΠΆΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, Π° phi-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ -- Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… прСдставлСниях (Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ΠΎΠ² Π² описании Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ схСмы). #ssa

https://www.jeffsmits.net/assets/articles/sle20-paper4.pdf Gradually Typing Strategies Π‘Ρ‚Π°Ρ‚ΡŒΡ рассказываСт ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ популярной Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ постСпСнной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ (Gradual Typing) Π² Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ области -- ΠΊ языку пСрСписывания Ρ‚Π΅Ρ€ΠΌΠΎΠ² Stratego (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для "program normalization, type checkers, program analyses, code generators, and more"). НСсмотря Π½Π° отсутствиС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² Stratego Π΄ΠΎ сСго ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΎΠ½ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ послуТил для вдохновСния Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² Haskell Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° SYB. ИспользованиС Gradual Typing (постСпСнной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ) ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ двумя Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ -- обратная ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Stratego (Π² составС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Stratego/XT ΠΈ Spoofax) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² production-систСмах, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠ°ΠΊ Π² Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ (researchr.org, conf.researchr.org, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠ½Π»Π°ΠΉΠ½-курсов TU Delft), Ρ‚Π°ΠΊ ΠΈ Π² индустрии (Π³Π΄Π΅-Ρ‚ΠΎ Π² Π½Π΅Π΄Ρ€Π°Ρ… Oracle Labs). Π’Ρ‚ΠΎΡ€ΠΎΠΉ -- высокая "Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ" пСрСписывания Ρ‚Π΅Ρ€ΠΌΠΎΠ², которая Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ (Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ скаТСт "эксплуатируСтся") для (Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ) пороТдСния Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΎΠ² ΠΈ прСвращСния ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‡Π° ослоТняСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Π² Stratego ΠΏΡ€Π°Π²ΠΈΠ» пСрСписывания "Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка" (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… "стратСгиями пСрСписывания"), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° пСрСписывания (ΠΈΠ»ΠΈ стратСгии). ΠžΡ‚ΡΡŽΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ понятиС Type-Preserving стратСгий, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Higher-Kinded Types. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ "ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ…" Π²ΠΎ врСмя исполнСния прокси-Ρ‚ΠΈΠΏΠΎΠ² для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ накапливания Π»ΠΈΡˆΠ½ΠΈΡ… динамичСских ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΡ€Π°Π²ΠΈΠ» пСрСписывания ΠΈΠ· статичСски-Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… стратСгий Π² динамичСски-Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ систСмы Ρ‚ΠΈΠΏΠΎΠ² Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ (ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ассСмблСр для Java-Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°) продСмонстрировала Π΄Π²Π° достаточно ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°: Π°) ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ динамичСский ΠΊΠΎΠ΄ написан Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Π±Ρ‹Π» статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, поэтому Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ явными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ приходится ΠΏΡ€ΠΈ этом Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ; Π±) ΠΏΠ»ΠΎΡ…ΠΎ протСстированный динамичСский ΠΊΠΎΠ΄ содСрТит ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΉΠΏ-Ρ‡Π΅ΠΊΠ΅Ρ€ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ списка вмСсто элСмСнта β€” классика, сам Π½Π° Ρ‚Π°ΠΊΠΎΠΌ попадался). #stratego #spoofax #gradual #types

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ распрСдСлСния рСгистров Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ сканированиСм (Linear Scan Register Allocation, 1999) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π° ΠΆΠΈΠ²Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°Ρ… (live intervals) ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ спискС инструкций. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ списка ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€ индСксов инструкций Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ врСмя ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, поэтому исслСдоватСли ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ явно список ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ². Авторы Efficient Global Register Allocation (2020) ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ сСмСйства, Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π° Π³Ρ€Π°Ρ„Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° исполнСния (control flow graph). ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ здСсь Π΄Π²Π΅: 1. Бписок ΠΆΠΈΠ²Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² здСсь ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ нСявно, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ инструкций Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠΎΠ². 2. ΠŸΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ инструкциям позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² явном Π²ΠΈΠ΄Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹, Π½ΠΎ ΠΈ Π²Ρ‹ΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ рСгистры Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠΎΠ², Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ "пустот Π² Тивости" (liveness holes). Алгоритм сравним ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ рСализациями Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ сканирования, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ выигрывая Π² рСсурсах Π½Π° этапС компиляции. Из Ρ€Π°Π±ΠΎΡ‚Ρ‹ слСдуСт, Ρ‡Ρ‚ΠΎ основноС прСимущСство ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² возмоТностях ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ сканирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ рСгистрового Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° dex для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ART, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Android. https://arxiv.org/pdf/2011.05608.pdf #registerallocation #linearscan #dex #art #android

РаспрСдСлСниС рСгистров - ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π° любого ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилятора. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ Linear Scan Register Allocation (1999) Π±Ρ‹Π» прСдставлСн ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Π΅ΠΉΡˆΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² распрСдСлСния рСгистров. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ Π½Π° основС раскраски Π³Ρ€Π°Ρ„ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ сканирования отличаСтся простотой Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, высокой ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ самого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Авторы ΠΏΠΈΡˆΡƒΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, прСдставлСнный Π² ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΊΠΎΠ΄, лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠΉ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ Π½Π° основС раскраски Π³Ρ€Π°Ρ„ΠΎΠ². Благодаря своим свойствам Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ стал стандартным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π² динамичСских (just-in-time) ΠΈ лСгковСсных компиляторах. Из извСстных компиляторов Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ сканированиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² luajit ΠΈΠ»ΠΈ Hotspot. #history #registerallocation #linearscan

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ GNU Emacs Π² скором Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ компилятор для своСго языка Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Emacs Lisp. Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ Andrea Corallo Π·Π° послСдний Π³ΠΎΠ΄ построил Π½Π° Π±Π°Π·Π΅ libgccjit компилятор, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ достойный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ elisp-benchmarks. Π£ΠΆΠ΅ сСйчас компилятор готовится ΠΊ вливанию Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ рСпозитория GNU Emacs. ΠŸΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡ Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° Linux Plumbers Conference 2020: http://akrl.sdf.org/Kludging_LPC_2020.pdf Π”Π½Π΅Π²Π½ΠΈΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: http://akrl.sdf.org/gccemacs.html ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ (Π² ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅) состояния Π²Π΅Ρ‚ΠΊΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43725

(Π­Ρ‚ΠΎ ΠΌΠΎΠΉ старый ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ, Π½ΠΎ интСрСс, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ каТСтся, ΠΎΠ½ всС Π΅Ρ‰Π΅ прСдставляСт) НиТС я Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ список полновСсных ΠΊΠ½ΠΈΠ³ ΠΏΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ вопросам компиляции. Π­Ρ‚ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π»ΠΈ Π»ΠΈΡ‡Π½ΠΎ ΠΌΠ½Π΅. НадСюсь, ΠΎΠ½ΠΈ окаТутся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ ΠΈ Π²Π°ΠΌ. 1. Automatic Algorithm Recognition and Replacement. A New Approach to Program Optimization (https://mitpress.mit.edu/books/automatic-algorithm-recognition-and-replacement?cr=reset). Π’Π΅ΠΌΠ° распознавания Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½Π°. Но пСрспСктивы здСсь самыС Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠ΅. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², автоматичСскоС распараллСливаниС ΠΈ ΠΏΡ€ΠΎΡ‡. Π’Π΅ΡΡŒΠΌΠ° Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΡŽΡ‰Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. 2. Reasoning About Program Transformations. Imperative Programming and Flow of Data. (https://www.springer.com/us/book/9780387953915). ΠžΡ‡Π΅Π½ΡŒ нСтипичная ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΈ прСобразованиям ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”ΠΎΡ…ΠΎΠ΄Ρ‡ΠΈΠ²ΠΎ написано, Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ стСсняСтся Π±Ρ‹Ρ‚ΡŒ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π² ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ. РассматриваСтся Π² Ρ‚ΠΎΠΌ числС ΠΏΠΎΠ»ΠΈΡΠ΄Ρ€Π°Π»ΡŒΠ½Π°Ρ модСль ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. 3. Instruction Selection. Principles, Methods, and Applications. (https://www.springer.com/us/book/9783319340173). Π’Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ, эницклопСдичСского ΠΎΠ±Π·ΠΎΡ€Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ инструкций Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ Π΄Π°Π²Π½ΠΎ. Автор систСматизировал Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, использовал Π² ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ историчСский контСкст. 4. Partial Evaluation and Automatic Program Generation (https://www.itu.dk/~sestoft/pebook/). Π’ нашС врСмя всС Ρ‡Π°Ρ‰Π΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π°Π²Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π’ΡƒΡ€Ρ‡ΠΈΠ½Π°, Π€ΡƒΡ‚Π°ΠΌΡƒΡ€Ρ‹, Π•Ρ€ΡˆΠΎΠ²Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… исслСдоватСлСй Π² области частичных вычислСний/мСтапрограммирования. Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, послС прочтСния ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π² Π±Π»ΠΎΠ³Π΅ с ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΉ Π€ΡƒΡ‚Π°ΠΌΡƒΡ€Ρ‹ (PyPy, Truffle ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), нСлишнС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ эту ΠΊΠ½ΠΈΠ³Ρƒ, Π³Π΄Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ всС эти Ρ‚Π΅ΠΌΡ‹.

ΠžΡ‡Π΅Ρ€Π΅Π΄Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΡ‚ John Regehr со Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ Π½Π° Ρ‚Π΅ΠΌΡƒ супСроптимизации. Dataflow-based Pruning for Speeding up Superoptimization https://www.cs.utah.edu/~regehr/dataflow-pruning.pdf Π—Π°ΠΌΠ΅Ρ‚Π½ΠΎ, ΠΊΠ°ΠΊ пСрвая эйфория ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматичСского примСнСния SMT-Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»Ρ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° CEGIS ΡƒΡ…ΠΎΠ΄ΠΈΡ‚. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, для Π·Π°Π΄Π°Ρ‡ рСалистичных размСрностСй всС Ρ€Π°Π²Π½ΠΎ приходится ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Ссли Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ поиска с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ эвристик ΠΈΠ· ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, Ρ‚ΠΎ хотя Π±Ρ‹ Π΅Π΅ элСмСнты -- ΠΈΠ½Π°Ρ‡Π΅ SMT-Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»ΡŽ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ тяТСло. ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ идСя Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² -- ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° Π²Ρ…ΠΎΠ΄ SMT-Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»ΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ ΠΈΠ· пространства поиска, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ эту Π½Π΅Π΄ΠΎΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Ρ†Π΅Π»ΠΎΠ΅ сСмСйство ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ) ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° соотвСтствиС спСцификации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ абстрактной ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ (Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ known bits, int. ranges ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Π’ Ρ‚ΠΎΠΌ числС, Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… тСстовых Π²Ρ…ΠΎΠ΄Π°Ρ…. Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΉ части ΡΡ‚Π°Ρ‚ΡŒΠΈ Π΅ΡΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ соврСмСнного полоТСния Π΄Π΅Π» Π² области синтСза ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. #smt #analysis #synthesis

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² компиляторС IR выбираСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ класса Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€. Но Π±Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΆΠ΅ само абстрактноС IR ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ влияниС Π½Π° Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ процСссора? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ сущСствуСт, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ€Π΅Ρ‡ΡŒ здСсь Π½Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ конструкций Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка. НиТС Π΄Π²Π° Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. BasicBlocker: Redesigning ISAs to Eliminate Speculative-Execution Attacks https://arxiv.org/pdf/2007.15919.pdf Π’ этой Ρ€Π°Π±ΠΎΡ‚Π΅ прСдлагаСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ ISA процСссора ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‰ΡƒΡŽ Π½Π°Ρ‡Π°Π»ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ участка (basic block) с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρ‹. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для прСдотвращСния Spectre-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π°Ρ‚Π°ΠΊ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Ρ‚Ρ‹ абстрактного ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π³Ρ€Π°Ρ„Π° (CFG) ΠΏΡ€ΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² машинном ΠΊΠΎΠ΄Π΅. Hardware Acceleration for Programs in SSA Form https://pp.ipd.kit.edu/uploads/publikationen/mohr13cases.pdf Π’ соврСмСнных компиляторах Ρ„ΠΎΡ€ΠΌΡƒ SSA ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ»Π³ΠΎ, насколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ Ρ„Π°Π·Ρƒ распрСдСлСния рСгистров. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ SSA приходится Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ это достаточно Π±ΠΎΠ»Π΅Π·Π½Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ формирования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. ОсобСнно это касаСтся phi-инструкций, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ копирования/пСрСстановки рСгистровых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. А Ссли ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ phi-ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ? ΠŸΡ€ΠΈ этом вмСсто Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ копирования часто ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ пСрСстановками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ рСгистров. Π—Π΄Π΅ΡΡŒ Π² ISA процСссора ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Ρ‚Ρ‹ абстрактной phi-инструкции ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ SSA. #ssa #isa

ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π²Ρ‹ΠΏΠ°Π΄ Π² сторону классичСского ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΡŽ синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΈ изящноС Π² части содСрТания пособиС ΠΏΠΎ написанию Ρ€Π°Π·Π±ΠΎΡ€Π° арифмСтичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Автор красиво ΠΈ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΈΠ΄Π΅Π΅ использования рСкурсивного спуска совмСстно с парсСром ΠŸΡ€Π°Ρ‚Ρ‚Π°. Just write the #!%/* parser https://tiarkrompf.github.io/notes/?/just-write-the-parser/ На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд эта Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ Π½Π΅ слишком ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для PLComp, Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π° сСбя Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π»ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° (Tiark Rompf β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… спСциалистов Π² области DSL-компиляции) ΠΈ идСологичСская ΡΠΏΠΎΡ€Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ β€” ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ сразу ΠΊ нюансам Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ кодирования, оставив Π·Π° Π±ΠΎΡ€Ρ‚ΠΎΠΌ вопросы Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ спСцификации языка, Π΅Π³ΠΎ синтаксиса? Π˜Π·Π²Π΅ΡΡ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², бСзусловно, говорят, ΠΌΠΎΠ», Π΄Π°, Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ происходит Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. И Π΄Π°ΠΆΠ΅ Ссли Π΅ΡΡ‚ΡŒ спСцификация, Ρ‚ΠΎ ΠΎΠ½Π° остаСтся Β«Π½Π° Π±ΡƒΠΌΠ°Π³Π΅Β» ΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ расходится с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ всС большС ΠΈ большС. #parsing

ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΡƒ Ρ„Π°ΠΊΡ‚Ρƒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ компиляторами -- это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ извСстныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹-Π±Π΅Π³Π΅ΠΌΠΎΡ‚Ρ‹ Π² Π΄ΡƒΡ…Π΅ LLVM/GCC для 2-3 популярных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Π’Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎ BPF? Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρ‡Ρ‚ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ссли Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ PLComp, Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ. Но, Π² любом случаС, Π΅ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°, которая Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚: BPF, XDP, Packet Filters and UDP https://fly.io/blog/bpf-xdp-packet-filters-and-udp/ ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, сколько всСго интСрСсного! Узкая прСдмСтная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, JIT-компиляция, статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°, вСрификация. Π’ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ Π΅ΡΡ‚ΡŒ ссылка Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ 1999 Π³ΠΎΠ΄Π°: BPF+: Exploiting Global Data-flow Optimization in a Generalized Packet Filter Architecture https://andrewbegel.com/papers/bpf.pdf НичСго сСбС, Π΄Π°? Π’Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ для, Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹, заурядной Π·Π°Π΄Π°Ρ‡ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²! И Π²ΠΎΡ‚ ΠΊΡƒΠ»ΡŒΠΌΠΈΠ½Π°Ρ†ΠΈΡ, ΡΡ‚Π°Ρ‚ΡŒΡ ΡƒΠΆΠ΅ совсСм свСТая: Specification and verification in the field: Applying formal methods to BPF just-in-time compilers in the Linux kernel https://unsat.cs.washington.edu/papers/nelson-jitterbug.pdf БкладываСтся ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ BPF -- своСобразный ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ для ΠΎΠ±ΠΊΠ°Ρ‚ΠΊΠΈ пСрспСктивных Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ компиляции. Π­Ρ‚ΠΎ объяснимо: Π½Π° исходный язык ΠΈ вычислСния Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ ТСсткиС ограничСния, сама Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина простая -- Π΅ΡΡ‚ΡŒ Π³Π΄Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ·ΠΎΡ‰Ρ€Π΅Π½Π½ΠΎΠ΅. И, разумССтся, интСрСсны пСрспСктивы использования BPF Π² спСциализированных Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…. P.S. Π’ΠΎΠΎΠ±Ρ‰Π΅, Π² области ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСтСвых ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² компиляторныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ интСрСсным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈΠ· области синтСза ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ я ΠΊ этой Ρ‚Π΅ΠΌΠ΅ Π΅Ρ‰Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡΡŒ. #jit #analysis #vm #verification #bpf

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΎΠΊΡ€ΡƒΠ³ эффСктивности ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΈ компилятора LuaJIT Π½Π΅ ΡƒΡ‚ΠΈΡ…Π°ΡŽΡ‚ Π² Π½ΠΈΡˆΠ΅Π²Ρ‹Ρ… сообщСствах Π΄ΠΎ сих ΠΏΠΎΡ€, ΠΏΡ€ΠΈ этом сам Π°Π²Ρ‚ΠΎΡ€ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹Ρ… пояснСний Ρ‚Π°ΠΊ ΠΈ Π½Π΅ оставил. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° Reddit ΠΈ Π² рассылкС lua: http://lua-users.org/lists/lua-l/2008-07/msg00651.html http://lua-users.org/lists/lua-l/2010-11/msg00437.html http://lua-users.org/lists/lua-l/2011-02/msg00671.html http://lua-users.org/lists/lua-l/2011-02/msg00742.html https://www.reddit.com/r/programming/comments/hkzg8/author_of_luajit_explains_why_compilers_cant_beat/c1w8xyz/?context=3 https://www.reddit.com/r/programming/comments/badl2/luajit_2_beta_3_is_out_support_both_x32_x64/c0lrus0/ #JIT #Lua

ПособиС ΠΏΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ для refinement-Ρ‚ΠΈΠΏΠΎΠ². Π’ Π΄ΡƒΡ…Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ компиляторов Π½Π° основС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ nanopass. ΠŸΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SMT-Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»Ρ Z3. Refinement Types: A Tutorial https://arxiv.org/abs/2010.07763 https://github.com/ranjitjhala/sprite-lang #analysis #smt

Formulog -- Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ DSL для Π·Π°Π΄Π°Ρ‡ статичСского Π°Π½Π°Π»ΠΈΠ·Π°. Основан Π½Π° Datalog ΠΈ ML, рСализация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ SMT-Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»ΡŒ. Formulog: ML + Datalog + SMT http://www.weaselhat.com/2020/08/07/formulog-ml-datalog-smt/ #analysis #datalog #smt

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· Ρ‚Ρ€Π°ΡΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ JIT-компилятора Lua LuaJIT https://github.com/MethodicalAcceleratorDesign/MADdocs/blob/master/luajit/luajit-doc.pdf #JIT #lua