На Ρ‡Π΅ΠΌ написан assembler

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ассСмблСр ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ

Π­Ρ‚ΠΎΠΌΡƒ языку ΡƒΠΆΠ΅ Π·Π° 70, Π½ΠΎ Π½Π° пСнсию ΠΎΠ½ ΠΏΠΎΠΊΠ° Π½Π΅ собираСтся.

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

Полина Π‘ΡƒΠ²ΠΎΡ€ΠΎΠ²Π° для Skillbox Media

Π•ΡΡ‚ΡŒ традиция Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ программирования с Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран строки Β«Hello world!Β». На языкС Python, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это всСго ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Всё просто, понятно ΠΈ красиво! Но Π΅ΡΡ‚ΡŒ язык программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ солидный кусок ΠΊΠΎΠ΄Π°:

Π­Ρ‚ΠΎ ассСмблСр. Волько Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠ»ΠΎΡ…. ΠŸΡ€ΠΎΡΡ‚ΠΎ Python β€” это язык высокого уровня, Π° ассСмблСр β€” Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ. Одна ΠΊΠΎΠΌΠ°Π½Π΄Π° Python ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ сразу нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ процСссора, Π° каТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра β€” всСго ΠΎΠ΄Π½Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

Π‘Π»ΠΎΠΆΠ½ΠΎ? Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚, ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚, спСциалист ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π›Π΅Π³ΠΊΠΎ ΠΈ доступно рассказываСт ΠΎ слоТных Π²Π΅Ρ‰Π°Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅.

НСмного ΠΎ процСссорах ΠΈ машинном языкС

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ язык ассСмблСра, Π½Π°Ρ‡Π½Ρ‘ΠΌ с Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ процСссор ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС с Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Β«Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒΒ».

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ β€” это элСктронноС устройство (сСйчас ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Π°Ρ микросхСма, Π° Ρ€Π°Π½ΡŒΡˆΠ΅ процСссоры Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Ρ†Π΅Π»Ρ‹Π΅ Π·Π°Π»Ρ‹), Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π΅ слов ΠΈ Ρ†ΠΈΡ„Ρ€. Он Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π΄Π²Π° уровня напряТСния: высокий β€” Π΅Π΄ΠΈΠ½ΠΈΡ†Π°, Π½ΠΈΠ·ΠΊΠΈΠΉ β€” ноль. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ каТдая процСссорная ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†: 1 β€” Π΅ΡΡ‚ΡŒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ, 0 β€” Π½Π΅Ρ‚.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с процСссором ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык. Он состоит ΠΈΠ· инструкций, записанных Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. КаТдая инструкция опрСдСляСт ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ: Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π½Π°Π΄ числами, Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ (ΠΏΠΎΡ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ), Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

НапримСр, для Intel 8088 инструкция 0000001111000011B β€” это опСрация слоТСния Π΄Π²ΡƒΡ… чисСл, Π° 0010101111000011B β€” вычитания.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° машинном языкС Π½Π΅Π»Π΅Π³ΠΊΠΎ β€” приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. Π’Ρ€ΡƒΠ΄Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° ΡƒΠΆ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ‡ΡƒΠΆΠΎΠΌ ΠΊΠΎΠ΄Π΅.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Π±Ρ‹Π» создан язык ассСмблСра, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ ΠΈ сокращСниями английских слов, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… ΡΡƒΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° mov ax, 6 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚: Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ число 6 Π² ячСйку памяти AXΒ».

