Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ГСнСрация высококачСствСнного ΠΊΠΎΠ΄Π° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанных Π½Π° БИ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 6

Автор Π€ΠΈΠ»ΠΈΠΏΠΏ Π₯ислСй

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° слоТСн, ΠΈ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ эффСктивности зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈ изощрСнности ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ написан ΠΈ структурирован. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² исходном тСкстС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ выраТСния.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2 собрана информация ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ компилятором Π½Π° тСкстС тСста. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ компилятор ΠΈΠ· рассматриваСмого Π½Π°Π±ΠΎΡ€Π° выполняСт ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ свСртка констант ΠΈ алгСбраичСскиС упрощСния. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ уровня, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ сниТСниС мощности ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НСкоторыС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ высокого уровня, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ вынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². Ни ΠΎΠ΄ΠΈΠ½ Π½Π΅ выполняСт ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ слияниС Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Datalight Optimum-C Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, примСнСния Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ удалСния ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

--------------------------------------------------------------Β¬

Β¦Π’Π°Π±Π»ΠΈΡ†Π° 2: Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСста ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Β¦

+-------------------------T---T---T---T---T---T---T---T---T---+

Β¦ ΠšΠžΠœΠŸΠ˜Π›Π―Π’ΠžΠ  Π’Π•Π Π‘Π˜Π― Β¦ 1 Β¦ 2 Β¦ 3 Β¦ 4 Β¦ 5 Β¦ 6 Β¦ 7 Β¦ 8 Β¦ 9 Β¦

+-------------------------+---+---+---+---+---+---+---+---+---+

Β¦ΠœΠ•Π’ΠžΠ”Π« ΠžΠŸΠ’Π˜ΠœΠ˜Π—ΠΠ¦Π˜Π˜ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦Π‘Π²Π΅Ρ€Ρ‚ΠΊΠ° констант (Ρ†Π΅Π»Ρ‹Ρ…) Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦

Β¦Π‘Π²Π΅Ρ€Ρ‚ΠΊΠ° констант (ΠΏΠ»Π°Π².) Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦

Β¦Π Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ констант Β¦ Β¦ Β¦ * Β¦ Β¦ Β¦ * Β¦ * Β¦ Β¦ * Β¦

Β¦Π Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΉ Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ Β¦ * Β¦

¦АлгСбр.упрощСния Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦

¦ПодавлСниС дСлСния на 0 ¦ ¦ * ¦ ¦ ¦ ¦ * ¦ * ¦ ¦ * ¦

Β¦Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β¦ Β¦ Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ Β¦ * Β¦

Β¦Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ мощности Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦

Β¦Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ… Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ/сохранСний Β¦ * Β¦ Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ Β¦ * Β¦

Β¦Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ нСдостиТи- Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Β¦ * Β¦ * Β¦ * Β¦ * Β¦ Β¦ * Β¦ * Β¦ Β¦ * Β¦

Β¦Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ… Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ присваиваний Β¦ Β¦ * Β¦ * Β¦ Β¦ Β¦ * Β¦ * Β¦ Β¦ * Β¦

¦Использ. машинно- ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

Β¦ зависимых ΠΊΠΎΠΌΠ°Π½Π΄ Β¦ Β¦ * Β¦ Β¦ * Β¦ Β¦ * Β¦ * Β¦ * Β¦ * Β¦

Β¦ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° встроСнных Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ * Β¦ Β¦ * Β¦

Β¦Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ Π² рСгистрах Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦

¦НСпосрСдствСнныС инструк-Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ Ρ†ΠΈΠΈ 80287 Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ * Β¦ Β¦ * Β¦

Β¦Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Β¦ * Β¦ Β¦ * Β¦ * Β¦ Β¦ * Β¦ * Β¦ Β¦ * Β¦

¦ВынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ ΠΊΠΎΠ΄Π° Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ * Β¦ Β¦ Β¦

Β¦Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦ ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ * Β¦ Β¦ Β¦

Β¦Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ * Β¦ Β¦ Β¦

Β¦Π£Π΄Π°Π». Π³Π»ΡƒΠ±. ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

Β¦Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ² Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

¦БлияниС Ρ†ΠΈΠΊΠ»ΠΎΠ² Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦ Β¦

+-------------------------+---+---+---+---+---+---+---+---+---+

Β¦ 1 - BORLAND Turbo C 1.5, 2 - COMPUTER INNOVATIONS Β¦

Β¦ C86Plus 1.1, 3 - DATALIGHT Optimum-C 3.14, 4 - LATTICE Β¦

Β¦ MS-DOS C 3.2, 5 - MANX Aztec C 4.0, 6 - METAWARE High C Β¦

Β¦ 1.4, 7 - MICROSOFT C 5.0, 8 - MICROSOFT QuickC 1.0, 9 - Β¦

Β¦ WATCOM C 6.0. Β¦

Β¦ * - компилятор примСняСт этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Β¦

+-------------------------------------------------------------+

Β¦ Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Π·ΠΎΡ€ компиляторов языка Π‘ΠΈ Β¦

Β¦ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ простыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β¦

Β¦ алгСбраичСскиС упрощСния, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько компиляторов Β¦

Β¦ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ слоТныС Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… Β¦

Β¦ ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Β¦

L--------------------------------------------------------------

Borland International.

