исполняСмый ΠΊΠΎΠ΄ это простыми словами

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ собствСнный ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” ΠΎΡ‚ Π°Π½Π³Π». native code ) β€” систСма ΠΊΠΎΠΌΠ°Π½Π΄ (язык) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ интСрпрСтируСтся нСпосрСдствСнно микропроцСссором ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

КаТдая модСль процСссора ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык, хотя Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… модСлях эти Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ сильно ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Говорят, Ρ‡Ρ‚ΠΎ процСссор A совмСстим с процСссором B, Ссли процСссор A ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Β«ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Β» ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ процСссора B. Если процСссор A Π·Π½Π°Π΅Ρ‚ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ процСссор B, Ρ‚ΠΎ B нСсовмСстим с A.

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

Π’Π°ΠΊΠΆΠ΅ инструкции Π±Ρ‹Π²Π°ΡŽΡ‚ постоянной Π΄Π»ΠΈΠ½Ρ‹ (Ρƒ MISC-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€) ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π½ΠΎΠΉ (Ρƒ x86 ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΎΡ‚ 8 Π΄ΠΎ 120 Π±ΠΈΡ‚ΠΎΠ²).

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

ПолСзноС

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

исполняСмый ΠΊΠΎΠ΄ β€” 3.4. исполняСмый ΠΊΠΎΠ΄ : Π€Π°ΠΉΠ», установлСнный Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ БИ, элСктронном устройствС ΠΈΠ»ΠΈ Π΅Π³ΠΎ части (ΠŸΠ—Π£, ТСсткий диск ΠΈ Ρ‚.Π΄.). ΠœΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° (ΠΊΠΎΠ΄) ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ логичСскиС,… … Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ-справочник Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² Π½ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎ-тСхничСской Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Код (значСния) β€” Код (Ρ„Ρ€. code, ΠΎΡ‚ Π»Π°Ρ‚. codex): Π’ ВикисловарС Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ Β«ΠΊΠΎΠ΄Β» … ВикипСдия

Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ β€” Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, шСлл ΠΊΠΎΠ΄ (Π°Π½Π³Π». shellcode) это Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ консоли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /bin/sh Unix shell, command.com Π² MS DOS ΠΈ cmd.exe Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows. Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒβ€¦ … ВикипСдия

Код консоли β€” Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, шСлл ΠΊΠΎΠ΄ (Π°Π½Π³Π». shellcode) это Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ консоли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /bin/sh Unix shell, command.com Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows. Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован как… … ВикипСдия

Код (ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€) β€” Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный Π½Π° JavaScript Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ исходный тСкст) тСкст ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ языкС программирования. Π’ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠΌ смыслС Π»ΡŽΠ±Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для транслятора. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ транслируСтся в… … ВикипСдия

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный Π½Π° JavaScript Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ исходный тСкст) тСкст ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ языкС программирования. Π’ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠΌ смыслС Π»ΡŽΠ±Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для транслятора. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ транслируСтся в… … ВикипСдия

Π¨Π΅Π»Π»-ΠΊΠΎΠ΄ β€” (Π°Π½Π³Π». shellcode, ΠΊΠΎΠ΄ запуска ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ) это Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡƒ процСссору, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /bin/sh Π² Unix shell, command.com Π² MS DOS ΠΈ cmd.exe Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows.… … ВикипСдия

Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ (Π°Π½Π³Π». byte code), ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ псСвдокод машинно нСзависимый ΠΊΠΎΠ΄ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ транслятором ΠΈ исполняСмый ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструкций Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° эквивалСнтны ΠΎΠ΄Π½ΠΎΠΉ или… … ВикипСдия

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” Π‘Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ (Π°Π½Π³Π». byte code), ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ псСвдокод машинно нСзависимый ΠΊΠΎΠ΄ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ транслятором ΠΈ исполняСмый ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструкций Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° эквивалСнтны ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким … ВикипСдия

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

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄

исполняСмый ΠΊΠΎΠ΄ это простыми словами. 200px %D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9 %D0%BA%D0%BE%D0%B4 %D0%AD%D0%92%D0%9C %C2%AB%D0%9C%D0%B8%D0%BD%D1%81%D0%BA 22%C2%BB. исполняСмый ΠΊΠΎΠ΄ это простыми словами Ρ„ΠΎΡ‚ΠΎ. исполняСмый ΠΊΠΎΠ΄ это простыми словами-200px %D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9 %D0%BA%D0%BE%D0%B4 %D0%AD%D0%92%D0%9C %C2%AB%D0%9C%D0%B8%D0%BD%D1%81%D0%BA 22%C2%BB. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° исполняСмый ΠΊΠΎΠ΄ это простыми словами. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 200px %D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B9 %D0%BA%D0%BE%D0%B4 %D0%AD%D0%92%D0%9C %C2%AB%D0%9C%D0%B8%D0%BD%D1%81%D0%BA 22%C2%BB. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ собствСнный ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” ΠΎΡ‚ Π°Π½Π³Π». native code ) β€” систСма ΠΊΠΎΠΌΠ°Π½Π΄ (язык) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ интСрпрСтируСтся нСпосрСдствСнно микропроцСссором ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ΠœΠ°ΡˆΠΈΜΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (платфо́рмСнно-ориСнти́рованный ΠΊΠΎΠ΄), ΠΌΠ°ΡˆΠΈΜΠ½Π½Ρ‹ΠΉ язы́к β€” систСма ΠΊΠΎΠΌΠ°Π½Π΄ (Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, которая интСрпрСтируСтся нСпосрСдствСнно процСссором ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ этой Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. [1]

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

КаТдая модСль процСссора ΠΈΠΌΠ΅Π΅Ρ‚ собствСнный Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, хотя Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… модСлях эти Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ сильно ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Говорят, Ρ‡Ρ‚ΠΎ процСссор A совмСстим с процСссором B, Ссли процСссор A ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Β«ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Β» ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ процСссора B. Если процСссоры A ΠΈ B ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ подмноТСство инструкций, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ совмСстимы, Ρ‚ΠΎ говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Β«Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹Β» (ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄).

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

Машинная инструкция

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

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

АрхитСктура Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ процСссора опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ½ способСн Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, ΠΈ ΠΊΠ°ΠΊΠΎΠΉ машинной инструкции ΠΊΠ°ΠΊΠΈΠ΅ числовыС ΠΊΠΎΠ΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (ΠΎΠΏΠΊΠΎΠ΄Ρ‹) ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚. ΠžΠΏΠΊΠΎΠ΄Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ постоянной Π΄Π»ΠΈΠ½Ρ‹ (Ρƒ RISC-, MISC-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€) ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π½ΠΎΠΉ (Ρƒ CISC-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86 ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΎΡ‚ 8 Π΄ΠΎ 120 Π±ΠΈΡ‚ΠΎΠ²).

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ супСрскалярныС процСссоры способны Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколько ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΊΡ‚.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ язык программирования

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ язык программирования ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ самый Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ прСдставлСния скомпилированных ΠΈΠ»ΠΈ ассСмблированных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π₯отя Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прямо Π² машинном ΠΊΠΎΠ΄Π΅, сСйчас это дСлаСтся Ρ€Π΅Π΄ΠΊΠΎ Π² силу громоздкости ΠΊΠΎΠ΄Π° ΠΈ трудоёмкости Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния рСсурсами процСссора, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ситуаций, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Π°Ρ оптимизация. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π½Π° языках Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΈ транслируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компиляторами. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (Ρ‚Π°ΠΊΠΆΠ΅ собствСнным ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ β€” ΠΎΡ‚ Π°Π½Π³Π». native code ), ΠΊΠΎΠ³Π΄Π° говорят ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-зависимых частях языка ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. [2]

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Basic ΠΈΠ»ΠΈ Python) Π½Π΅ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄; вмСсто этого ΠΎΠ½ΠΈ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСпосрСдствСнно ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ языка, Π»ΠΈΠ±ΠΎ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² псСвдокод (Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄). Однако ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ этих языков (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сами ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ процСссоры), ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, прСдставлСны Π² машинном ΠΊΠΎΠ΄Π΅.

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° машинного ΠΊΠΎΠ΄Π° рСализуСтся Π΅Ρ‰Ρ‘ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ слоСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ интСрфСйс машинного языка Ρƒ всСй Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ ΠΈΠ»ΠΈ сСмСйства ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ структурныС отличия ΠΌΠ΅ΠΆΠ΄Ρƒ собой, ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ пСрСнос ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² машинном ΠΊΠΎΠ΄Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ модСлями ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся сСмСйство ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² IBM System/360 ΠΈ ΠΈΡ… ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠΎΠ²: нСсмотря Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΡˆΠΈΠ½Ρ‹ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΎΡ‚ 8 Π΄ΠΎ 64 Π±ΠΈΡ‚ ΠΈ Π²Ρ‹ΡˆΠ΅, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρƒ Π½ΠΈΡ… общая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ машинного языка.