Когда ΠΈ ΠΊΠ°ΠΊ Π±Ρ‹Π» создан ассСмблСр?

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π΅Ρ‰Ρ‘ Π² сороковых Π³ΠΎΠ΄Π°Ρ… ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°. АссСмблСр Π±Ρ‹Π» создан для ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π­Π’Πœ Π½Π° элСктронных Π»Π°ΠΌΠΏΠ°Ρ…, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… писали Π½Π° машинном языкС. А Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ памяти Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π±Ρ‹Π»ΠΎ ΠΌΠ°Π»ΠΎ, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΡƒΠΌΠ±Π»Π΅Ρ€Ρ‹ ΠΈ наТимая ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π”Π°ΠΆΠ΅ нСслоТныС вычислСния Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° Π­Π’Πœ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² памяти. Π£ΠΆΠ΅ Π² 1950 Π³ΠΎΠ΄Ρƒ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° пСрвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-транслятор, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠ»Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π½Π° понятном Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ языкС. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π°Π·Π²Π°Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ-сборщиком, Π° язык β€” языком ассСмблСра (ΠΎΡ‚ Π°Π½Π³Π». assembler β€” сборщик).

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

Как устроСн язык ассСмблСра?

АссСмблСр ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ языком Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поколСния, Ссли Π·Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нСпосрСдствСнно с процСссором, ΠΈ каТдая Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” это инструкция процСссора, Π° Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ языка ассСмблСра Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ называСтся ассСмблированиСм.

ΠšΠΎΠ΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² языкС ассСмблСра мнСмоничСскиС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для запоминания:

РСгистрам ΠΈ ячСйкам памяти ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ символичСскиС ΠΈΠΌΠ΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

EAX, EBX, AX, AH β€” ΠΈΠΌΠ΅Π½Π° для рСгистров;

meml β€” имя для ячСйки памяти.

НапримСр, Ρ‚Π°ΠΊ выглядит ΠΊΠΎΠΌΠ°Π½Π΄Π° слоТСния чисСл ΠΈΠ· рСгистров AX ΠΈ BX:

А это ΠΊΠΎΠΌΠ°Π½Π΄Π° вычитания чисСл ΠΈΠ· рСгистров AX ΠΈ BX:

ΠšΡ€ΠΎΠΌΠ΅ инструкций, Π² языкС ассСмблСра Π΅ΡΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ β€” ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ управлСния компилятором, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ-ассСмблСром.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

НС Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ассСмблСр β€” всСго лишь Π½Π°Π±ΠΎΡ€ инструкций процСссора с ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для программиста записью. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ язык программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹, условныС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ΄, Π½Π° ассСмблСрС, выводящий Π½Π° экран Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΡ‚ 1 Π΄ΠΎ 10:

Π—Π΄Π΅ΡΡŒ дСйствиС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ β€” ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ†ΠΈΠΊΠ»Π°Ρ… for ΠΈΠ»ΠΈ do while Π² языках высокого уровня.

Π•Π΄ΠΈΠ½ΠΎΠ³ΠΎ стандарта для языков ассСмблСра Π½Π΅Ρ‚. Π’ Ρ€Π°Π±ΠΎΡ‚Π΅ с процСссорами Intel Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²ΡƒΡ… синтаксисов: Intel ΠΈ AT&T. Ни Ρƒ Ρ‚ΠΎΠ³ΠΎ Π½ΠΈ Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π΅Ρ‚ особых прСимущСств: AT&T β€” стандартный синтаксис Π² Linux, Π° Intel ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠΈΡ€Π΅ Microsoft.

Одна ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² Π½ΠΈΡ… выглядит ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

НапримСр, Π² синтаксисС Intel:

mov eax, ebx β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· рСгистра eax Π² рСгистр ebx.

Π’ синтаксисС AT&T эта ΠΊΠΎΠΌΠ°Π½Π΄Π° выглядит Ρ‚Π°ΠΊ:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ для Ρ€Π°Π·Π½Ρ‹Ρ… сСмСйств процСссоров Π½ΡƒΠΆΠ΅Π½ свой ассСмблСр?

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ характСристик β€” Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. Π­Ρ‚ΠΎ Π΅Π³ΠΎ конструкция ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ рСгистры, адрСсация памяти ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄. Если Ρƒ процСссоров одинаковая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Ρ‚ΠΎ говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСмСйства.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄ для Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ процСссоров ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС, написанныС для ΠΎΠ΄Π½ΠΈΡ… сСмСйств, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° процСссорах ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… сСмСйств. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ассСмблСр Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ машинно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком.

