АссСмблСр компилятор: Π—Π° Ρ‡Ρ‚ΠΎ я люблю ассСмблСр? / Π₯Π°Π±Ρ€

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

ассСмблСр — Как компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ языкС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚?

Вопрос Π·Π°Π΄Π°Π½

Π˜Π·ΠΌΠ΅Π½Ρ‘Π½ 2 Π³ΠΎΠ΄Π° 2 мСсяца Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ 504 Ρ€Π°Π·Π°

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» нСсколько ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… вопросов Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ нашСл ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Как компилятор Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написан Π½Π° Π‘ΠΈ, вСдь ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам компилятор Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. И Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ трансляция Π² ассСмблСр ΠΏΠΎ сути Ρ€Π°Π²Π½Π° компиляции? (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄)

  • ассСмблСр
  • компиляция
  • трансляция

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ си написан Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии компилятора. Но ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎ Π΄Π°Π²Π½ΠΎ-Π΄Π°Π²Π½ΠΎ сущСствовал ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° компилятор си Π±Ρ‹Π» написан Π½Π° Ρ‡Π΅ΠΌ Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π― ΠΊ соТалСнию, Π½Π΅ знаю этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.

Но Π²ΠΎΡ‚ с ΠΏΠ»ΡŽΡΠΎΠ²Ρ‹ΠΌ компилятором всС ΠΏΡ€ΠΎΡ‰Π΅ — Π²Π½Π°Ρ‡Π°Π»Π΅ Π±Ρ‹Π» написан cfront — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° си, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»Π° «ΠΏΠ»ΡŽΡΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄» Π² ΡΠΈΡˆΠ½Ρ‹ΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π°.