Π’Ρ‹Ρ…ΠΎΠ΄ компилятора Turbo C прСдставляСт собой Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ, Π½ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠšΡ€ΠΎΠΌΠ΅ свСртки констант, удалСния Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ рСгистров ΠΈ алгСбраичСских ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠΉ, компилятор выполняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сниТСниС мощности, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ нСдостиТимого ΠΊΠΎΠ΄Π° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² рСгистрах. Он Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… сохранСний, ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ вынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Turbo C Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ управляСт ΠΏΡ€ΠΎΠ»ΠΎΠ³ΠΎΠΌ ΠΈ эпилогом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ использованиСм рСгистров, засылая Π² стСк ΠΈ извлСкая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ рСгистры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Computer Innovation Inc.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C86Plus Π²Ρ‹Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΊΠΎΠ΄ со срСдним ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Он выполняСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ свСртка констант ΠΈ Ρ€Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΉ. Однако ΠΎΠ½ Π½Π΅ выполняСт Ρ€Π°Π·ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ констант для удалСния Π»ΠΈΡˆΠ½ΠΈΡ… сохранСний.

Π₯отя компилятор ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ выполняСт алгСбраичСскиС упрощСния, ΠΎΠ½ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ лишниС инструкции ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² рСгистрах, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎΡ‚ эффСкт проявляСтся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² рСгистрах ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ пСрСразмСщСния, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ присвоСны ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

Π₯отя C86Plus ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ справляСтся со свСрткой явных Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ присваиваний Π² ΠΎΠ΄Π½ΠΎ присваиваниС, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… сохранСний ΠΎΠ½ выполняСт нСустойчиво. ЕдинствСнноС лишнСС присваиваниС Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dead_code остаСтся СдинствСнной ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ компилятор удаляСт нСдостиТимый ΠΊΠΎΠ΄ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

C86Plus - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… компиляторов рассматриваСмого Π½Π°Π±ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ элСмСнтов массива ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ разворачивания Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ STOSW процСссора 80x86 с прСфиксом REP. Однако, Ρ‡Ρ‚ΠΎ касаСтся Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ³ΠΎ уровня ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… областях, Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ смог Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ прСобразования Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ jump_chain_compression Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄. Он Π½Π΅ выполняСт ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»ΠΎΠ².

Datalight Inc.

Π‘ появлСниСм Optimum-C Datalight стала ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… поставщиков, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ²ΡˆΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ компилятор. Π₯отя Π½Π°Π±ΠΎΡ€ тСстов Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» наглядно ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΠΈ Datalight Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, Optimum-C сработал Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ… тСста, Ρ‡Ρ‚ΠΎ ΠΎΠ½ продСмонстрировал слабыС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π°Π±ΠΎΡ€Π°, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. НапримСр, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ jump_compression Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»ΠΎΡΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π»ΠΎ всС вычислСния ΠΈ присваивания Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ лишними. Optimum-C выявил это ΠΈ ΡƒΠ΄Π°Π»ΠΈΠ» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ².

Π’ тСстС размноТСния констант ΠΈ ΠΊΠΎΠΏΠΈΠΉ Optimum-C ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ», Ρ‡Ρ‚ΠΎ присваиваниС i5 Π² ΠΎΠ±ΠΎΠΈΡ… условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… являСтся излишним ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ присваиваниям. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΡƒΠ΄Π°Π»ΠΈΠ» Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эти присваивания, Π½ΠΎ ΠΈ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

ΠΠ΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ оказалось ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… сохранСний Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ рСгистров. Optimum-C ΡƒΠ΄Π°Π»ΠΈΠ» ΠΎΠ΄Π½ΠΎ лишнСС присваиваниС, i=k5, Π² тСстС размноТСния констант ΠΈ ΠΊΠΎΠΏΠΈΠΉ ΠΈ лишнСС присваиваниС Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dead_code. Он Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠ» Π²Ρ‚ΠΎΡ€ΠΎΠ΅ лишнСС присваиваниС, i=2, Π² тСстС размноТСния констант ΠΈ ΠΊΠΎΠΏΠΈΠΉ, ΠΈ k=2, Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ присваиваниС.

Optimum-C - СдинствСнный компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытался Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сгСнСрированного ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ i5+i2 Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ.

Π’Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° стандартноС использованиС рСгистров, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… сСмСйством микропроцСссоров 80x86, Optimum-C Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСгистры. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ jump_compression ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±Ρ‹Π» ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² рСгистр. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ ссылок Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΊΡ€ΠΎΠΌΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ засылки Π² рСгистры.

Одной Π²Π°ΠΆΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ компилятор Optimum-C Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ, являСтся оптимизация Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ пытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вынСсСниС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

ВСст выполнСния ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ компилятор Datalight ΠΎΡ‡Π΅Π½ΡŒ эффСктивно управляСт Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ getc/putc, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ тСсты Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ врСмя.

Lattice Inc.

Π˜ΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ компилятор Lattice MS-DOS C ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π»ΡΡ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй. Он извСстСн ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ, прСдсказуСмого ΠΊΠΎΠ΄Π° ΠΈ выполняСт ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ. Lattice Π‘ выполняСт сниТСниС мощности, сТатиС Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Он Π½Π΅ удаляСт Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ присваивания послС тСста встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ лишниС присваивания Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dead_code. Π₯отя ΠΎΠ½ Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для нСдостиТимого printf Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dead_code, компилятор Lattice C Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΉ бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ LEAVE, которая являСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ инструкциСй.

ЕдинствСнными сгСнСрированными машинно-зависимыми инструкциями Π±Ρ‹Π»ΠΈ ENTER ΠΈ LEAVE, инструкции микропроцСссоров 80x86 для ΠΏΡ€ΠΎΠ»ΠΎΠ³ΠΎΠ² ΠΈ эпилогов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π±Π»Π°Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ENTER Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС Ρ†ΠΈΠΊΠ»ΠΎΠ² микропроцСссора, Ρ‡Π΅ΠΌ установка адрСсации стСкового Ρ„Ρ€Π΅ΠΉΠΌΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструкциями. Lattice C Π½Π΅ выполняСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»ΠΎΠ².