Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

ДСкомпиляция

ДСкомпиля́тор β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ исполняСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ компилятора) Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эквивалСнтный исходный ΠΊΠΎΠ΄ Π½Π° языкС программирования высокого уровня. Для сравнСния, дизассСмблСр транслируСт исполняСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² тСкст Π½Π° языкС ассСмблСра.

ДСкомпиля́ция β€” процСсс воссоздания исходного ΠΊΠΎΠ΄Π° дСкомпилятором.

Π£Π΄Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ дСкомпиляции зависит ΠΎΡ‚ объСма ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, прСдставлСнной Π² Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅; Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ JVM для ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ скудСн ΠΈ слоТСн Π² дСкомпиляции.

Если извСстно Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС Π±Ρ‹Π»Π° написана дСкомпилируСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния (run-time library) компилятора с этого языка, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² основном компиляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сводится ΠΊ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΠ· этих Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ компиляторы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΉ ассСмблСрный ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС компиляции. Π­Ρ‚ΠΈ конструкции становятся шаблонами для дСкомпилятора, поэтому процСсс дСкомпиляции Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС ΠΏΠΎΡ…ΠΎΠΆ Π½Π° распознаваниС Π² машинном ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… шаблонов. Π›Π΅Π³Ρ‡Π΅ всСго Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. Они слуТат Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ для восстановлСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π’ Π‘Π‘Π‘Π  дСкомпиляторы с языков PL/M-80 ΠΈ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½-80 Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ Н.А. Надольским Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ Π­.М. ΠŸΡ€ΠΎΠΉΠ΄Π°ΠΊΠΎΠ²Π° Π² ИПУ АН (1983—1984 Π³Π³).

ДСкомпиляция, Π² частности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «Π”Скомпиляция» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

дСкомпиляция β€” ВосстановлСниС исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС высокого уровня ΠΈΠ· Π΅Π΅ исполнимого ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. [http://www.morepc.ru/dict/] Π’Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ EN decompiling … Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ тСхничСского ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°

дСкомпиляция β€” см. Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ; ΠΈ; ΠΆ … Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ β€” Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ описаниС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° Β«ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡΒ»; см. Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ»ΠΈ тСхничСскоС срСдство, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ.[1][2][3] ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ трансляция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, составлСнной Π½Π° исходном языкС высокого… … ВикипСдия

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° β€” Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π» нуТдаСтся Π² ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ написания статСй … ВикипСдия

Self β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ задумывался ΠΊΠ°ΠΊ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ языка Smalltalk. Разрабатывался Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ Xerox PARC, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² Бтэндфордском унивСрситСтС. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ†Π΅Π»ΡŒΡŽ которой… … ВикипСдия

ДСкомпилятор β€” ДСкомпилятор это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ исполняСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ компилятора) Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ эквивалСнтный исходный ΠΊΠΎΠ΄ Π½Π° языкС программирования высокого уровня. ДСкомпиляция процСсс воссоздания исходного кода… … ВикипСдия

ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ β€” (ΠΎΡ‚ Π»Π°Ρ‚. obfuscare Π·Π°Ρ‚Π΅Π½ΡΡ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌΠ½ΡΡ‚ΡŒ; ΠΈ Π°Π½Π³Π». obfuscate Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ) ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ исходного тСкста ΠΈΠ»ΠΈ исполняСмого ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Π²ΠΈΠ΄Ρƒ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, но… … ВикипСдия

Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (значСния). Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (Ρ‚Π°ΠΊΠΆΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠ½Π³Π» ΠΎΡ‚ Π°Π½Π³Π». dongle) Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ срСдство, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (ПО) ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… от… … ВикипСдия

Self (язык программирования) β€” Self ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΉ язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ задумывался ΠΊΠ°ΠΊ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ языка Xerox PARC, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π² Бтэндфордском унивСрситСтС. Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ†Π΅Π»ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, насколько Π΄Π°Π»Π΅ΠΊΠΎ моТно… … ВикипСдия