ΠšΠΎΠΌΡƒ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ язык ассСмблСра?

Π”Π°ΠΆΠ΅ ΠΈΠ· нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Β«Hello, World!Β» Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ассСмблСр Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΊΠ°ΠΊ языки высокого уровня. Π‘ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° этом языкС сСйчас Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ области, Π³Π΄Π΅ ΠΎΠ½ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ:

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ микропроцСссоры ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ‚ΡŒ рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ смысл ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎ Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ языка ассСмблСра.

ВострСбованы Π»ΠΈ программисты Π½Π° ассСмблСрС сСгодня?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ. Π₯отя Π½Π° сайтах ΠΏΠΎ поиску Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Ρ‹ вряд Π»ΠΈ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ заявки ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΎΠ΄Π°Ρ‚Π΅Π»Π΅ΠΉ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ: «НуТСн программист Π½Π° ассСмблСрС», Π·Π°Ρ‚ΠΎ Ρ‚Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΈΡ…, Π³Π΄Π΅ трСбуСтся Π·Π½Π°Π½ΠΈΠ΅ ассСмблСра Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ языкам высокого уровня: C, C++ ΠΈΠ»ΠΈ Python. Π­Ρ‚ΠΎ вакансии рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², спСциалистов ΠΏΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ бСзопасности, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²/микропроцСссоров, систСмных программистов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π° β€” обычная Π² сфСрС IT: 80–300 тысяч Ρ€ΡƒΠ±Π»Π΅ΠΉ Π² зависимости ΠΎΡ‚ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΎΠΏΡ‹Ρ‚Π°. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вакансия рСвСрс-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π° Π½Π° HeadHunter, Π³Π΄Π΅ трСбуСтся Π·Π½Π°Π½ΠΈΠ΅ ассСмблСра:

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

Π‘Ρ‚ΠΎΠΈΡ‚ Π»ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ программирования с языка ассСмблСра?

НСт, Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Для этого Π΅ΡΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½:

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π·Π°Π½ΡΡ‚ΡŒΡΡ профСссиСй, связанной с ассСмблСром, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ программирования Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с языка высокого уровня. А ΡƒΠΆ ассСмблСр послС Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ нСслоТно.

ΠœΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel Π² 1979 Π³ΠΎΠ΄Ρƒ. Использовался Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… IBM PC.

Π”Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ β€” грамматичСской конструкциСй языка программирования, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ доступ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊ процСссорному Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, памяти, внСшним устройствам.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая обСспСчиваСт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ самой OC сразу послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

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

Π£Π²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅ ассСмблСр ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков?

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ассСмблСрС сСгодня Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ нишСвоС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‡Π°Ρ‰Π΅ воспринимаСтся ΠΊΠ°ΠΊ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎ ΠΏΠ΅Π΄Π°Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ΅, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π΄Π°ΠΆΠ΅ для своСй ниши.

АссСмблСр нСпрост. Он Π½Π΅Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π΅Π½. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° этом языкС происходит ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ сопряТСно с ошибками β€” Ρ‚Π°ΠΊΠΎΠ²ΠΎ общСпринятоС ΠΌΠ½Π΅Π½ΠΈΠ΅.

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

ЧСстно говоря, я Π΄Π°ΠΆΠ΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ смоТСт Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ассСмблСра ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ высокоуровнСвого ΠΊΠΎΠ΄Π° Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π³ΡƒΠ³Π»Π°. Π’ΠΎΡ‚ Π²Ρ‹ смоТСтС?

1. GUI

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°. Он создаСт ΠΎΠΊΠ½ΠΎ с WinAPI ΠΈ запускаСт для Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСний.

ΠŸΡ€ΠΎΡˆΡƒ вас, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π½ΠΈΠΌ ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅, написан Π»ΠΈ ΠΎΠ½ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² ассСмблСра ΠΈΠ»ΠΈ ΠΆΠ΅ Π½Π° высокоуровнСвом языкС?

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

