ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΌΡΠ»ΡΡΠΎΡ
ΠΠΌΡΠ»ΡΡΠΎΡ — ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΠ. ΠΡΠ»Π°Π΄ΡΠΈΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ²ΠΎΡΠΌ ΡΠΎΡΡΠ°Π²Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² Ρ ΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π°ΠΉΡΠ°. ΠΠΈΡΡ 0β3 ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠΈΡΡ 4β7 ΠΈ Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π·Π΄Π°Π½ΠΈΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΌΡΠ»ΡΡΠΎΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ ΠΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΠ°ΡΠΊΠΈ Π£ΠΊΡΠ°ΠΈΠ½Ρ Π‘Π΅Π²Π°ΡΡΠΎΠΏΠΎΠ»ΡΡΠΊΠΈΠΉ ΠΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΠ°ΡΠ΅Π΄ΡΠ° ΠΊΠΈΠ±Π΅ΡΠ½Π΅ΡΠΈΠΊΠΈ ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΠΊΠ° ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ
«ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΌΡΠ»ΡΡΠΎΡ»
ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅»
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»: ΡΡΡΠ΄Π΅Π½Ρ Π³ΡΡΠΏΠΏΡ Π-22Π΄ ΠΠ°ΡΠ»ΠΎΠ² Π.Π.
ΠΡΠΎΠ²Π΅ΡΠΈΠ»: Π‘ΠΌΠ°Π³ΠΈΠ½Π° Π.Π.
Π‘Π΅Π²Π°ΡΡΠΎΠΏΠΎΠ»Ρ 2010
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΌΡΠ»ΡΡΠΎΡΠ°
5. ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΈΠ±Π»ΠΈΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ Π±ΡΡΠ½ΡΠΌ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ·ΡΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ; ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΡΠ΅ΡΡΡΡ Π² Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ (Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°ΠΌΠΈ), Π° ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ (ΠΏΡΠΈΡΠ΅ΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ) ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ², ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ Π²ΠΈΡΡΡΠΎΠ², ΡΠ΅Π·ΠΈΠ΄Π΅Π½ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Ρ. ΠΏ.) ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ Π½Π΅Π»ΡΠ·Ρ Π½Π°Π·Π²Π°ΡΡ ΠΌΠ΅ΡΡΠ²ΡΠΌ, ΠΈΠ·ΠΆΠΈΠ²ΡΠΈΠΌ ΡΠ΅Π±Ρ ΡΠ·ΡΠΊΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ Ρ ΠΎΡΠΎΡΠΈΠΌ Π½ΠΈ Π±ΡΠ» ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΎΠ½ Π½Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅; Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΌ, Π³Π΄Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π° «ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ» ΡΡΠΎΠ²Π½Π΅.
ΠΠΌΡΠ»ΡΡΠΎΡ — ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΠ. ΠΡΠ»Π°Π΄ΡΠΈΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ²ΠΎΡΠΌ ΡΠΎΡΡΠ°Π²Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² Ρ ΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π¦Π΅Π»ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΠΠ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΡΠΎΡΡ-ΡΠΌΡΠ»ΡΡΠΎΡ — ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΠΠ Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ.
ΠΠ°Π΄Π°Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (№ 3):
ΠΠ±ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ — 4096 Π±Π°ΠΉΡ.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π°ΠΉΡΠ°. ΠΠΈΡΡ 0−3 ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠΈΡΡ 4−7 ΠΈ Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π·Π΄Π°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°.
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π°Π΄ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΌΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²Π΅ΡΡ Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ΅ΠΊΠ°. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² ΠΏΠ°ΠΌΡΡΡ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ № 3 :
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ, Π΄Π»ΠΈΠ½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π°ΠΉΡΠ°, ΡΠΎΡΠΌΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡ Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅:
ΠΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ | ΠΠ΄ΡΠ΅Ρ | ΠΠ΄ΡΠ΅Ρ | |||||||||||||||
ΠΠ°ΠΉΡ № 1 | ΠΠ°ΠΉΡ № 2 | ||||||||||||||||
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ
2. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠΌΡΠ»ΡΡΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ. ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΌΡΠ»ΡΡΠΎΡΡ, ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅Π΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ. Π€ΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° «ΠΏΡΠΈΠ·Π½Π°ΠΊ-Π±Π°ΠΉΡ».
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄Π²Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ: ORG — ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΡΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈ DATA — Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. Π§ΡΠΎΠ±Ρ ΡΠΌΡΠ»ΡΡΠΎΡ ΠΌΠΎΠ³ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΠΈΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ Π±Π°ΠΉΡ-ΠΏΡΠΈΠ·Π½Π°ΠΊ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π΅Π΅ ΡΠΈΠΏ:
01 — Π°Π΄ΡΠ΅Ρ; ADDRESS
02 — ΠΊΠΎΠΌΠ°Π½Π΄Π°; COMMAND
03 — Π΄Π°Π½Π½ΡΠ΅; DATA
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: 01 10 02 E5 02 23 01 20 03 D2 ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π°Π΄ΡΠ΅ΡΠ° 10 ΠΈΠ΄ΡΡ 2 ΠΊΠΎΠΌΠ°Π½Π΄Ρ E5 23, Π° Π·Π°ΡΠ΅ΠΌ Ρ Π°Π΄ΡΠ΅ΡΠ° 20 ΠΈΠ΄ΡΡ Π΄Π°Π½Π½ΡΠ΅ D2.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄ Π² ΠΎΠΊΠ½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅ΠΊΠ° (R0, R1, R2, R3, R4, R5, R6, R7), PC (ΡΡΠ΅ΡΡΠΈΠΊ Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄), rgCOM (ΡΠ΅Π³ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄), Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³ΠΎΠ² (Π½ΠΎΠ»Ρ, ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ, ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠ΅Π΅ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
1. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΡΠΎΠΊ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠΌ.
2. Π ΡΠΈΠΊΠ»Π΅ ΡΠΈΡΠ°Π΅ΠΌ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΏΠΎ Π΄Π²Π° Π±Π°ΠΉΡΠ°. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π°Π΄ΡΠ΅ΡΠ°, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ , Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ: Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π°ΠΉΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π°Π΄ΡΠ΅ΡΠ°, ΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ°, Π° Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π°ΠΉΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ΅ΠΉΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ.
3. ΠΠΎΠ³Π΄Π° ΡΠ°ΠΉΠ» ΠΏΡΠΎΡΡΠ΅Π½, Π·Π°ΠΊΡΡΡΡ ΠΏΠΎΡΠΎΠΊ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°.
4. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΡΠ΅ΡΡΠΈΠΊΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄.
5. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π§ΠΈΡΠ°Π΅ΠΌ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ — ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
6. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΡΠΈΠΊΡΠΈΡΡΡ ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ ΡΠ»Π°Π³ΠΎΠ².
7. ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΡΡΠΈΠΊΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄, Π³ΠΎΡΠΎΠ²ΡΡΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
8. ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡΠ°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΌΡΠ»ΡΡΠΎΡΠ° ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠΉ ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΌΡΠ»ΡΡΠΎΡ Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²: Main, Processor, ALU, Memory ΠΈ Stack.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ.
Β· ΠΠ»Π°ΡΡ Processor Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ:
int PC — Π‘Π§ΠΠ: ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
int rgCOM — ΡΠ΅Π³ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄: Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
Π€Π»Π°Π³ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° int zero (Π½ΠΎΠ»Ρ), int overflow (ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅), int negative
(ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ).
Stack — ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ LIFO (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΏΡΠΈΡΠ΅Π»ΠΏΠ΅ΡΠ²ΡΠΌ Π²ΡΡΠ΅Π»), ΡΡΠ΅ΠΊ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (R0, R1, R2, R3, R4, R5, R6, R7).
Error — ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ).
ΠΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
Β· 0 — ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ
Β· 1 — ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
Β· 2 — Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°
Β· 3 — Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π±Π°ΠΉΡ-ΠΏΡΠΈΠ·Π½Π°ΠΊ
Β· 4 — Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π°
Β· 5 — ΠΏΠΎΡΠ»Π΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ
Β· 6 — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° Processor:
public Processor (Memory ram) — ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ.
private void clear () — ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
public void execute () — ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
public void executeOneCom () — Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
private boolean twoBytes (int c) — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
public boolean loadObjectFile (DataInput f) — ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΠ°ΠΌΡΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Ρ. ΠΊ. ΠΈΠ½Π°ΡΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ). Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true ΠΈ Π² ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΈ Π°Π΄ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ½Π°ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ false ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ.
public String toString () — ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°, ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄, Π‘Π§ΠΠΠ° ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³ΠΎΠ² — ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΠ°ΠΌΡΡΡ:
flag — ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊ, i — ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, m — ΠΏΡΠΈΠ·Π½Π°ΠΊ Π±Π°ΠΉΡΠ°, b — Π±Π°ΠΉΡ
1. ΠΡΠΎΡΠΈΡΠ°ΡΡ 2 Π±Π°ΠΉΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ, ΠΈΠ½Π°ΡΠ΅ ΠΊΠΎΠ½Π΅Ρ. m = ΠΏΡΠΈΠ·Π½Π°ΠΊ Π±Π°ΠΉΡΠ°, b = Π±Π°ΠΉΡ.
2. ΠΡΠ»ΠΈ m = Π°Π΄ΡΠ΅Ρ, ΡΠΎ:
a. Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (flag = 0), ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ Π² b
b. Π΅ΡΠ»ΠΈ flag = Π΄Π°Π½Π½ΡΠ΅, Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΊΠΎΠ½Π΅Ρ
c. flag < Π°Π΄ΡΠ΅Ρ, i < b
d. ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏ. 1
3. ΠΡΠ»ΠΈ m = ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΠΎ:
4. Π΅ΡΠ»ΠΈ flag — Π΄Π°Π½Π½ΡΠ΅, Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΊΠΎΠ½Π΅Ρ
a. flag < ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ < i+1
b. ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏ.6
5. ΠΡΠ»ΠΈ m = Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ:
a. Π΅ΡΠ»ΠΈ Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ
b. flag < Π΄Π°Π½Π½ΡΠ΅
c. ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏ.6
6. m Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅
7. Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΡΠ΅ΠΉΠΊΡ i Π±Π°ΠΉΡ b, i < i+1, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏ.1
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π² ΡΠ΅Π³ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π² ΡΡΠ΅ΡΡΠΈΠΊΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΠΠΠ£.
Β· ΠΠ»Π°ΡΡ ALU Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ:
ΠΠΠ£ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ. Π ΠΠΠ£ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π°:
public int execute (int com) — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠΎ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΏΠΎ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ), ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Ρ.
private void setFlags (int r) — Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ»Π°Π³ΠΎΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°:
ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ r < 0 ΠΈΠ»ΠΈ r > 255 ΡΠΎ 1(ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ΡΡΡ) ΠΈΠ½Π°ΡΠ΅ 0 (Π½Π΅Ρ):
ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ: Π΅ΡΠ»ΠΈ r < 128 ΡΠΎ 1(ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ) ΠΈΠ½Π°ΡΠ΅ 0 (Π½Π΅Ρ);
Π½ΠΎΠ»Ρ: Π΅ΡΠ»ΠΈ r == 128 ΡΠΎ 1(ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½ΠΎΠ»Ρ) ΠΈΠ½Π°ΡΠ΅ 0 (Π½Π΅Ρ).
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π» Π² ΡΠΌΡΠ»ΡΡΠΎΡΠ΅. ΠΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΡΠ΅ΠΉΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π±Π°ΠΉΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ — 8 Π±ΠΈΡ. Π’ΠΎ Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠΈΡΠ»Π° ΠΎΡ -128 Π΄ΠΎ 127 (Ρ. ΠΊ. Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ). Π‘ΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ — Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠΏ int.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°:
t — ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, reg — ΡΠ΅Π³ΠΈΡΡΡ ΠΠΠ£, proc. overflow — ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
ΠΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄ | ΠΠΎΠ΄ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ | ||
ADD | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]=ΡΡΠ΅ΠΊ[0]+ ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ] | proc.stack.peek ()+ram.read (reg); setFlags (t); ram.write (t & 0xFF, reg); | ||
ADC | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]=ΡΡΠ΅ΠΊ[0]+ ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]+ ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ | proc.stack.peek ()+ram.read (reg)+proc.overflow; setFlags (t); ram. write (t & 0xFF, reg); | ||
SUB | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]=ΡΡΠ΅ΠΊ[0]-ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ] | proc.stack.peek ()-ram.read (reg); setFlags (t); ram. write (t & 0xFF, reg); | ||
SUB | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]=ΡΡΠ΅ΠΊ[0]- ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]- ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ | proc.stack.peek ()-ram.read (reg)-proc.overflow; setFlags (t); ram. write (t & 0xFF, reg); | ||
AND | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]=ΡΡΠ΅ΠΊ[0]& ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ] | proc.stack.peek () & ram. read (reg); setFlags (t); ram. write (t & 0xFF, reg); | ||
OR | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]=ΡΡΠ΅ΠΊ[0] | ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ] | proc.stack.peek () | ram. read (reg); setFlags (t); ram.write (t & 0xFF, reg); | ||
NOT | ΠΈΠ½Π²Π΅ΡΡΠΈΡ Π±ΠΈΡ ΡΡΠ΅ΠΊ[0] | proc.stack.pop (); t = (~t) & 0xFF; setFlags (t); proc.stack.push (t); | |||
PUSH | ΠΠ΄ΡΠ΅Ρ | ΡΠ΄Π²ΠΈΠ³ ΡΡΠ΅ΠΊΠ°; ΡΡΠ΅ΠΊ[0]=ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ] | if (!proc.stack.push (ram.read (reg))) { return 1; | ||
POP | ΠΠ΄ΡΠ΅Ρ | ΡΠ΄Π²ΠΈΠ³ ΡΡΠ΅ΠΊΠ°; ΠΏΠ°ΠΌΡΡΡ[Π°Π΄ΡΠ΅Ρ]= ΡΡΠ΅ΠΊ[0] | ram.write (proc.stack.pop (), reg); | ||
INC | ΡΠ΅Π³ΠΈΡΡΡ | ΡΡΠ΅ΠΊ[0]=ΡΡΠ΅ΠΊ[0]+1 | proc.stack.pop (); t++; setFlags (t); proc.stack.push (t); | ||
DEC | ΡΠ΅Π³ΠΈΡΡΡ | ΡΡΠ΅ΠΊ[0]=ΡΡΠ΅ΠΊ[0]-1 | proc.stack.pop (); t—; setFlags (t); proc.stack.push (t); | ||
JMP | ΠΠ΄ΡΠ΅Ρ | Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ | proc.PC = reg; | ||
JNZ | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄, Π΅ΡΠ»ΠΈ Π½Π΅ 0 | if (proc.zero == 0) proc. PC = reg; | ||
Π‘ΠLL | ΠΠ΄ΡΠ΅Ρ | ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅; Π°Π΄ΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅; | proc.PC-2; proc.PC = reg; if (!(proc.stack.push (t & 0xFF) && proc.stack.push (t &0xF00))) { return 1; | ||
RET | Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ; Π°Π΄ΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅; | int t1 = proc.stack.pop (); int t2 = proc.stack.pop (); t = t1 & t2; proc. PC = t; | |||
Π’Π°Π±Π»ΠΈΡΠ° 1. ΠΠΎΠΌΠ°Π½Π΄Ρ
Β· ΠΠ»Π°ΡΡ Stack Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
public Stack (int n) — ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ ΡΡΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π²Π½ΡΠΌ -1(Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ).
public int peek () — ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ·Π½Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ (Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΠΊΠ°.
public boolean push (int x) — ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΠ΅ΠΊ: Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠ΅ΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ½ΡΡΡ — i-ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΏΡΠ°Π²ΠΎ Π½Π° i+1, Π° Π½Π° ΠΌΠ΅ΡΡΠΎ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π½ΡΠΆΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
public int pop () — ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΡΠΈΡΡ (ΡΠ΄Π°Π»ΠΈΡΡ) Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΊΠ°, ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΄Π²ΠΈΠ³Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΡΡΠ΅ΠΉΠΊΡ Π² Π»Π΅Π²ΠΎ.
Β· ΠΠ»Π°ΡΡ Memory Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ:
ΠΠ°ΠΌΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΡ : ΠΈΠ½Π΄Π΅ΠΊΡ — ΡΡΠΎ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΊΠΈ (addr), ΡΠ»Π΅ΠΌΠ΅Π½Ρ — Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ (data).
ΠΠ΅ΡΠΎΠ΄ public Memory () — ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π»ΡΡ 4096 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
public int size () — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ.
public int read (int addr) — ΡΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ.
public void write (int data, int addr) — Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π² Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ.
public void clear () — ΠΎΠ±Π½ΡΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ.
public String toString () — ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊ.
ΠΠ°ΠΌΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π»ΡΡ : ΠΈΠ½Π΄Π΅ΠΊΡ — ΡΡΠΎ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΊΠΈ (addr), ΡΠ»Π΅ΠΌΠ΅Π½Ρ — Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ (data).
Β· ΠΠ»Π°ΡΡ Main ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ public static void main (String[] args) Π·Π°Π³ΡΡΠΆΠ°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° — p. loadObjectFile (new RandomAccessFile («f.bin», «r»)), Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ΅Π΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ System.out.println (ram);
ΠΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ public static void writeprog () .
5. ΠΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ, ΠΏΠ°ΠΌΡΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ORG ΠΈ DATA.
Π’Π΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ORG 2
PUSH 100
ADD 101
PUSH 100
POP 128
ADD 101
ORG 2
DATA 170
DATA 160
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· Π»ΠΈΡΡΠΈΠ½Π³Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
01 02 02 70 02 64 02 00 02 65 02 70 02 65 02 80 02 80 02 00 02 64 01 64 03 AA 03 A0
ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΡΡΠ½ΡΡ:
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π°Π΄ΡΠ΅ΡΠ° 2 Π² ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄ΡΡ Π·Π°Π½ΠΎΡΠΈΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ°: 70 64 0 65
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π:
ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠ»Π°ΡΡΠ° Processor:
import java.io.*;
import java.util.Arrays;
public class Processor {
ALU alu;
Memory ram;
Stack stack;
public int PC; // program counter ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅Π΄. ΠΊΠΎΠΌΠ°Π½Π΄Ρ
public int rgCOM; // command register Ρ ΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
int end; // ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
int zero;
int overflow;
int negative;
/*
* 0 — ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ
* 1 — ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
* 2 — Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°
* 3 — Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π±Π°ΠΉΡ-ΠΏΡΠΈΠ·Π½Π°ΠΊ
* 4 — Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΠΉΠ»Π°
* 5 — ΠΏΠΎΡΠ»Π΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ
* 6 — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»
*/
int error;
public Processor (Memory ram) {
this.ram = ram;
clear ();
}
/*
* ΡΠ±ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΏΠ°ΠΌΡΡΠΈ
*/
private void clear () {
stack = new Stack (8);
PC = 0;
rgCOM = 0;
zero = 0;
overflow = 0;
negative = 0;
error = 0;
ram.clear ();
alu = new ALU (ram, this);
}
public void execute () {
while (PC ≠ end) executeOneCom ();
}
public void executeOneCom () {
if (error == 0) {
int first = ram. read (PC);
rgCOM = first >> 4;
PC++;
if (twoBytes (rgCOM))
// 0xF00 = 1111 0000 0000 (2 ΡΠΈΡΡΠ΅ΠΌΠ°)
alu.reg = (((first << 8) & 0xF00)
error = alu. execute (rgCOM);
if (error ≠ 0) {
System.out.println («ΠΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°: ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ «+ error);
} else {
System.out.println (this);
}
}
}
private boolean twoBytes (int c) {
if (c == 6 || c == 15 || c == 9 || c == 10) {
return false;
} else {
return true;
}
}
public boolean loadObjectFile (DataInput f) {
clear ();
final int ADDRESS = 1;
final int COMMAND = 2;
final int DATA = 3;
int i = 0; // ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ
int flag = 0;
int m; // ΠΏΡΠΈΠ·Π½Π°ΠΊ Π±Π°ΠΉΡΠ°
int b; // Π±Π°ΠΉΡ
while (true)
try {
m = f. readInt ();
b = f. readInt ();
if (m == ADDRESS) {
if (flag == 0) PC = b;
if (flag == DATA) {
error = 5;
return false;
}
flag = ADDRESS;
i = b;
} else {
if (m == COMMAND) {
if (flag == DATA) {
error = 5;
return false;
}
flag = COMMAND;
end = i+1;
} else if (m == DATA) {
if (flag == 0) {
error = 4;
return false;
}
flag = DATA;
} else {
error = 3;
return false;
}
ram.write (b, i);
i++;
}
} catch (EOFException e) {
return true;
} catch (IOException e) {
error = 6;
return false;
}
}
public String toString () {
StringBuilder s = new StringBuilder ();
s.append (String.format («stack:%sn», Arrays. toString (this.stack.s)));
s.append (String.format («PC:%xn», this. PC));
s.append (String.format («rgCOM:%xn», this. rgCOM));
s.append (String.format («Π½ΠΎΠ»Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:%d %d %dn» ,
this.zero,
this.negative,
this.overflow));
return s. toString ();
}
}
ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠ»Π°ΡΡΠ° ALU:
public class ALU {
int reg;
Memory ram;
Processor proc;
public ALU (Memory ram, Processor proc) {
this.ram = ram;
this.proc = proc;
}
/*
* 0 — Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ
* 1 — ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
* 2 — Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°
*/
public int execute (int com) {
int t;
switch (com) {
//ADD
case 0:
t = proc.stack.peek ()+ram.read (reg);
setFlags (t);
ram.write (t & 0xFF, reg);
break;
//ADC
case 1:
t = proc.stack.peek ()+ram.read (reg)+proc.overflow;
setFlags (t);
ram.write (t & 0xFF, reg);
break;
//SUB
case 2:
t = proc.stack.peek ()-ram.read (reg);
setFlags (t);
ram.write (t & 0xFF, reg);
break;
//SUB
case 3:
t = proc.stack.peek ()-ram.read (reg)-proc.overflow;
setFlags (t);
ram.write (t & 0xFF, reg);
break;
//AND
case 4:
t = proc.stack.peek () & ram. read (reg);
setFlags (t);
ram.write (t & 0xFF, reg);
break;
//OR
case 5:
t = proc.stack.peek () | ram. read (reg);
setFlags (t);
ram.write (t & 0xFF, reg);
break;
//NOT
case 6:
t = proc.stack.pop ();
t = (~t) & 0xFF;
setFlags (t);
proc.stack.push (t);
break;
//PUSH
case 7:
if (!proc.stack.push (ram.read (reg))) {
return 1;
}
break;
//POP
case 8:
ram.write (proc.stack.pop (), reg);
break;
//INC
case 9:
t = proc.stack.pop ();
t++;
setFlags (t);
proc.stack.push (t);
break;
//DEC
case 10:
t = proc.stack.pop ();
t—;
setFlags (t);
proc.stack.push (t);
break;
//JMP
case 11:
proc.PC = reg;
break;
//JNZ
case 13:
if (proc.zero == 0) proc. PC = reg;
break;
//CALL
case 14:
t = proc. PC-2;
proc.PC = reg;
if (!(proc.stack.push (t & 0xFF) &&
proc.stack.push (t & 0xF00))) {
return 1;
}
break;
//RET
case 15:
int t1 = proc.stack.pop ();
int t2 = proc.stack.pop ();
t = t1 & t2;
proc.PC = t;
break;
default:
return 2;
}
return 0;
}
private void setFlags (int r)
proc.overflow = (r < 0
}
ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠ»Π°ΡΡΠ° Stack:
public class Stack {
int[] s;
int max;
int size;
public Stack (int n) {
s = new int[n];
for (int i = 0; i < n; ++i) {
s[i] = -1;
max = n;
size = 0;
}
}
/*
* Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
*/
public int peek () {
return s[0];
}
/*
* Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΠ΅ΠΊ
*/
public boolean push (int x) {
if (size+1 > max) return false; // ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
for (int i = size; i > 0; i—) {
s[i] = s[i-1];
}
s[0] = x;
size++;
return true;
}
/*
* Π²ΡΡΠ°ΡΠΈΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
*/
public int pop () {
int t = s[0];
for (int i = 1; i < max; i++) {
s[i-1] = s[i];
}
size—;
return t;
}
}
ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠ»Π°ΡΡΠ° Memory:
class Memory {
private int[] ram;
public Memory () {
ram = new int[4096];
}
public int size () {
return ram. length;
}
public int read (int addr) {
return ram[addr];
}
public void write (int data, int addr) {
ram[addr] = data;
}
public void clear () {
for (int i = 0; i < ram. length; ++i) {
ram[i] = 0;
}
}
public String toString () {
StringBuilder b = new StringBuilder ();
int c = 128;
for (int i = 0, k = 0; i < c; i++) {
int j = 0;
while ((k = i + j*c) < ram. length) {
b.append (String.format («%2h», k));
b.append («:»);
b.append (String.format («%2h», ram[k]));
b.append (««);
j++;
}
b.append («n»);
}
return b. toString ();
}
}