Π—Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β€” ΠžΠ±Ρ„ΡƒΡΠΊΠ°Ρ†ΠΈΡ (ΠΎΡ‚ Π»Π°Ρ‚. obfuscare Π·Π°Ρ‚Π΅Π½ΡΡ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌΠ½ΡΡ‚ΡŒ; ΠΈ Π°Π½Π³Π». obfuscate Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ), ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ исходного тСкста ΠΈΠ»ΠΈ исполняСмого ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Π²ΠΈΠ΄Ρƒ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, но… … ВикипСдия

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ exe

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

ДСкомпиляция β€” это процСсс восстановлСния исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· машинного ΠΊΠΎΠ΄Π°. ДСкомпилятор β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ процСсс дСкомпиляции. ДСкомпилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ:

ДСкомпиляция β€” это Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ процСсс Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ², хотя Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях этот процСсс ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈ с Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ намСрСниями. Пока Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ нСпонятная «каша», Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСм ΠΏΠΎ порядку.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ дСкомпиляция β€” это ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Π΅ процСссы

ДСкомпиляция β€” это ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ процСсс компиляции, Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «обратная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Β» ΠΈΠ»ΠΈ «рСвСрс-инТСнСрия». Π‘ΡƒΡ‚ΡŒ Π΅Π΅ сводится ΠΊ простому β€” Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Β«Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎΒ» Π² этом процСссС ΠΌΠ°Π»ΠΎ. ΠžΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π² Π΄ΠΎΠ±Ρ€Ρ‹Ρ… цСлях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходники. Π”Π΅ΠΊΠΎΠΌΠΏΠΈ ля ция Π½Π΅ восстанавливаСт исходники, Π° лишь прСдоставляСт ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΡƒΡŽ структуру, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΡ€ΠΈ дСкомпиляции прослСТиваСтся ваТная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ β€” Ρ‡Π΅ΠΌ слоТнСС ΠΈ большС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ‚Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Плю с ΠΈ Π½ΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ примСня ю Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ„Ρƒ ск Π°Ρ†ΠΈ ΠΈ ( запутывания) исходного ΠΊΠΎΠ΄Π°, Ρ‚ΠΎΠ³Π΄Π° послС дСкомпиляции Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ исходный ΠΊΠΎΠ΄ практичСски Π½Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ.

Π’Π°ΠΊ для Ρ‡Π΅Π³ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½Π° дСкомпиляция? ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ любой, Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ исходники β€” это ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Но Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π±Π΅Π· исходников Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ дСйствиС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»;

Π²Π·Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρƒ Π± Π΅Π· понимания Π΅Π΅ структуры ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹;

Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ вирус Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρƒ Π± Π΅Π· понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ построСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°;

Ρ‡Ρ‚ΠΎΠ±Ρ‹ Β«ΠΎΠ±ΠΎΠΉΡ‚ΠΈΒ» Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ;

Π’ основном дСкомпиляция Π½ΡƒΠΆΠ½Π° для «сСрых» Ρ†Π΅Π»Π΅ΠΉ, поэтому рСвСрс-инТСнСрия Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… странах Π½Π°ΠΊΠ°Π·ΡƒΠ΅ΠΌΠ° Π·Π°ΠΊΠΎΠ½ΠΎΠΌ. А дСкомпиляция β€” это ваТная Ρ‡Π°ΡΡ‚ΡŒ рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ, хотя ΠΎΡ‡Π΅Π½ΡŒ часто эти Π΄Π²Π° понятия ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ.

ДСкомпилятор Π΅Ρ…Π΅

VB Decompiler. Π­Ρ‚ΠΎ самый популярны ΠΉ дСкомпилятор Π΅Ρ…Π΅. Он ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π΅Ρ…Π΅-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ языка программирования Visual Basic. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ бСсплатный дСкомпилятор Π΅Ρ…Π΅.