НиТС Π΄Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Ѐункция β€œadd” просто складываСт Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… сумму.

3. Алгоритмы

Π­Ρ‚ΠΎ рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° TPK. Она содСрТит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, нСсколько Ρ†ΠΈΠΊΠ»ΠΎΠ², массив ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄Π° Π² консоль.

Π­Ρ‚ΠΎ Π½Π΅ ассСмблСр. ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Алика Π“Π»Π΅Π½Π½ΠΈ β€” AUTOCODE– ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… высокоуровнСвых языков.
источник: The Early Development Of Programming Languages by Donald E. Knuth, Luis Trabb Pardo, 1976.

ΠšΡΡ‚Π°Ρ‚ΠΈ, TPK ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Typical Pardo KnuthΒ» (Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠŸΠ°Ρ€Π΄ΠΎ ΠšΠ½ΡƒΡ‚, ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π΅Π³ΠΎ создатСля) Π­Ρ‚ΠΎ Π½Π΅ настоящий Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΈ создавался ΠΎΠ½ для дСмонстрации Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вычислСния супСрскалярной суммы.

5. Π•Ρ‰Π΅ структурноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

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

6. ООП (с классами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ)

7. ООП (с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ сообщСниями)

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ TCP-сСрвСра. Π’ Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ½ Π² собствСнной срСдС.

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

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° этом языкС Π½Π΅ всСгда Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, ΠΈ ΠΎΠ½ Π½Π΅ всСгда оказываСтся Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠ΅Π΄Π°Π½Ρ‚ΠΈΡ‡Π΅Π½. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ подходящий для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

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

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌ. Н. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°
Bauman National Library

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты

АссСмблСр

АссС́мблСр (ΠΎΡ‚ Π°Π½Π³Π». assembler β€” сборщик) β€” транслятор исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанной Π½Π° языкС ассСмблСра, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° машинном языкС.

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

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

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

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

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

Π’ Ρ†Π΅Π»ΠΎΠΌ история языков программирования ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°Π΅Ρ‚ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ программирования Π½Π° языкС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π΄ΠΎ манипуляции абстракциями Π²Ρ€ΠΎΠ΄Π΅ ΠŸΠΎΡΠ»Π°Ρ‚ΡŒ.ЛСсом(всСх(ΠΊΠΎΠΌΡƒ Π½Π΅ нравится эта ΡΡ‚Π°Ρ‚ΡŒΡ)) Ну ΠΈΠ»ΠΈ (ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ (лСсом (всСх (ΠΊΠΎΠΌΡƒ-Π½Π΅-нравится «ΡΡ‚Π°-ΡΡ‚Π°Ρ‚ΡŒΡ»)))) ΠΈΠ»ΠΈ

На языкС ассСмблСра этот ΠΊΠΎΠ΄ занял Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ 9000 строк. И ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π±Ρ‹ Π΄ΠΎΠ»Π³ΠΎΠΉ ΠΈ ΠΊΡ€ΠΎΠΏΠΎΡ‚Π»ΠΈΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ своСму созданию.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ примСнСния

АссСмблированиС ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

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

ДизассСмблСр

ДизассС́мблСр β€” транслятор, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС ассСмблСра.

По Ρ€Π΅ΠΆΠΈΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ дСлятся Π½Π°

АрхитСктуры

Под ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ процСссора ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ОБ ΠΈΠ»ΠΈ сСмСйство ОБ сущСствуСт свой АссСмблСр. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «кросс-ассСмблСры», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… с ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ (ΠΈΠ»ΠΈ Π² срСдС ΠΎΠ΄Π½ΠΎΠΉ ОБ) Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ОБ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ исполняСмый ΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌ ΠΊ исполнСнию Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΈΠ»ΠΈ Π² срСдС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ОБ.

Π―Π·Ρ‹ΠΊ ассСмблСра

Assembler β€” язык программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ записи ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для восприятия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ языка ассСмблСра ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ процСссора ΠΈ, фактичСски, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи (ΠΌΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄) ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ язык ассСмблСра обСспСчиваСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ абстракции: связываниС частСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΊΠΈ с ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

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

