какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

Команда JMP

Бинтаксис ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ JMP Ρ‚Π°ΠΊΠΎΠΉ:

ΠœΠ•Π’ΠšΠžΠ™ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…:

БСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π² АссСмблСрС выполняСтся всСгда ΠΈ Π² любом случаС, Ссли Π² исходном ΠΊΠΎΠ΄Π΅ имССтся инструкция JMP.

НикакиС Ρ„Π»Π°Π³ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этой инструкции Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΊΠ° Π² АссСмблСрС

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΊΠ° Π² АссСмблСрС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² АссСмблСрС:

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ ΠΌΠ΅Ρ‚ΠΊΠΈ?

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ…ΠΎΠ΄ΠΎΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НапримСр, Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Π°ΠΌ трСбуСтся Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡƒΡ‚Π΅ΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… участков ΠΊΠΎΠ΄Π°.

Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ участок ΠΊΠΎΠ΄Π° обозначаСтся своСй ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ. И Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ участок ΠΊΠΎΠ΄Π° ΠΈ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ участку.

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

Π’ языках высокого уровня ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ дСйствия Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… конструкций языка (Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ if. then. else ΠΈΠ»ΠΈ case Π² ПаскалС).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ бСзусловного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°

Π‘Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄.

Π›ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ вопрос: Ссли ΠΌΡ‹ всСгда ΠΈ Π²ΠΎ всСх случаях пропускаСм участок ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ Π·Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Ρ‚ΠΎΠ³Π΄Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ этот участок?

Вопрос Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°. На самом Π΄Π΅Π»Π΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ситуации, ΠΊΠΎΠ³Π΄Π° этот ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½ΡƒΠΆΠ΅Π½.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ: Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΠΈΠ·, Π½ΠΎ ΠΈ Π²Π²Π΅Ρ€Ρ…. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ участок ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅Π³ΠΎ придётся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² зависимости ΠΎΡ‚ условий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появятся дальшС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Как-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚Π°ΠΊ:

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ пропускаСм участок ΠΊΠΎΠ΄Π° 1 ΠΈ сразу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅Ρ‚ΠΊΠ΅ Label_2 (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ участку). Но Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ участкС ΠΌΡ‹ возвращаСмся ΠΊ участку 1 (ΠΊ ΠΌΠ΅Ρ‚ΠΊΠ΅ Label_1) ΠΈ выполняСм Π΅Π³ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‚ΠΎΡ€ΠΎΠΉ: ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ участок ΠΊΠΎΠ΄Π° трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ инструкция JMP Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ выполняСтся. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π²Ρ‹ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, участок ΠΊΠΎΠ΄Π° для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ выполняСтся.

Когда ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΌΡ‹ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой ΠΏΠ΅Ρ€Π΅Π΄ инструкциСй JMP ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ бСзусловный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ Label_2.

А ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ просто Π½Π΅ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄?

МоТно, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ. Но Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π°ΠΌ большС Π½Π΅ пригодится?

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ расскаТу, ΠΏΠΎΡ‡Π΅ΠΌΡƒ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра называСтся JMP. Π­Ρ‚ΠΎ сокращСниС ΠΎΡ‚ английского слова JUMP, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ пСрСвСсти ΠΊΠ°ΠΊ β€œΠΏΡ€Ρ‹ΠΆΠΎΠΊ, пСрСход”.

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

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€ Intel. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ практичСскиС аспСкты создания простого Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Π½Π° основС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Intel VMX.