ИспользованиС слоя ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ΄Π° для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ эмулятора позволяСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’ Π»ΠΈΠ½Π΅ΠΉΠΊΠ΅ System/360 это использовалось для пСрСноса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… машин IBM Π½Π° Π½ΠΎΠ²ΠΎΠ΅ сСмСйство β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, эмулятор IBM 1401/1440/1460 Π½Π° IBM S/360 model 40.

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ-нСзависимый ΠΊΠΎΠ΄

ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ-нСзависимый ΠΊΠΎΠ΄ (Π°Π½Π³Π». position-independent code ) β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π² любой области памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС ссылки Π½Π° ячСйки памяти Π² Π½Π΅ΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ счётчика ΠΊΠΎΠΌΠ°Π½Π΄). Π’Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая хотя ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° Π² Π»ΡŽΠ±ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π½ΠΎ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС. [1]

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«Hello, world!Β»

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«Hello, world!Β» для процСссора Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ x86 (ОБ MS DOS, Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ BIOS прСрывания int 10h) выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии):

BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ 10016. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ инструкции Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ Ρ†Π²Π΅Ρ‚ΠΎΠΌ:

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

исполняСмый ΠΊΠΎΠ΄

3.4. исполняСмый ΠΊΠΎΠ΄ : Π€Π°ΠΉΠ», установлСнный Π² Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ БИ, элСктронном устройствС ΠΈΠ»ΠΈ Π΅Π³ΠΎ части (ΠŸΠ—Π£, ТСсткий диск ΠΈ Ρ‚.Π΄.). ΠœΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ содСрТимоС Ρ„Π°ΠΉΠ»Π° (ΠΊΠΎΠ΄) ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ логичСскиС, арифмСтичСскиС, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… [1].

ПолСзноС

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ β€” Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ систСмС ΠΊΠΎΠΌΠ°Π½Π΄ Π² Ρ†Π΅Π»ΠΎΠΌ; ΠΎΠ± инструкциях см.: Код ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°). ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ собствСнный ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚ Π°Π½Π³Π». native code) систСма… … ВикипСдия

Код (значСния) β€” Код (Ρ„Ρ€. code, ΠΎΡ‚ Π»Π°Ρ‚. codex): Π’ ВикисловарС Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ Β«ΠΊΠΎΠ΄Β» … ВикипСдия

Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ β€” Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, шСлл ΠΊΠΎΠ΄ (Π°Π½Π³Π». shellcode) это Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ консоли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /bin/sh Unix shell, command.com Π² MS DOS ΠΈ cmd.exe Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows. Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒβ€¦ … ВикипСдия

Код консоли β€” Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, шСлл ΠΊΠΎΠ΄ (Π°Π½Π³Π». shellcode) это Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ консоли, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /bin/sh Unix shell, command.com Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows. Код ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован как… … ВикипСдия

Код (ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€) β€” Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный Π½Π° JavaScript Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ исходный тСкст) тСкст ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ языкС программирования. Π’ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠΌ смыслС Π»ΡŽΠ±Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для транслятора. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ транслируСтся в… … ВикипСдия

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный Π½Π° JavaScript Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ исходный тСкст) тСкст ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ языкС программирования. Π’ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠΌ смыслС Π»ΡŽΠ±Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для транслятора. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ транслируСтся в… … ВикипСдия

Π¨Π΅Π»Π»-ΠΊΠΎΠ΄ β€” (Π°Π½Π³Π». shellcode, ΠΊΠΎΠ΄ запуска ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ) это Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ исполняСмый ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡƒ процСссору, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /bin/sh Π² Unix shell, command.com Π² MS DOS ΠΈ cmd.exe Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Microsoft Windows.… … ВикипСдия

Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ (Π°Π½Π³Π». byte code), ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ псСвдокод машинно нСзависимый ΠΊΠΎΠ΄ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ транслятором ΠΈ исполняСмый ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструкций Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° эквивалСнтны ΠΎΠ΄Π½ΠΎΠΉ или… … ВикипСдия

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” Π‘Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ (Π°Π½Π³Π». byte code), ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ псСвдокод машинно нСзависимый ΠΊΠΎΠ΄ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ транслятором ΠΈ исполняСмый ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ инструкций Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° эквивалСнтны ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким … ВикипСдия

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

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ. 9: исполняСмый ΠΊΠΎΠ΄