EMS Source Rescuer. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ бСсплатная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π½ΠΎ ΠΎΠ½Π° ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Π΅Ρ…Π΅-Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ языков программирования Delphi ΠΈΠ»ΠΈ Π‘++.

ReFox. На Π½Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ дСкомпиляция Π΅Ρ…Π΅, Ссли Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» создан ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Visual FoxPro ΠΈΠ»ΠΈ FoxBase. Условно-бСсплатная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π° с нСбольшим бСсплатным ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ, Π΄Π°Π»Π΅Π΅ придСтся ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ.

DeDe. ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ дСкомпилятор Π΅Ρ…Π΅, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с языком программирования Delphi.

IDA Pro. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ комплСкс инструмСнтов для ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… инструмСнтов Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡ‚ΠΈ дСкомпилятор Π΅Ρ…Π΅. Однако Ρƒ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ минус β€” ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ дорогая с Π½Π΅Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ Π·Π°Π²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†Π΅Π½Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π΄Π²Π°: Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ Π΄Π΅ΠΌΠΎ-Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈΠ»ΠΈ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΡΠ»ΠΈΡ‚ΡƒΡŽ Π² свободный доступ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ. Π•ΡΡ‚ΡŒ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄ β€” ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° Π½Π΅Π΅ ΠΎΡ‚ 900 ΠΈ Π΄ΠΎ 4000$.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½Ρ‹

Ссли ΠΏΠΎΠ΄ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ Π’Ρ‹ Π½Π°ΠΆΠΌΡ‘Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтСй ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° трСбования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ устроСна Ρ€Π°Π±ΠΎΡ‚Π° MSIL, ΠΈ ΠΊΠ°ΠΊ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ Π² быстрой дСкомпиляции прилоТСния.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ языка процСссора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вносит для нас Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТности Π² процСсс дСкомпиляции (рСгистры, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ дСйствиС нСсколькими способами), Π² MSIL всС максимально просто. Если Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π΅Ρ‡Ρ‚ΠΎ, Ρ‚ΠΎ для этого Π΅ΡΡ‚ΡŒ всСго ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌ способом Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ получится. Π­Ρ‚ΠΎ свойство надСляСт ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ компилятор (JITter) простотой Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΠ΄Π½ΠΎΠΉ стороны… А с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны надСляСт простотой Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ сторону.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ свойство, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ MSIL, это вычислСния Π½Π° стСкС. Π’ΡƒΡ‚ Π½Π΅Ρ‚ рСгистров. И СдинствСнная ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ΄ΡƒΡ‚ всС вычислСния β€” это стСк. Π­Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ процСссор Ρ‚Π°ΠΊΠΆΠ΅ всС вычисляСт Ρ‡Π΅Ρ€Π΅Π· стСк. НСт. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ этой модСлью для упрощСния ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ описаниС всСх расчСтов ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π½Π° MSIL. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ для нас? Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Ρ‡Ρ‚ΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π²Π° числа ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, которая Π²Π½Π΅ зависимости ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” ΠΎΠ΄Π½Π°. Π­Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΠ² Π΄Π°Π½Π½Ρ‹Π΅ для слоТСния ΠΈΠ· стСка, складываСт ΠΈΡ… ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ ΠΊΡƒΠ΄Π°-Π»ΠΈΠ±ΠΎ, Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² стСк. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для нас, ΠΊΠ°ΠΊ для людСй, ΠΏΠΈΡˆΡƒΡ‰ΠΈΡ… дСкомпилятор это Π½Π΅ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ вСтвлСния ΠΊΠΎΠ΄Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ подошли ΠΊ самому Π³Π»Π°Π²Π½ΠΎΠΌΡƒ: ΠΊΠ°ΠΊ происходит процСсс дСкомпиляции.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ, которая ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ: ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ инструкций ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ. Π’.Π΅., Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ выполнился, совсСм Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ldind_i4 ΠΈ add Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… инструкций. НапримСр, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ… названия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π»ΠΈΠ·Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. Π’.Π΅. Π±Π΅Π· примСсСй, ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Ρ‡Ρ‚ΠΎ самоС слоТноС, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ if-else, while, do-while, switch ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ, Π² особСнности, лямбды, yields, async/awaits ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ языковыС ΠΏΡ€ΠΈΠΌΠΎΡ‡ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка. Как всС это ΡƒΡ‡Π΅ΡΡ‚ΡŒ? На самом Π΄Π΅Π»Π΅ ΠΎΠ±Π° вопроса Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ всСго двумя способами.