Π‘ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ происходило. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, go Π±Ρ‹Π» Π²Π½Π°Ρ‡Π°Π»Π΅ написан Π½Π° си, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» максимально ΠΏΠΎΡ…ΠΎΠΆ Π½Π° go ΠΊΠΎΠ΄ (https://go-review.googlesource.com/c/go/+/5652).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, с чистым си компилятором для x86 скорСС всСго Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ — Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ просто для доступной Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ взяли си компилятор ΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ. И Π³ΠΎΡ‚ΠΎΠ²ΠΎ. И Ρƒ нас ΡƒΠΆΠ΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ для Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Но ΠΊΠ°ΠΊ появился самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ компилятор Ρ‚ΠΎΠ³Π΄Π°? Π•ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ https://jameshfisher.com/2018/01/11/bootstrapping-a-c-compiler/ которая описываСт, ΠΊΠ°ΠΊ поэтапно ΠΌΠΎΠΆΠ½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

А здСсь https://stackoverflow.com/questions/65751457/how-could-one-possibly-bootstrap-a-c-compilerfrom-source ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π’Ρ‹.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π²Π½Π°Ρ‡Π°Π»Π΅ всС ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Ρ€ΡƒΡ‡ΠΊΠ°ΠΌΠΈ Π² памяти, Π² Π½ΠΎΠ»ΠΈΠΊΠ°Ρ… ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ…, ΠΏΠΎΡ‚ΠΎΠΌ постСпСнно Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°ΡŽΡ‚ΡΡ инструмСнты ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Ρ‚Π°ΠΊΠΈΠΌΠΈ итСрациями ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΉΡ‚ΠΈ Π΄ΠΎ соврСмСнного ΠΌΠΈΡ€Π°. Π’ΠΎΡ‚ люди ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ си компилятор https://github.com/rdtscp/c-bootstrap

И Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ трансляция Π² ассСмблСр ΠΏΠΎ сути Ρ€Π°Π²Π½Π° компиляции

Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ компилятор ассСмблСра, Ρ‚ΠΎ Π΄Π°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ «ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€»? ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ассСмблСры Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅. Π’ΠΎΡ‚ ΠΆΠ΅ FLAT assembler ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ разувСсистым синтаксисом, Ρ‡Ρ‚ΠΎ я Π±Ρ‹ побоялся Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ компилятор «ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ для Π·Π°ΠΌΠ΅Π½Ρ‹ Π½Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄».

Π”Π°, процСсс, ΠΊΠΎΠ³Π΄Π° компилятор ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ сам сСбя называСтся bootstrapping. ΠΈ это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ html.

4

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅

РСгистрация Ρ‡Π΅Ρ€Π΅Π· Google

РСгистрация Ρ‡Π΅Ρ€Π΅Π· Facebook

РСгистрация Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡ‡Ρ‚Ρƒ

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π· рСгистрации

ΠŸΠΎΡ‡Ρ‚Π°

НСобходима, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ показываСтся

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π· рСгистрации

ΠŸΠΎΡ‡Ρ‚Π°

НСобходима, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ показываСтся

By clicking β€œΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ отвСт”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

ΠžΠ±Π·ΠΎΡ€ встроСнного ΠΊΠΎΠ΄Π° Π½Π° ассСмблСрС

Twitter LinkedIn Facebook АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ

Π‘Π»ΠΎΠΊ, относящийся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ систСмам Microsoft

ВстроСнный ассСмблСр позволяСт Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ инструкции языка ассСмблСра нСпосрСдствСнно Π² исходныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π‘ ΠΈ Π‘++ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… шагов ΠΏΠΎ сборкС ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅.

ВстроСнный ΠΊΠΎΠ΄ Π½Π° ассСмблСрС встроСн Π² компилятор, поэтому Π²Π°ΠΌ Π½Π΅ трСбуСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сборщик для языка ассСмблСра, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Microsoft Macro Assembler (MASM).

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

__asm ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ встроСнный ассСмблСр ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ C ΠΈΠ»ΠΈ C++ являСтся допустимым. Он Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π—Π° Π½ΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ инструкция ΠΏΠΎ сборкС, Π³Ρ€ΡƒΠΏΠΏΠ° инструкций, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π»ΠΈΠ±ΠΎ, Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС, пустая ΠΏΠ°Ρ€Π° ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок.

Π’Π΅Ρ€ΠΌΠΈΠ½ «Π±Π»ΠΎΠΊ __asm» Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ относится ΠΊ любой инструкции ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅ инструкций, Π² скобках ΠΈΠ»ΠΈ Π±Π΅Π· Π½ΠΈΡ….

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄Β β€” это простой Π±Π»ΠΎΠΊ __asm, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. (Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ»ΠΎΠ³Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.)

// asm_overview.cpp
// processor: x86
void __declspec(naked) main()
{
    // Naked functions must provide their own prolog...
    __asm {
        push ebp
        mov ebp, esp
        sub esp, __LOCAL_SIZE
    }
    // ... and epilog
    __asm {
        pop ebp
        ret
    }
}

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ __asm ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкциСй ΠΏΠΎ сборкС.

__asm push ebp
__asm mov  ebp, esp
__asm sub  esp, __LOCAL_SIZE

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово __asm являСтся Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ инструкции ассСмблСра Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строкС.

__asm push ebp   __asm mov  ebp, esp   __asm sub  esp, __LOCAL_SIZE

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ°, относящСгося Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ систСмам ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚

ВстроСнный ассСмблСр

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования ΠΊΠΎΠ΄Π° языка программирования высокого уровня Π² ΠΊΠΎΠ΄ машинного языка. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ассСмблСр ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ языка уровня ассСмблСра Π² ΠΊΠΎΠ΄ машинного языка.

Оба эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° относятся ΠΊ контСксту выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ считаСт вСсь ΠΊΠΎΠ΄ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ассСмблСр ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ построчно.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ сравним компилятор ΠΈ ассСмблСр. ΠšΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языках высокого уровня Π² связанной ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π°Π±ΠΈΡ‚ΡƒΡ€ΠΈΠ΅Π½Ρ‚Π°ΠΌ UPSC ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ прСдстоящСму экзамСну IAS, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вопросы, основанныС Π½Π° Π·Π½Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, часто Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² сСкции Π½Π°ΡƒΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ экзамСна.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром PDF:- Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ PDF здСсь

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свои ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ знания, ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ссылкам ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ…, прилоТСниях, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии ΠΈ Ρ‚. Π΄.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΈ ассСмблСр

И компилятор, ΠΈ ассСмблСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для прСобразования ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° языкового кодирования Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈ Π² основном это СдинствСнноС сходство ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… аспСктах.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ сравнСниС ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром для справки ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ²:

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром
ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ
Ѐункция: Π•Π³ΠΎ основная функция Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° программирования высокого уровня Π² ΠΊΠΎΠ΄ машинного языка Ѐункция: Основная функция ассСмблСра Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° уровня сборки Π² ΠΊΠΎΠ΄ машинного уровня
Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ прСобразуСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык Он Π½Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ вСсь ΠΊΠΎΠ΄ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·
БущСствуСт 7 Ρ„Π°Π· компилятора:
  1. ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€
  2. БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€
  3. БСмантичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€
  4. Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄
  5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°
  6. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄ΠΎΠ²
  7. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ошибок
Π•ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ Ρ„Π°Π·Ρ‹ ассСмблСра:
  1. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ„Π°Π·Π°
  2. Вторая Ρ„Π°Π·Π°
Π’Π²ΠΎΠ΄ΠΈΡ‚ исходный ΠΊΠΎΠ΄ Π’Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄ уровня сборки
Π’Ρ‹Π²ΠΎΠ΄ прСдставляСт собой ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ машинного ΠΊΠΎΠ΄Π° Выводится Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄
Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ компиляторов Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:
  1. ΠšΡ€ΠΎΡΡ-компилятор
  2. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ компилятор
  3. ДСкомпилятор
  4. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ исходного ΠΊΠΎΠ΄Π°
Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ассСмблСров Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:
  1. ΠžΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ сборщики
  2. ΠŸΠΎΠ³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎ-Ρ€Π°Π·Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹Π΅ сборщики

C++ β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка, Π° GNU β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ассСмблСра.

УпомянутоС Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ сравнСниС ясно позволяСт ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Как ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€Π°Π·Π΄Π΅Π»Π° «Наука ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°Β» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ экзамСна Π½Π° Π³Ρ€Π°ΠΆΠ΄Π°Π½ΡΠΊΡƒΡŽ слуТбу. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠ± этом Π½Π° страницС UPSC Notes: Science & Technology.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром, Π΅ΡΡ‚ΡŒ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… статСй, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ просто Π½Π° свои ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅:

  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ поисковой систСмой ΠΈ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠžΠ—Π£ ΠΈ ΠŸΠ—Π£
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ брандмауэром ΠΈ антивирусом
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ WWW ΠΈ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ MS Excel ΠΈ MS Word
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚ΠΎΠΌ ΠΈ WordPad
  • Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ TCP/IP ΠΈ модСлью OSI

ΠŸΡ€Π΅Ρ‚Π΅Π½Π΄Π΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 100 Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ, основанными Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ экзамСна UPSC, Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎ ссылкС.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром PDF:- Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ PDF здСсь

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы ΠΎΠ± ассСмблСрС ΠΈ компиляторС

Q1

Какова функция ассСмблСра ΠΈ компилятора?

ЦСлью ассСмблСра являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ языка ассСмблСра Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ компиляторы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ инструкций машинного ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции высокого уровня, ассСмблСры ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ машинного ΠΊΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции ассСмблСра.

Q2

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компилятор?

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ β€” это слуТСбныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π΅Ρ€ΡƒΡ‚ ваш ΠΊΠΎΠ΄ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π΅Π³ΠΎ Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ машинного ΠΊΠΎΠ΄Π°. Π—Π°Ρ‚Π΅ΠΌ компилятор ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ построчно, пСрСводя ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ машинного языка.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ схСму экзамСна ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ UPSC, ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΠΎ ссылкС.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСдниС обновлСния экзамСна, совСты ΠΏΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π² BYJU’S.

компиляторов ΠΈ ассСмблСров

компиляторов ΠΈ ассСмблСров

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄?

ЀактичСская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая выполняСтся Π² ЦП, состоит ΠΈΠ· инструкций Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ; ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ 0 ΠΈ 1, хранящиСся Π² словах памяти. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹ срСдства для этого Π½ΠΈ использовались, ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ адрСсам, Ρ‡Ρ‚ΠΎΠ±Ρ‹ диспСтчСрский ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ЦП ΠΌΠΎΠ³ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ инструкции.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π°ΠΌ-людям Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° машинном ΠΊΠΎΠ΄Π΅; это Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. ВмСсто этого ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² язык ассСмблСра ; это Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСно Π² Π²ΠΈΠ΄Π΅ списка символов ASCII, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Π±ΡƒΠΊΠ²Ρ‹ слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π»Π΅Π³Ρ‡Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π»Π΅Π³Ρ‡Π΅ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ; Π½ΠΎ ΠΎΠ½ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ инструкциям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выполняСт ЦП, ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ‚Π°ΠΊΠΈΠ΅ инструкции.

Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, INC COUNTER (Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа, хранящСгося Π² рССстрС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ присвоСно ΠΌΠ΅Ρ‚ΠΊΠ° COUNTER» Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Π΅ΠΌ 00101010001100; Π΄Π°ΠΆΠ΅ Ссли это написано Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (0A8C), это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³Ρ‡Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ. (язык Π²Ρ€ΠΎΠ΄Π΅ C Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся; ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСн строкой символы ASCII; Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ слово ΠΈΠ»ΠΈ строчка ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ соотвСтствуСт ΠΊ ΠΎΠ΄Π½ΠΎΠΉ инструкции, Π° ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ ряду Ρ‚Π°ΠΊΠΈΡ… инструкций).

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, язык ассСмблСра Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ; Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сомнСний Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ пСрСвСсти слова Π² инструкции; для этого Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ряд ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠΌΠ΅Π½Π½ΠΎ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C ΠΈΠ»ΠΈ ассСмблСрС

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

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ написаны Π½Π° «языкС высокого уровня». Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C, Π° Π½Π΅ ассСмблСр. Однако для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… спСцифичСских Π·Π°Π΄Π°Ρ‡ ассСмблСр ΠΌΠ½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ подходящим языком.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° C

  • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌΠΈ ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ структурированными.
  • Π›Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ написанныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ довольно слоТный.
  • ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C, Ссли ΠΎΠ½ написан Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ адрСсов памяти.

Одна ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСнСсСна Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСссор Π»Π΅Π³Ρ‡Π΅.

НСдостатки C

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

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

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ компилятором ΠΈ ассСмблСром?

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС исходного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C; Π­Ρ‚ΠΎ Ρ„Π°ΠΉΠ» символов ASCII. Он ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π»ΠΈΠ±ΠΎ язык ассСмблСра ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² качСствС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ шага ΠΈΠ»ΠΈ нСпосрСдствСнно ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’ любом случаС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

АссСмблСр ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС исходного ΠΊΠΎΠ΄Π° язык ассСмблСра ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°; это Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ» символов ASCII; ΠΎΠ½ использовал это для создания машинного ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ программирования Π½Π° ассСмблСрС ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ страница.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Иногда программисты Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ написали, Π½ΠΎ Π½Π΅ хотят ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ источник ΠΊΠΎΠ΄ для своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Один ΠΈΠ· распространСнных способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°». Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ большиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

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

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

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

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

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


Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

АссСмблСр ΠΈ компилятор ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ исходному ΠΊΠΎΠ΄Ρƒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ инструкции компилятору/ассСмблСру, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Β«Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β». ΠΈ поэтому Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСлаю.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define позволяСт ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ компилятор/ассСмблСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слово Π΄Ρ€ΡƒΠ³ΠΈΠΌ словом. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Ρ„Π°ΠΉΠ» ищСтся ΠΏΠΎ всСм вхоТдСниям ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ³Π΄Π° совпадСниС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, ΠΎΠ½ΠΎ замСняСтся Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ словом. Π­Ρ‚ΠΎΡ‚ обСспСчиваСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ Π²Π²ΠΎΠ΄Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΠΌΠ΅Π½Π°. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ·ΠΆΠ΅, Ссли это Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

НапримСр,
#define z_bit status2
ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±ΠΈΡ‚ Π² рСгистрС состояния.

Π“Π΄Π΅ Π±Ρ‹ Π²Ρ‹ Π½ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ‘z_bit’ Π² своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ассСмблСр ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ это ΠΊΠ°ΠΊ ссылку Π½Π° Π±ΠΈΡ‚ 2 рСгистра состояния.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° include просто ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ», содСрТащий исходный ΠΊΠΎΠ΄.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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