Напоминаю, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пишСм компилятор для ΠΈΠ³Ρ€ΡƒΡˆΠ΅Ρ‡Π½ΠΎΠ³ΠΎ языка Π΄ΠΆΠ΅ΠΉ-скрип. Начали с компиляции Π² ΠΏ-ΠΊΠΎΠ΄, ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎ сил Π½Π° Π΅Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΈ ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ ΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ этапу компиляции β€” ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ машинно-зависимого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Никаких замысловатых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ Π½Π΅Ρ‚: ΠΏΠΎ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счёту, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΌΠ΅Π½Π° ΠΎΠ΄Π½ΠΎΠΉ систСмы ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Π”Π°Π»Π΅Π΅ Π² постС:

Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ΄Π°

Рискну ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ этот пост Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ процСссор x86 ΠΈΠ»ΠΈ x64. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств извиняюсь: Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠΌΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³Π°Π΄ΠΆΠ΅Ρ‚Π° Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΌΠ½Π΅ слишком слоТно Ρ€Π°Π·Π΄ΠΎΠ±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ экзСмплярчик для экспСримСнтов.

ΠŸΠΎΡΡ‚Π°Ρ€Π°Π΅ΠΌΡΡ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ «кроссплатформСнный» ΠΊΠΎΠ΄, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ работоспособный ΠΈ Π½Π° x86, ΠΈ Π½Π° x64. БосрСдоточимся ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° машинном ΠΊΠΎΠ΄Π΅, Π° Π½Π΅ Π½Π° внутрСнностях Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ELF ΠΈ взаимодСйствии с Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ; поэтому Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Β«ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹ΠΌ куском», Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ досовскому Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ COM. Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ с диска ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ наш собствСнный Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ рСгистрами, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π΄Π°ΠΆΠ΅ Ссли Π² Π½Π΅ΠΉ ΠΏΡ€ΠΈ вычислСниях происходят пСрСполнСния, Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈ Π½Π° x64, ΠΈ Π½Π° x86.

Какой ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ; Π΄Π΅Π»ΠΎ Π·Π° ΠΌΠ°Π»Ρ‹ΠΌ β€” Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ΅.

Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ

Π‘Π΅Ρ€Ρ‘ΠΌ Π·Π° основу давнишний ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏ-ΠΊΠΎΠ΄Π°, оставляСм всю ΡˆΠ΅Π»ΡƒΡ…Ρƒ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π²ΠΎΠ΄Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ), Π° Π½ΡƒΡ‚Ρ€ΠΎ (Ρ†ΠΈΠΊΠ» выполнСния ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄) замСняСм Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Π±Ρ‹ это обычная сишная функция.
#include
#include
#include
#include
#include

const char * fdata = NULL ; // вСсь ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

int main( int argc, char ** argv) <

if (argc!= 2 ) <
printf( «Missing code file name. \n » );
exit( 1 );
>

(( void (*)( void **)) fdata)(linkarea); // запуск

ИзмСнСния в п-кодС

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Π° инструкций x86/x64 β€” Π΅Π³ΠΎ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΈ Π½Π΅ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π•Π΄Π²Π° Π»ΠΈ Π½Π΅ Π»ΡŽΠ±ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ трСмя-Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. ΠŸΠΎΡΡ‚Π°Ρ€Π°Π΅ΠΌΡΡ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏ-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. (Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ случай Β«ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сквозь Π³Π»Π°Π·ΠΎΠΊΒ» β€” peephole optimization, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² Ρ†Π΅Π»ΠΎΠΌ, Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ смСТных ΠΊΠΎΠΌΠ°Π½Π΄. Π£ нас Π²ΠΎΠΎΠ±Ρ‰Π΅ каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° обрабатываСтся нСзависимо ΠΎΡ‚ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΡ….)

ГСнСрация

Π˜Ρ‚Π°ΠΊ, Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΏΠΎ ΠΏ-ΠΊΠΎΠ΄Ρƒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ вСсь исполнимый ΠΊΠΎΠ΄ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ code ; Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·, ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ смСщСния. ПослС этого Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вСсь ΠΊΠΎΠ΄ ΠΈ всС строки.