БтСковая модСль дСкомпиляции

Π”Π°Π»Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄, Π»ΠΈΠ±ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… арифмСтичСских опСрациях, Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции ret.

БоотвСтствСнно, Ссли Π±Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ послоТнСС:

Π’ΠΎ процСсс создания DOM выглядСл Π±Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

ПослС Ρ‡Π΅Π³ΠΎ осущСствляСтся ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ сборка Π΄Π΅Ρ€Π΅Π²Π°:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Волько Π² случаС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², со стСка Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ² количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² классС Π½ΠΎΠ΄Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Π½ΠΎΠ΄Π° Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ слоТСна Π² стСк. Если Π½Π΅Ρ‚ β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π‘Π±ΠΎΡ€ΠΊΠ° Π΄Π΅Ρ€Π΅Π²Π°

Π­Ρ‚ΠΎ всС Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ этапы. Π”Π°Π»Π΅Π΅, для ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΠΈ пСрСводят Π΅Π΅ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. НапримСр, Ссли это if-else, Ρ‚ΠΎ матчится Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ условного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ осущСствлялся Π²ΠΏΠ΅Ρ€Π΅Π΄. Π’ΠΎΠ³Π΄Π° ΡƒΠ·Π΅Π» прСобразуСтся Π² if-else Π½ΠΎΠ΄Ρƒ, ΠΊΠΎΠ΄ Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ помСчаСтся ΠΊΠ°ΠΊ else (negative if) Π½ΠΎΠ΄Π°, Π° ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ условиСм ΠΈ else Π½ΠΎΠ΄ΠΎΠΉ β€” ΠΊΠ°ΠΊ positive if Π½ΠΎΠ΄Π°. Если матчится ΠΊΠ°ΠΊ условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π½Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹Π΅ инструкции, Ρ‚ΠΎ это матчится ΠΊΠ°ΠΊ while Ρ†ΠΈΠΊΠ» ΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ пСрСстраиваСтся. БоотвСтствСнно, Π² зависимости ΠΎΡ‚ чистоты исполнСния ΠΌΠ°Ρ‚Ρ‡Π΅Ρ€ΠΎΠ², Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ язык программирования. Π”Π°Π»Π΅Π΅, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· языков программирования ΠΌΡ‹ Π·Π°Π΄Π°Π΅ΠΌ мноТСство ΠΌΠ°Ρ‚Ρ‡Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ подходят. НапримСр, Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ условия ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ всСм, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…. А Π²ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, async/await β€” ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для C#. ΠŸΠΎΡ‚ΠΎΠΌΡƒ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊ Π² Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅.

Для ясности ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹, ΠΊΠ°ΠΊ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ if-else ΠΈ while/do-while, рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Π‘Π±ΠΎΡ€ΠΊΠ° IF-ELSE Π±Π»ΠΎΠΊΠ°

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Π‘Π±ΠΎΡ€ΠΊΠ° WHILE Π±Π»ΠΎΠΊΠ°

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

ГСнСрация ΠΊΠΎΠ΄Π°