КаТдая модСль процСссора, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΈΠΌΠ΅Π΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ язык (ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚) ассСмблСра.

Достоинства ΠΈ нСдостатки

Бинтаксис

ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎΠ³ΠΎ стандарта для синтаксиса языков ассСмблСра Π½Π΅ сущСствуСт. Однако, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ стандарты Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ β€” Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² языков ассСмблСра. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ стандартами ΡΠ²Π»ΡΡŽΡ‚ΡΡ Intel-синтаксис ΠΈ AT&T-синтаксис.

ΠžΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ записи инструкций ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² для ΠΎΠ±ΠΎΠΈΡ… стандартов:

`[ΠΌΠ΅Ρ‚ΠΊΠ°:] ΠΎΠΏΠΊΠΎΠ΄ [ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹] [;ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ]`

Опкод β€” нСпосрСдствСнно ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° инструкции процСссору. К Π½Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ прСфиксы (повторСния, измСнСния Ρ‚ΠΈΠΏΠ° адрСсации ΠΈ ΠΏΡ€.). Π’ качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ константы, названия рСгистров, адрСса Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ ΠΏΡ€.. Различия ΠΌΠ΅ΠΆΠ΄Ρƒ стандартами Intel ΠΈ AT&T ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ, Π² основном, порядка пСрСчислСния ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ ΠΈΡ… синтаксиса ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… адрСсации.

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

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

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ассСмблСрС Π² 2018 Π³ΠΎΠ΄Ρƒ

На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ написан assembler. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ написан assembler. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ написан assembler

Π‘Ρ‚Π°Ρ‚ΡŒΡ посвящСна языку ассСмблСр с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Ρ‹ прСимущСства ΠΈ отличия ΠΎΡ‚ Π―Π’Π£, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ нСбольшоС сравнСниС компиляторов, скрупулёзно собрано Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство Π»ΡƒΡ‡ΡˆΠ΅ΠΉ тСматичСской Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹.

1. Π―Π·Ρ‹ΠΊ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ отличия ΠΎΡ‚ Π―Π’Π£

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

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

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

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ использования ассСмблСра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ сразу Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ:

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

На языкС ассСмблСра ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° критичСски Π²Π°ΠΆΠ½Ρ‹:

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

2. О компиляторах

Какой ассСмблСр Π»ΡƒΡ‡ΡˆΠ΅?

Для процСссора x86-x64, имССтся Π±ΠΎΠ»Π΅Π΅ дСсятка Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ассСмблСр компиляторов. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ синтаксисом. НСкоторыС компиляторы большС подходят для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ― для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов. НСкоторыС компиляторы достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ мноТСством ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² программирования. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ассСмблСров написаны ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ пособия ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся синтаксис, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ. Какой ассСмблСр Π»ΡƒΡ‡ΡˆΠ΅?

Учитывая мноТСство Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΎΠ² ассСмблСров для x86-x64 ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для ΠΈΡ… изучСния, ограничимся ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… компиляторов: MASM, TASM, NASM, FASM, GoASM, Gas, RosAsm, HLA.

ΠšΠ°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму Π²Ρ‹ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

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

WindowsDOSLinuxBSDQNXMacOS, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π°
процСссорС Intel/AMD
FASMxxxx
GASxxxxxx
GoAsmx
HLAxx
MASMxx
NASMxxxxxx
RosAsmx
TASMxx

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 16 Π±ΠΈΡ‚

