PLComp
Open in Telegram
Π―Π·ΡΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ: Π²ΠΎΠΏΡΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄ΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ²ΡΠΎΡΡ: @vekazanov @igorjirkov @true_grue @clayrat @eupp7 @alexanius @AntonTrunov @GabrielFallen @graetestofnoldor
Show moreThe country is not specifiedThe category is not specified
485
Subscribers
No data24 hours
-17 days
+530 days
Posts Archive
485
Π‘Π°ΠΌΡΠΉ ΡΠ°Π½Π½ΠΈΠΉ ΠΈ Π·Π°Π΄Π°Π²ΡΠΈΠΉ Π³Π»Π°Π²Π½ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠΎ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ·ΡΠΊΠ° 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
485
Next-gen Haskell Compilation Techniques
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡΠΈΠΊΠ°ΠΌ. ΠΠ²ΡΠΎΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΌΠ°ΡΡΡ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΡΡΠ»ΠΎΠΊ. Π ΡΠ΅Π»ΠΎΠΌ, ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠ½Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΠΈΠ΄Π΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Datalog, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π±Ρ ΠΎΠΏΡΠ°Π²Π΄Π°Π»Π° ΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
https://docs.google.com/presentation/u/0/d/1g_-bHgeD7lV4AYybnvjgkWa9GKuP6QFUyd26zpqXssQ/mobilepresent
#ghc #grin
485
Π ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ 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
485
Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅Π½ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Π΄Π΅ΡΡΡΠΊΠ°Ρ
ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² - ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠΎΠ² Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π΄Π°ΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ 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
485
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ 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
485
Π Π°Π±ΠΎΡΠ° 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
485
Π ΡΡΠ΅Π΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π² Π΄ΡΡ
Π΅ "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
485
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
485
ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (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
485
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² - ΠΊΡΠ°Π΅ΡΠ³ΠΎΠ»ΡΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. Π ΡΠ°Π±ΠΎΡΠ΅ Linear Scan Register Allocation (1999) Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡΡ
ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π΅ΠΉΡΠΈΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ².
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠΈ Π³ΡΠ°ΡΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΡΠΎΠΉ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ²ΡΠΎΡΡ ΠΏΠΈΡΡΡ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΊΠΎΠ΄, Π»ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΏΠ°ΡΡΠΈΠΉ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠΈ Π³ΡΠ°ΡΠΎΠ².
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ²ΠΎΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ°Π» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
(just-in-time) ΠΈ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ
.
ΠΠ· ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² luajit ΠΈΠ»ΠΈ Hotspot.
#history #registerallocation #linearscan
485
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ 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
485
(ΠΡΠΎ ΠΌΠΎΠΉ ΡΡΠ°ΡΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ, Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΎΠ½ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ) ΠΠΈΠΆΠ΅ Ρ Ρ
ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΠ²Π΅ΡΠ½ΡΡ
ΠΊΠ½ΠΈΠ³ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π»ΠΈ Π»ΠΈΡΠ½ΠΎ ΠΌΠ½Π΅. ΠΠ°Π΄Π΅ΡΡΡ, ΠΎΠ½ΠΈ ΠΎΠΊΠ°ΠΆΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΠΈ Π²Π°ΠΌ.
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 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅), Π½Π΅Π»ΠΈΡΠ½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΡΡΡΡ ΠΈ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ, Π³Π΄Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π²ΡΠ΅ ΡΡΠΈ ΡΠ΅ΠΌΡ.
485
ΠΡΠ΅ΡΠ΅Π΄Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΎΡ 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
485
ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ 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
485
ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π²ΡΠΏΠ°Π΄ Π² ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΊ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ°. ΠΡΠΎΡΡΠΎΠ΅ ΠΈ ΠΈΠ·ΡΡΠ½ΠΎΠ΅ Π² ΡΠ°ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π·Π±ΠΎΡΠ° Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ²ΡΠΎΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΈ ΠΏΠ»Π°Π²Π½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΠ΄Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ° ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΏΠ°ΡΡΠ΅ΡΠΎΠΌ ΠΡΠ°ΡΡΠ°.
Just write the #!%/* parser
https://tiarkrompf.github.io/notes/?/just-write-the-parser/
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠ° Π½ΠΎΠ²ΠΎΡΡΡ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ PLComp, Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°Π΅Ρ Π½Π° ΡΠ΅Π±Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΡΠ° (Tiark Rompf β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡΡΡΠΈΡ
ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² Π² ΠΎΠ±Π»Π°ΡΡΠΈ DSL-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ) ΠΈ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΏΠΎΡΠ½ΠΎΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΡΡΡ β ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ°Π·Ρ ΠΊ Π½ΡΠ°Π½ΡΠ°ΠΌ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΡΠ°Π²ΠΈΠ² Π·Π° Π±ΠΎΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ·ΡΠΊΠ°, Π΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°? ΠΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π³ΠΎΠ²ΠΎΡΡΡ, ΠΌΠΎΠ», Π΄Π°, ΡΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. Π Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΡΠΎ ΠΎΠ½Π° ΠΎΡΡΠ°Π΅ΡΡΡ Β«Π½Π° Π±ΡΠΌΠ°Π³Π΅Β» ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΡΡ
ΠΎΠ΄ΠΈΡΡΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅.
#parsing
485
ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΠΌΡ ΡΠ°ΠΊΡΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ -- ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ-Π±Π΅Π³Π΅ΠΌΠΎΡΡ Π² Π΄ΡΡ
Π΅ 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
485
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΎΠΊΡΡΠ³ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° 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
485
ΠΠΎΡΠΎΠ±ΠΈΠ΅ ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π»Ρ refinement-ΡΠΈΠΏΠΎΠ². Π Π΄ΡΡ
Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ nanopass. ΠΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SMT-ΡΠ΅ΡΠ°ΡΠ΅Π»Ρ Z3.
Refinement Types: A Tutorial
https://arxiv.org/abs/2010.07763
https://github.com/ranjitjhala/sprite-lang
#analysis #smt
485
Formulog -- Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ DSL Π΄Π»Ρ Π·Π°Π΄Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΡΠ½ΠΎΠ²Π°Π½ Π½Π° Datalog ΠΈ ML, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SMT-ΡΠ΅ΡΠ°ΡΠ΅Π»Ρ.
Formulog: ML + Datalog + SMT
http://www.weaselhat.com/2020/08/07/formulog-ml-datalog-smt/
#analysis #datalog #smt
485
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΡΠ°ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Lua
LuaJIT
https://github.com/MethodicalAcceleratorDesign/MADdocs/blob/master/luajit/luajit-doc.pdf
#JIT #lua