ПослСдний этап ΠΌΠ°Ρ‚Ρ‡ΠΈΠ½Π³Π° β€” гСнСрация ΠΊΠΎΠ΄Π° ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ. Π’ΡƒΡ‚ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ слоТностСй. ИдСально, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΊΡ€ΡƒΡ‚ΠΎ ΠΏΠΎΠ΄ΡΠ°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΡ‚ R# ΠΈΠ»ΠΈ StyleCop. Π‘Π»Π°Π³ΠΎ, ΠΎΠ½ΠΈ Π² XML. Но Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС, ΠΌΡ‹ пишСм Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄Π΅Ρ€Π΅Π²ΠΎ описания класса. Он спСрва обязан ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всС Π΄Π΅Ρ€Π΅Π²ΠΎ: содСрТит Π»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π½ΠΎΠ΄. Если всС Π² порядкС, Ρ‚ΠΎ обходится всС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° вызываСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ проСктирования Visitor, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся StringBuilder ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π½ΠΎΠ΄Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΠΎΡ‚ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ с Π½Π°Ρ‡Π°Π»Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки. На этом этапС всС достаточно просто.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ДСкомпилятор

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π’Π΅Ρ€ΠΌΠΈΠ½ дСкомпилятор Ρ‡Π°Ρ‰Π΅ всСго примСняСтся ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ исполняСмыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π²Ρ‹Π²ΠΎΠ΄ компилятора ) Π² исходный ΠΊΠΎΠ΄ Π½Π° (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ) языкС высокого уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ компиляции создаСт исполняСмый Ρ„Π°ΠΉΠ», ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρƒ исходного исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Для сравнСния, дизассСмблСр ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° язык ассСмблСра (ΠΈ ассСмблСр ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для сборки Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ).

НСкоторыС компиляторы ΠΈ инструмСнты посткомпиляции ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ произвСсти Π²Ρ‹Π²ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСкомпилируСтся Π΄ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°). Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°.

Π₯отя дСкомпиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для (воссоздания) исходного ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ дСкомпиляторы для прСобразования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ источники. [3] [4]