Π― постарался ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· листинга самыС нСинтСрСсныС куски, Ρ‡Ρ‚ΠΎΠ± Ρ…ΠΎΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ. ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилятора Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Π½Π° tyomitch.net.ru/jsk.y.natv.html

Π§Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ?

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ компилятор, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠΌ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΈ запускаСм:

]$ bison jsk.y
[tyomitch@home

]$ ./jskld code
Π—Π°Π΄ΡƒΠΌΠ°ΠΉ число ΠΎΡ‚ 0 Π΄ΠΎ 1000, Π° я Π±ΡƒΠ΄Ρƒ ΡƒΠ³Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ
Π­Ρ‚ΠΎ 500? (1=мСньшС, 2=большС, 3=ΠΏΠΎΠΏΠ°Π») 1
Π­Ρ‚ΠΎ 249? (1=мСньшС, 2=большС, 3=ΠΏΠΎΠΏΠ°Π») 3
Π£Ρ€Π°! Π― ΠΌΠΎΠ»ΠΎΠ΄Π΅Ρ†!

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Π²ΠΎ Ρ‡Ρ‚ΠΎ наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ?

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

исполняСмый ΠΊΠΎΠ΄ это простыми словами. 180px html source code. исполняСмый ΠΊΠΎΠ΄ это простыми словами Ρ„ΠΎΡ‚ΠΎ. исполняСмый ΠΊΠΎΠ΄ это простыми словами-180px html source code. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° исполняСмый ΠΊΠΎΠ΄ это простыми словами. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 180px html source code. ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ собствСнный ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄, ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” ΠΎΡ‚ Π°Π½Π³Π». native code ) β€” систСма ΠΊΠΎΠΌΠ°Π½Π΄ (язык) ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ интСрпрСтируСтся нСпосрСдствСнно микропроцСссором ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Π˜ΡΡ…ΠΎΜΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (Ρ‚Π°ΠΊΠΆΠ΅ исхо́дный тСкст) β€” тСкст ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ языкС программирования. Π’ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠΌ смыслС β€” Π»ΡŽΠ±Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для транслятора.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ транслируСтся Π² исполняСмый ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ компилятора, Π»ΠΈΠ±ΠΎ исполняСтся нСпосрСдствСнно ΠΏΠΎ тСксту ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

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

НазначСниС

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π»ΠΈΠ±ΠΎ выполняСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ИзмСнСния Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π΄ исходным, с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ.

Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° β€” Π² качСствС описания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. По тСксту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π΅Ρ‘ повСдСния. Для облСгчСния понимания исходного ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ срСдства, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ исходному ΠΊΠΎΠ΄Ρƒ β€” Ρ‚. Π½. Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ часто пСрСносят исходный ΠΊΠΎΠ΄ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Ρ‡Ρ‚ΠΎ носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π° (Software reusability).

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” ваТнСйший ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для процСсса портирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π‘Π΅Π· исходного ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ части ПО, ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ слишком слоТно, Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ

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

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

Для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ с исходным ΠΊΠΎΠ΄ΠΎΠΌ, для совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ программистов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ систСмы управлСния вСрсиями.

ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π΅Ρ‚ Β«Ρ…ΠΎΡ€ΠΎΡˆΠΎ написанного» ΠΈΠ»ΠΈ Β«ΠΏΠ»ΠΎΡ…ΠΎ написанного» ΠΊΠΎΠ΄Π°. Но Ρ‚ΠΎ, ΠΊΠ°ΠΊ написан ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ΅Ρ‚ сильно Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° процСсс сопровоТдСния ПО. О качСствС исходного ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ:

НСисполняСмый исходный ΠΊΠΎΠ΄

ΠšΠΎΠΏΠΈΠ»Π΅Ρ„Ρ‚Π½Ρ‹Π΅ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ для свободного ПО Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ распространСния исходного ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ для Ρ€Π°Π±ΠΎΡ‚, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€.

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях исходным ΠΊΠΎΠ΄ΠΎΠΌ считаСтся Ρ„ΠΎΡ€ΠΌΠ° Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ для Π΅Ρ‘ рСдактирования. Π’ лицСнзиях, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ПО, ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ вСрсиСй Π² Β«ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅Β». Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

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

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