Если ассСмблСр ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ DOS, Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ 16-разрядныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ВсС ассСмблСры ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 16-разрядныС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹. 16-разрядная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΊΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π² 16-разрядной сСгмСнтированной ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 32-разрядной модСлью с плоской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ соврСмСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм).

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 64 Π±ΠΈΡ‚

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ TASM, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ„ΠΈΡ€ΠΌΠ° Borland ΠΎΡ…Π»Π°Π΄Π΅Π»Π° Π² сСрСдинС Π½ΡƒΠ»Π΅Π²Ρ‹Ρ…, ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ объСмС Π΄Π°ΠΆΠ΅ 32-разрядныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ 64-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° ассСмблСрС x86-x64, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускался Π±Ρ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ процСссорС. Однако, Π΄Π°ΠΆΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ процСссорС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ пСрСносимости. НапримСр, Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свои ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами. NASM ΠΈ FASM ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ассСмблСрС ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ОБ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ с «пСрСкомпиляциСй» исходного ΠΊΠΎΠ΄Π°? Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ HLA. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния Windows ΠΈ Linux Π½Π° ассСмблСрС с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ усилиями для этого? Π₯отя, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ОБ, Ρ‚ΠΎΠ³Π΄Π° эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° вас Π½Π΅ касаСтся.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° высокоуровнСвых языковых конструкций

НСкоторыС ассСмблСры ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт языковыС высокоуровнСвыС структуры управлСния (Ρ‚ΠΈΠΏΠ° IF, WHILE, FOR ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Π’Π°ΠΊΠΈΠ΅ конструкции ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ассСмблСру ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ассСмблСры встроСны «высокоуровнСвыС конструкции» с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ возмоТностями. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ высокоуровнСвыС конструкции Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ макросов.

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

ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Удобство использования ассСмблСра Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ связано с качСством Π΅Π³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Учитывая объСм Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тратится для создания Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° ассСмблСра, созданиСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для этого Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π° Π°Π²Ρ‚ΠΎΡ€Ρ‹ компиляторов практичСски Π½Π΅ Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ. Авторы, Ρ€Π°ΡΡˆΠΈΡ€ΡΡ свой язык, Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ описываСтся качСство справочного руководства ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прилагаСтся ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ:

Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

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

MASM являСтся Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ срСди ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ объСма ΠΊΠ½ΠΈΠ³, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° этом Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅. Π•ΡΡ‚ΡŒ дСсятки ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ MASM Π² качСствС своСго ассСмблСра для обучСния ассСмблСру.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠ² ΠΏΠΎ ассСмблСру MASM/TASM ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄ MS-DOS. Π₯отя постСпСнно ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Windows ΠΈ Linux.

3. Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΈ Π²Π΅Π± рСсурсы

Beginners

Advanced

4. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ассСмблСр ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят. Π’Ρ‹ запаслись ΠΏΠ°Ρ€ΠΎΠΉ/Ρ‚Ρ€ΠΎΠΉΠΊΠΎΠΉ ΠΊΠ½ΠΈΠ³ ΠΈ Π²Π΅Π± ΠΌΠ°Π½ΡƒΠ°Π»Π°ΠΌΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ ΠΈ с компилятором… К соТалСнию ΡƒΡ€ΠΎΠΊΠΈ программирования выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½ΠΎ для Ρ‚Π΅Ρ… Ρ‡Π΅ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π» Π½Π° MASM/FASM ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ:

Π–Π΅Π»Π°Π΅ΠΌ Π²Π°ΠΌ, Π΄Ρ€ΡƒΠ·ΡŒΡ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… достиТСний ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ Π² 2018 Π³ΠΎΠ΄Ρƒ!

Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
ΠœΠΈΡ…Π°ΠΈΠ» Π‘ΠΌΠΎΠ»Π΅Π½Ρ†Π΅Π² MiklIrk (Π˜Ρ€ΠΊΡƒΡ‚ΡΠΊΠΈΠΉ государствСнный унивСрситСт ΠΏΡƒΡ‚Π΅ΠΉ сообщСния),
АлСксСй Π“Ρ€ΠΈΡ†Π΅Π½ΠΊΠΎ expressrus (Донской государствСнный тСхничСский унивСрситСт).

Ps1: Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ, Π₯Π°Π±Ρ€Π°Ρ…Π°Π±Ρ€! Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ подсвСтку ассСмблСра (Intel-синтаксис), это пригодится для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… статСй!

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

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

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