Π”ΠΈΠ·Π°ΠΉΠ½ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ДСкомпиляторы ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ состоящиС ΠΈΠ· сСрии Ρ„Π°Π·, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вносит свой Π²ΠΊΠ»Π°Π΄ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ аспСкты ΠΎΠ±Ρ‰Π΅Π³ΠΎ процСсса дСкомпиляции.

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π Π°Π·Π±ΠΎΡ€ΠΊΠ° [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ логичСским этапом являСтся Ρ€Π°Π·Π±ΠΎΡ€ΠΊΠ° инструкций машинного ΠΊΠΎΠ΄Π° Π² машинно-нСзависимоС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС (IR). НапримСр, машинная инструкция Pentium

ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ Π½Π° IR

Π˜Π΄ΠΈΠΎΠΌΡ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти Π½Π°

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ идиоматичСских ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… этапов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² мСньшСй стСпСни влияСт порядок ΠΊΠΎΠΌΠ°Π½Π΄. НапримСр, этап планирования инструкций компилятора ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструкции Π² ΠΈΠ΄ΠΈΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок инструкций Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΎΡ†Π΅ΡΡ сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Π½Π° этапС Ρ€Π°Π·Π±ΠΎΡ€ΠΊΠΈ, вСроятно, Π½Π΅ распознаСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ†. На Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… этапах выраТСния инструкций Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π±ΠΎΠ»Π΅Π΅ слоТныС выраТСния ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ (ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ) Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ измСнСнная ΠΈΠ΄ΠΈΠΎΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡ€ΠΈ дСкомпиляции.

Анализ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

К IR ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Π°Π½Π°Π»ΠΈΠ·Ρ‹. Π’ частности, распространСниС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ сСмантику Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… инструкций Π² Π±ΠΎΠ»Π΅Π΅ слоТныС выраТСния. НапримСр,

ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ IR послС распространСния выраТСния:

Анализ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠœΠ΅ΡΡ‚Π°, Π³Π΄Π΅ опрСдСляСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ содСрТимоС рСгистров, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….. Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ мСстополоТСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ связанного Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ использования ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сформировано Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ мСстополоТСниС локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ использовалось для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚Π°ΠΊΠΈΠΌΠΈ использованиями, Π΄Π°ΠΆΠ΅ Ссли Π½Π° самом Π΄Π΅Π»Π΅ это Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ ΠΏΠ»ΠΎΡ…ΠΈΡ… случаях это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСобходимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ мСстополоТСниС ΠΊΠ°ΠΊ объСдинСниС Ρ‚ΠΈΠΏΠΎΠ². ДСкомпилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ явно Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ нССстСствСнныС зависимости, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ ясному ΠΊΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’ΠΈΠΏΠΎΠ²ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

МоТно Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ выраТСния высокого уровня, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ распознаваниС структур ΠΈΠ»ΠΈ массивов. Однако Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности ΠΈΠ·-Π·Π° свободы, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдоставляСт ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки высокого уровня, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C, с привСдСниями ΠΈ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ высокоуровнСвому ΠΊΠΎΠ΄Ρƒ:

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Ρ„Π°Π·Π° дСкомпиляции Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя структурированиС IR Π² конструкции Π±ΠΎΠ»Π΅Π΅ высокого уровня, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ while Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ if/then/else условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. НапримСр, ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти Π½Π°:

НСструктурированный ΠΊΠΎΠ΄ слоТнСС пСрСвСсти Π² структурированный ΠΊΠΎΠ΄, Ρ‡Π΅ΠΌ ΡƒΠΆΠ΅ структурированный ΠΊΠΎΠ΄. РСшСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ логичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. [7]

ГСнСрация ΠΊΠΎΠ΄Π° [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π—Π°ΠΊΠΎΠ½Π½ΠΎΡΡ‚ΡŒ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Π’ Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π¨Ρ‚Π°Ρ‚Π°Ρ… Π·Π°Ρ‰ΠΈΡ‚Π° авторских ΠΏΡ€Π°Π² Π½Π° основС добросовСстного использования Π±Ρ‹Π»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ задСйствована Π² случаях дСкомпиляции. НапримСр, Π² Π΄Π΅Π»Π΅ Sega v. Accolade суд постановил, Ρ‡Ρ‚ΠΎ Accolade ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° Π·Π°ΠΊΠΎΠ½Π½Ρ‹Ρ… основаниях ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² дСкомпиляции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ консолями Sega. [10] ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π—Π°ΠΊΠΎΠ½ ΠΎΠ± авторском ΠΏΡ€Π°Π²Π΅ Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ эпоху (ΠŸΠ£Π‘Π›Π˜Π§ΠΠ«Π™ Π—ΠΠšΠžΠ 105–304 [11] ) ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ для тСстирования бСзопасности, Ρ‚Π°ΠΊ ΠΈ для ΠΎΡ†Π΅Π½ΠΊΠΈ Π² Β§1201 (i), Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ проСктирования Π² Β§1201 (f). [12]

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡ‚Π°Ρ‚ΡŒΡ 6 прСдписываСт, Ρ‡Ρ‚ΠΎ информация, получСнная посрСдством дСкомпиляции, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π»ΠΈΡ†Π°ΠΌ.

Π’ Ρ†Π΅Π»ΠΎΠΌ, ΠΏΡ€Π°Π²ΠΎ Π½Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, прСдусмотрСнноС ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ 6, ΠΊΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ считаСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π² ​​индустрии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ СвропСйскиС иски Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΈΠ·-Π·Π° ΠΏΡ€Π°Π²Π° Π½Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ…:

Π’ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ 2000 Π³ΠΎΠ΄Π° ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ СвропСйскими государствами-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ЕвропСйская комиссия, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π»Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. [14]

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ДСкомпиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой собствСнныС Π½Π°Π±ΠΎΡ€Ρ‹ инструкций (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Intel x86, ARM, MIPS), Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин (Dalvik, Ρ„Π°ΠΉΠ»Ρ‹ классов Java, WebAssembly, Ethereum).

Из-Π·Π° ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²ΠΎ врСмя компиляции дСкомпиляция ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ идСальной, ΠΈ Π½Π΅ всС дСкомпиляторы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π•ΡΡ‚ΡŒ исслСдования, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… дСкомпиляторов. [15]

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ДСкомпилятор

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π•

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π’Π΅Ρ€ΠΌΠΈΠ½ дСкомпилятор Ρ‡Π°Ρ‰Π΅ всСго примСняСтся ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ исполняСмыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π²Ρ‹Π²ΠΎΠ΄ компилятора ) Π² исходный ΠΊΠΎΠ΄ Π½Π° (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ) высокоуровнСвом языкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ компиляции создаСт исполняСмый Ρ„Π°ΠΉΠ», ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρƒ исходного исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Для сравнСния, дизассСмблСр ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° язык ассСмблСра (ΠΈ ассСмблСр ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для сборки Π΅Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ).

НСкоторыС компиляторы ΠΈ инструмСнты посткомпиляции ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ произвСсти Π²Ρ‹Π²ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСкомпилируСтся Π΄ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°). Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π°.