Аппаратная виртуализация достаточно узкоспСциализированная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ систСмного программирования ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ, Π² России ΡƒΠΆ Ρ‚ΠΎΡ‡Π½ΠΎ. Π― надСюсь, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ для сСбя Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Ρ‚Π΅ возмоТности ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° прСдоставляСт. Как Π±Ρ‹Π»ΠΎ сказано Π² Π½Π°Ρ‡Π°Π»Π΅, я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ практичСский аспСкт Π±Π΅Π· погруТСния Π² Ρ‚Π΅ΠΎΡ€ΠΈΡŽ, поэтому прСдполагаСтся Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°ΠΊΠΎΠΌ с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ x86-64 ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ хотя Π±Ρ‹ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… VMX. Π˜ΡΡ…ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ запускался ΠΏΡ€ΠΈ стартС PC я Π²Ρ‹Π±Ρ€Π°Π» самый простой ΠΏΡƒΡ‚ΡŒ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ записал свой Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π² MBR сСктор диска Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ установлСна гостСвая ОБ. Π’Π°ΠΊ ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π½Π° дискС Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°. Π’ ΠΌΠΎΠ΅ΠΌ случаС, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ MBR считываСт bootloader начиная с 2048 сСктора, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ условно ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для записи Π² (2047 * 512) Кб. Π­Ρ‚ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ достаточно для размСщСния всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма размСщСния Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Π½Π° дискС, всС значСния Π·Π°Π΄Π°Π½Ρ‹ Π² сСкторах.

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ пСрвая Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΠΌΡƒ прСдстоит Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, для этого ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ limit дСскрипторного кэша для сСгмСнтных рСгистров DS ΠΈ ES Ρ€Π°Π²Π½ΠΎ 0xFFFFFFFF. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования unreal mode β€” особСнности процСссора x86 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ сСгмСнтов Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

ΠΠ°Ρ…ΠΎΠ΄ΡΡΡŒ Π² vmx not-root Ρ€Π΅ΠΆΠΈΠΌΠ΅ гостСвая ОБ ΠΌΠΎΠΆΠ΅Ρ‚ столкнутся с ситуациСй, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ хосту Π² Ρ€Π΅ΠΆΠΈΠΌ vmx root. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС происходит VM exit Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сохраняСтся Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС vmx non-root ΠΈ загруТаСтся vmx-root. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ vmx-root выполняСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ InitHostStateArea(), которая устанавливаСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистров:

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

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° модСль гостСвого физичСского адрСсного пространства:

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚ΡƒΡ‚ Π²ΠΈΠ΄ΠΈΠΌ:

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ созданиС гостСвого адрСсного пространства, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ настройкам VM Execution control field (функция InitExecutionControlFields()). Π­Ρ‚ΠΎ довольно большой Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π°Ρ‚ΡŒ условия Ρ€Π°Π±ΠΎΡ‚Ρ‹ гостСвой ОБ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ vmx not-root. МоТно, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ обращСния ΠΊ ΠΏΠΎΡ€Ρ‚Π°ΠΌ Π²Π²ΠΎΠ΄Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ MSR рСгистров. Но нашСм случаС я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ установку ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΡ‚ Π² рСгистрС CR0. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ 30(CD) ΠΈ 29(NW) Π±ΠΈΡ‚Ρ‹ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠ°ΠΊ для vmx non-root Ρ‚Π°ΠΊ ΠΈ для vmx root Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΈ Ссли гостСвая ОБ установит эти Π±ΠΈΡ‚Ρ‹ Π² 1 это Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ скаТСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ настройки Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π² гостСвой Ρ€Π΅ΠΆΠΈΠΌ vmx non-root ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π² Ρ€Π΅ΠΆΠΈΠΌ хоста vmx root. Настройки Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² функциями:

InitVMEntryControl() настройки для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² vmx non-root:

Π˜Ρ‚ΠΎΠ³ΠΈ

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

Π”Π°, Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π·Π°Π±Ρ‹Π», ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Bochs. На ΠΏΠ΅Ρ€Π²ΠΎΠ΅ врСмя это Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ инструмСнт. К соТалСнию, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° Π² Bochs отличаСтся ΠΎΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° физичСском PC. Π’ своС врСмя я Π΄Π΅Π»Π°Π» ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ сборку Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ этот процСсс, ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ привСсти исходники Π² порядок ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ вмСстС с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π² блиТайшСС врСмя.

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

MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 10. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра.

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли ΠΊ вопросу ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ строго, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра β€” это Π½Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. АссСммблСр β€” Ρ…ΠΎΡ‚ΡŒ ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык программирования, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ Π±Π΅Π· спроса программиста Β«ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ сСбя». ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ассСмблСра (masm, tasm, fasm) это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π‘Π°ΠΌΡ‹ΠΉ яркий ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° ret. Π’ ассСмблСрном ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ запишСм ret, Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ассСмблСр ассСмблируСт Π΅Ρ‘ ΠΊΠ°ΠΊ retf ΠΈΠ»ΠΈ retn 8. ΠœΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ΄, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² качСствС выравнивания ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора nop (ΠΎΠ± этом Π½ΠΈΠΆΠ΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅) ΠΈ Ρ‚.ΠΏ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ вопроса, ΠΏΠΎΠ΄ понятиями ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅.

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

НС слСдуСт Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссор Π²ΠΈΠ΄ΠΈΡ‚ Π² Π²ΠΈΠ΄Π΅ Ρ†ΠΈΡ„Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° NOP Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ ΠΈ Π΅Ρ‘ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ β€” 90h.

Начиная ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ старых-Π΄ΠΎΠ±Ρ€Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ процСссора. Π˜Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра понадобятся спСциалистам, заинтСрСсованным Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠΎΠ΄Π°, связанного со слоТными матСматичСскими расчСтами Π΄Π°Π½Π½Ρ‹Ρ… большого ΠΎΠ±ΡŠΡ‘ΠΌΠ°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ (Ρ‚.Π½. цСлочислСнныС) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ практичСски Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм MS-DOS ΠΈ Windows. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄Π΅Ρ‚ расти со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ прохоТдСния курса. Для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ понимания, Π² послСдствии ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ справочнику ΠΊΠΎΠΌΠ°Π½Π΄.

Рассмотрим ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра Π½Π° практичСском ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π‘ использованиСм срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ TASMED ΠΈΠ»ΠΈ любого тСкстового Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, задаст вопрос Π½Π° английском языкС ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΎΠΉ принадлСТности (имССтся Π²Π²ΠΈΠ΄Ρƒ ваш биологичСский ΠΏΠΎΠ» ΠΏΡ€ΠΈ Ρ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ). Если Π²Ρ‹ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ m (Man), Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ привСтствиС с ΠΌΡƒΠΆΡ‡ΠΈΠ½ΠΎΠΉ, Ссли w (Woman), Ρ‚ΠΎ с ΠΆΠ΅Π½Ρ‰ΠΈΠ½ΠΎΠΉ, послС этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Если Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° любая другая клавиша, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с Π³ΠΎΠ±Π»ΠΈΠ½ΠΎΠΌ, Π½Π΅ ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ вопросы ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΎΠΉ принадлСТности, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΠΎ.

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

ПишСм ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ

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

ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ составляСт ΠΎΠΊΠΎΠ»ΠΎ 250 строк Π½Π° C. Достаточно Π·Π½Π°Ρ‚ΡŒ лишь основы C ΠΈΠ»ΠΈ C++, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ двоичная Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ°. Для сборки ΠΈ запуска ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ любая Unix-систСма (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ macOS). НСсколько API Unix ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для настройки Π²Π²ΠΎΠ΄Π° ΠΈ отобраТСния консоли, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сущСствСнными для основного ΠΊΠΎΠ΄Π°. (РСализация ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Windows привСтствуСтся).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: эта VM β€” грамотная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹ прямо сСйчас ΡƒΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π΅Ρ‘ исходный ΠΊΠΎΠ΄! ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½Ρ‘Π½, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹: Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡƒΠΏΡƒΡ‰Π΅Π½ΠΎ. ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ создан сплСтСниСм Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°. Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚ΡƒΡ‚.

1. ОглавлСниС

2. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина?

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

Бколько Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ конкрСтная VM β€” зависит ΠΎΡ‚ Π΅Ρ‘ прСдназначСния. НСкоторыС VM воспроизводят ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π£ людСй большС Π½Π΅Ρ‚ NES, Π½ΠΎ ΠΌΡ‹ всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΠΈΠ³Ρ€Ρ‹ для NES, имитируя Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. Π­Ρ‚ΠΈ эмуляторы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π΄Π΅Ρ‚Π°Π»ΡŒ ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ основной Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ устройства.

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

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: компилятор Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, компилируя стандартный высокоуровнСвый язык для Ρ€Π°Π·Π½Ρ‹Ρ… процСссорных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€. VM создаёт ΠΎΠ΄Π½Ρƒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ CPU, которая симулируСтся Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… устройствах. Одно ΠΈΠ· прСимущСств компилятора Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π²ΠΎ врСмя выполнСния, ΠΊΠ°ΠΊ Ρƒ VM. Π₯отя компиляторы Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, написаниС Π½ΠΎΠ²ΠΎΠ³ΠΎ компилятора для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, поэтому VM всё Π΅Ρ‰Ρ‘ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… уровнях ΠΈ VM, ΠΈ компиляторы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно.

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

VM Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ большой ΠΈΠ»ΠΈ вСздСсущной, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ прСимущСства. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Ρ‹ часто использовали нСбольшиС VM для создания простых скриптовых систСм.

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

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

3. АрхитСктура LC-3

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

Наша VM Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ LC-3. Он популярСн для обучСния студСнтов ассСмблСру. Π—Π΄Π΅ΡΡŒ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с x86, Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ всС основныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² соврСмСнных CPU.

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

ΠŸΠ°ΠΌΡΡ‚ΡŒ

Π’ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ LC-3 Π΅ΡΡ‚ΡŒ 65 536 ячССк памяти (2 16 ), каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит 16-разрядноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всСго 128 Кб β€” Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ! Π’ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ эта ΠΏΠ°ΠΌΡΡ‚ΡŒ хранится Π² простом массивС:

РСгистры

РСгистр β€” это слот для хранСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π² CPU. РСгистры ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ «вСрстаку» CPU. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· рСгистров. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рСгистров всСго нСсколько, Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ обходят эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, загруТая значСния ΠΈΠ· памяти Π² рСгистры, вычисляя значСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рСгистры, Π° Π·Π°Ρ‚Π΅ΠΌ сохраняя ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π’ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ LC-3 всСго 10 рСгистров, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π° 16 Π±ΠΈΡ‚. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… β€”ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Ρ€ΠΎΠ»ΠΈ.

Как ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π±ΡƒΠ΄Π΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ рСгистры Π² массивС:

Набор инструкций

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

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠΊΠΎΠ΄ прСдставляСт собой ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ процСссор Β«Π·Π½Π°Π΅Ρ‚Β», ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Π’ LC-3 всСго 16 ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ². ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ этих простых инструкций. Π”Π»ΠΈΠ½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции 16 Π±ΠΈΡ‚, Π° Π»Π΅Π²Ρ‹Π΅ 4 Π±ΠΈΡ‚Π° хранят ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ПозТС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ обсудим, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ каТдая инструкция. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠΊΠΎΠ΄Ρ‹. Π£Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ порядок, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ enum:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Intel x86 сотни инструкций, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ARM ΠΈ LC-3, ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ. НСбольшиС Π½Π°Π±ΠΎΡ€Ρ‹ инструкций Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ RISC, Π° Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ β€” CISC. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ инструкций, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй, Π½ΠΎ часто ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ написаниС ассСмблСрного ΠΊΠΎΠ΄Π°. Одна инструкция CISC ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько инструкций RISC. Однако процСссоры CISC Π±ΠΎΠ»Π΅Π΅ слоТны ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ производствС. Π­Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компромиссы Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°Π·Π²Π°Ρ‚ΡŒ Β«ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉΒ» Π΄ΠΈΠ·Π°ΠΉΠ½.

Π€Π»Π°Π³ΠΈ условий

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора мноТСство Ρ„Π»Π°Π³ΠΎΠ² состояния для сигнализации ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуациях. LC-3 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ Ρ„Π»Π°Π³Π° условий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π·Π½Π°ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ вычислСния.

ΠœΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ настройку Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² нашСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹! ПослС добавлСния стандартных Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (см. ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅) ваш Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π—Π΄Π΅ΡΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ссылки Π½Π° ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΎΡ‚ΠΊΡƒΠ΄Π° бСрутся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ»Π½Ρ‹ΠΉ листинг см. Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.

4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½Π° ассСмблСрС

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ассСмблСрС LC-3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдставлСниС, Ρ‡Ρ‚ΠΎ фактичСски выполняСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ассСмблСрС, ΠΈΠ»ΠΈ всё Ρ‚ΡƒΡ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС, Ρ‡Ρ‚ΠΎ происходит. Π’ΠΎΡ‚ простой Β«Hello WorldΒ»:

Как ΠΈ Π² C, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ свСрху Π²Π½ΠΈΠ·. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C, здСсь Π½Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… областСй <> ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… структур, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ if ΠΈΠ»ΠΈ while ; Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простой список ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅Π³ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΠΊΠΎΠ΄Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² инструкциях ΠΏΠΎ 16 Π±ΠΈΡ‚, Π½ΠΎ каТдая строка выглядит ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌ количСством символов. Как Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ нСсоотвСтствиС?

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ‡ΠΈΡ‚Π°Π΅ΠΌ, написан Π½Π° ассСмблСрС β€” Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΉ ΠΈ доступной для записи Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ тСкстом. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ассСмблСром, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку тСкста Π² 16-Ρ€Π°Π·Ρ€ΡΠ΄Π½ΡƒΡŽ Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС. Π­Ρ‚Π° двоичная Ρ„ΠΎΡ€ΠΌΠ°, которая ΠΏΠΎ сути прСдставляСт собой массив 16-разрядных инструкций, называСтся ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ фактичСски выполняСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной.

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

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

Π¦ΠΈΠΊΠ»Ρ‹ ΠΈ условия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ goto-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ инструкции. Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считаСт Π΄ΠΎ 10.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: для этого руководства Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ассСмблСру. Но Ссли Π²Π°ΠΌ интСрСсно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ собствСнныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ LC-3 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LC-3 Tools.

5. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

Π•Ρ‰Ρ‘ Ρ€Π°Π·, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ просто Π΄Π°ΡŽΡ‚ прСдставлСниС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ VM. Для написания VM Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ассСмблСра. Пока Π²Ρ‹ слСдуСтС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ чтСния ΠΈ исполнСния инструкций, любая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° LC-3 Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, нСзависимо ΠΎΡ‚ Π΅Ρ‘ слоТности. Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, VM ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΠΊΠ°ΠΊ Linux!

Если Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ это философски Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ идСя. Π‘Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ слоТныС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ смоТСм ΠΏΠΎΠ½ΡΡ‚ΡŒ. Но Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя вся ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ограничиваСтся простым ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ напишСм! ΠœΡ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π½Π°Π΅ΠΌ всё ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ каТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π’ΡŒΡŽΡ€ΠΈΠ½Π³ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» эту Ρ‡ΡƒΠ΄Π΅ΡΠ½ΡƒΡŽ идСю:

«МнСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡Π΅ΠΌ-Π»ΠΈΠ±ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, основываСтся, ΠΊΠ°ΠΊ я полагаю, Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π² особСнности ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ философы. Π― имСю Π² Π²ΠΈΠ΄Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ коль скоро ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ„Π°ΠΊΡ‚ стал достояниСм Ρ€Π°Π·ΡƒΠΌΠ°, тотчас ΠΆΠ΅ достояниСм Ρ€Π°Π·ΡƒΠΌΠ° становятся всС слСдствия ΠΈΠ· этого Ρ„Π°ΠΊΡ‚Π°Β». β€” Алан М. Π’ΡŒΡŽΡ€ΠΈΠ½Π³

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

Π’ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ описаниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

Начнём ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ этого процСсса Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ основного Ρ†ΠΈΠΊΠ»Π°:

6. РСализация инструкций

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваша Π·Π°Π΄Π°Ρ‡Π° β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠΊΠΎΠ΄Π°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ спСцификация ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции содСрТится Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Из спСцификации Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ каТдая инструкция, ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ каТСтся. Π—Π΄Π΅ΡΡŒ я ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΈΠ· Π½ΠΈΡ…. Код для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ADD Π±Π΅Ρ€Ρ‘Ρ‚ Π΄Π²Π° числа, складываСт ΠΈΡ… ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² рСгистрС. БпСцификация Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° стр. 526. КаТдая инструкция ADD выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Π³Π΄Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΈ Π·Π½Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число для слоТСния. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число для слоТСния. Π—Π΄Π΅ΡΡŒ Π΄Π²Π΅ строки Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π²Π΅Ρ€Ρ…Ρƒ 5-ΠΉ Π±ΠΈΡ‚ Ρ€Π°Π²Π΅Π½ 0, Π° Π²Π½ΠΈΠ·Ρƒ β€” 1. Π­Ρ‚ΠΎΡ‚ Π±ΠΈΡ‚ соотвСтствуСт ΠΈΠ»ΠΈ нСпосрСдствСнному Ρ€Π΅ΠΆΠΈΠΌΡƒ, ΠΈΠ»ΠΈ рСгистровому Ρ€Π΅ΠΆΠΈΠΌΡƒ. Π’ рСгистровом Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число хранится Π² рСгистрС, ΠΊΠ°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ΅. Оно ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ ΠΊΠ°ΠΊ SR2 ΠΈ содСрТится Π² Π±ΠΈΡ‚Π°Ρ… со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ. Π‘ΠΈΡ‚Ρ‹ 3 ΠΈ 4 Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. На ассСмблСрС это Π±ΡƒΠ΄Π΅Ρ‚ написано Ρ‚Π°ΠΊ:

Π’ нСпосрСдствСнном Ρ€Π΅ΠΆΠΈΠΌΠ΅ вмСсто добавлСния содСрТимого рСгистра нСпосрСдствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ внСдряСтся Π² саму ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструкции для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ этого числа Π² рСгистр ΠΈΠ· памяти. ВмСсто этого ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ инструкции, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшиС числа. Если Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, максимум 2 5 =32. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для увСличСния счётчиков ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. На ассСмблСрС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π’ΠΎΡ‚ Π²Ρ‹Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ· спСцификации:

Если Π±ΠΈΡ‚ [5] Ρ€Π°Π²Π΅Π½ 0, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ исходный ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ· SR2. Если Π±ΠΈΡ‚ [5] Ρ€Π°Π²Π΅Π½ 1, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ исходный ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΡƒΡ‚Ρ‘ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ значСния imm5 Π΄ΠΎ 16 Π±ΠΈΡ‚. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π²Ρ‚ΠΎΡ€ΠΎΠΉ исходный ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ добавляСтся ΠΊ содСрТимому SR1, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сохраняСтся Π² DR. (стр. 526)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли вас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Но это Π½Π΅ сущСствСнно. Достаточно просто ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π²Ρ‹ΡˆΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° спСцификация Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ спСцификации Π΅ΡΡ‚ΡŒ послСднСС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

ΠšΠΎΠ΄Ρ‹ условий Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, являСтся Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. (стр. 526)

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ADD :

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, поэтому ΠΏΠΎΠ΄Π²Π΅Π΄Ρ‘ΠΌ ΠΈΡ‚ΠΎΠ³ΠΈ.

LDI ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΊΠΎΡΠ²Π΅Π½Π½ΡƒΡŽΒ» ΠΈΠ»ΠΈ Β«Π½Π΅ΠΏΡ€ΡΠΌΡƒΡŽΒ» Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ (load indirect). Π­Ρ‚Π° инструкция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² рСгистр значСния ΠΈΠ· мСста Π² памяти. БпСцификация Π½Π° стр. 532.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит двоичная ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°:

какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС. Π€ΠΎΡ‚ΠΎ какая ΠΊΠΎΠΌΠ°Π½Π΄Π° ассСмблСра ΠΈΠ½Ρ‚Π΅Π» ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ бСзусловному vmexit Π½Π° гостСвой машинС

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΠΊΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ для чтСния ΠΈΠ· памяти, Π½ΠΎ Ρ‚Π°ΠΊ Π½ΡƒΠΆΠ½ΠΎ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ LD ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° адрСсным смСщСниСм 9 Π±ΠΈΡ‚, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ для адрСса 16 Π±ΠΈΡ‚. LDI ΠΏΠΎΠ»Π΅Π·Π½Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π³Π΄Π΅-Ρ‚ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½ΠΎ для ΠΈΡ… использования адрСс ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ мСстополоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ рядом. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΉ ΠΊΠ°ΠΊ ΠΎ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² C, которая являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Как ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, послС записи значСния Π² DR слСдуСт ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ:

ΠšΠΎΠ΄Ρ‹ условий Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, являСтся Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. (стр. 532)

Π’ΠΎΡ‚ ΠΊΠΎΠ΄ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ случая: ( mem_read обсудим Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅):

7. Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ инструкциям

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ β€” ΠΏΠΎΠ»Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ инструкций, Ссли Π²Ρ‹ застряли.

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

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

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