Π₯отя дСкомпиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для (воссоздания) исходного ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ дСкомпиляторы для прСвращСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ источники. [3] [4]

Π”ΠΈΠ·Π°ΠΉΠ½ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ДСкомпиляторы ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ состоящиС ΠΈΠ· сСрии Ρ„Π°Π·, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вносит свой Π²ΠΊΠ»Π°Π΄ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ аспСкты ΠΎΠ±Ρ‰Π΅Π³ΠΎ процСсса дСкомпиляции.

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π Π°Π·Π±ΠΎΡ€ΠΊΠ° [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ логичСским этапом являСтся Ρ€Π°Π·Π±ΠΎΡ€ΠΊΠ° инструкций машинного ΠΊΠΎΠ΄Π° Π² машинно-нСзависимоС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС (IR). НапримСр, машинная инструкция Pentium

ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ Π½Π° IR

Π˜Π΄ΠΈΠΎΠΌΡ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти Π½Π°

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ идиоматичСских ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Ссли это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… этапов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² мСньшСй стСпСни влияСт порядок инструкций. НапримСр, этап планирования инструкций компилятора ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструкции Π² ΠΈΠ΄ΠΈΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок инструкций Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€ΠΎΡ†Π΅ΡΡ сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Π½Π° этапС Ρ€Π°Π·Π±ΠΎΡ€ΠΊΠΈ, вСроятно, Π½Π΅ распознаСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ†. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ этапы Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ выраТСния инструкций Π² Π±ΠΎΠ»Π΅Π΅ слоТныС выраТСния ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… Π² ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ (ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ) Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ измСнСнная ΠΈΠ΄ΠΈΠΎΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΡ€ΠΈ дСкомпиляции.

Анализ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

К IR ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Π°Π½Π°Π»ΠΈΠ·Ρ‹. Π’ частности, распространСниС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ сСмантику Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… инструкций Π² Π±ΠΎΠ»Π΅Π΅ слоТныС выраТСния. НапримСр,

ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ IR послС распространСния выраТСния:

Анализ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠœΠ΅ΡΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ содСрТимоС рСгистров, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….. Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ мСстополоТСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ связанного Π½Π°Π±ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ использования ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сформировано Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ мСстополоТСниС локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ использовалось для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚Π°ΠΊΠΈΠΌΠΈ использованиями, Π΄Π°ΠΆΠ΅ Ссли Π½Π° самом Π΄Π΅Π»Π΅ это Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ ΠΏΠ»ΠΎΡ…ΠΈΡ… случаях это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСобходимости ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ мСстополоТСниС ΠΊΠ°ΠΊ объСдинСниС Ρ‚ΠΈΠΏΠΎΠ². ДСкомпилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ явно Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ нССстСствСнныС зависимости, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ ясному ΠΊΠΎΠ΄Ρƒ. Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’ΠΈΠΏΠΎΠ²ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

МоТно Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ выраТСния высокого уровня, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ распознаваниС структур ΠΈΠ»ΠΈ массивов. Однако Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ возмоТности ΠΈΠ·-Π·Π° свободы, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдоставляСт ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки высокого уровня, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C, с привСдСниями ΠΈ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ высокоуровнСвому ΠΊΠΎΠ΄Ρƒ:

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Ρ„Π°Π·Π° дСкомпиляции Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя структурированиС IR Π² конструкции Π±ΠΎΠ»Π΅Π΅ высокого уровня, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ while Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ if/then/else условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. НапримСр, ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти Π½Π°:

НСструктурированный ΠΊΠΎΠ΄ слоТнСС пСрСвСсти Π² структурированный ΠΊΠΎΠ΄, Ρ‡Π΅ΠΌ ΡƒΠΆΠ΅ структурированный ΠΊΠΎΠ΄. РСшСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ логичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. [7]

ГСнСрация ΠΊΠΎΠ΄Π° [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π—Π°ΠΊΠΎΠ½Π½ΠΎΡΡ‚ΡŒ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор. Π€ΠΎΡ‚ΠΎ Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ΅Π½ дСкомпилятор

Π’ Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… Π¨Ρ‚Π°Ρ‚Π°Ρ… Π·Π°Ρ‰ΠΈΡ‚Π° авторских ΠΏΡ€Π°Π² Π½Π° основС добросовСстного использования ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ примСняСтся Π² случаях дСкомпиляции. НапримСр, Π² Π΄Π΅Π»Π΅ Sega v. Accolade суд постановил, Ρ‡Ρ‚ΠΎ Accolade ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° Π·Π°ΠΊΠΎΠ½Π½Ρ‹Ρ… основаниях ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² дСкомпиляции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ консолями Sega. [10] ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π—Π°ΠΊΠΎΠ½ ΠΎΠ± авторском ΠΏΡ€Π°Π²Π΅ Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ эпоху (ΠŸΠ£Π‘Π›Π˜Π§ΠΠ«Π™ Π—ΠΠšΠžΠ 105–304 [11] ) ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ для тСстирования бСзопасности, Ρ‚Π°ΠΊ ΠΈ для ΠΎΡ†Π΅Π½ΠΊΠΈ Π² Β§1201 (i), Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ проСктирования Π² Β§1201 (f). [12]

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡ‚Π°Ρ‚ΡŒΡ 6 прСдписываСт, Ρ‡Ρ‚ΠΎ информация, получСнная ΠΏΡƒΡ‚Π΅ΠΌ дСкомпиляции, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π»ΠΈΡ†Π°ΠΌ.

Π’ Ρ†Π΅Π»ΠΎΠΌ, ΠΏΡ€Π°Π²ΠΎ Π½Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, прСдусмотрСнноС ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ 6, ΠΊΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ считаСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ Π² ​​индустрии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ СвропСйскиС иски Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΈΠ·-Π·Π° ΠΏΡ€Π°Π²Π° Π½Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ…:

Π’ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ 2000 Π³ΠΎΠ΄Π° ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ СвропСйскими государствами-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ЕвропСйская комиссия, ΠΏΠΎΡ…ΠΎΠΆΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π»Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. [14]

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ДСкомпиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой собствСнныС Π½Π°Π±ΠΎΡ€Ρ‹ инструкций (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Intel x86, ARM, MIPS), Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин (Dalvik, Ρ„Π°ΠΉΠ»Ρ‹ классов Java, WebAssembly, Ethereum).

Из-Π·Π° ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²ΠΎ врСмя компиляции дСкомпиляция ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ идСальной, ΠΈ Π½Π΅ всС дСкомпиляторы Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π•ΡΡ‚ΡŒ исслСдования, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… дСкомпиляторов. [15]

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *