Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
- 1 8.1.4 c32.mac: ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ 32-ΡΡ Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ Π‘ΠΈ
- 2 8.2 ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ NetBSD/FreeBSD/OpenBSD ΠΈ Linux/ELF
- 3 ΠΠΎΡΠ΅ΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°?
- 4 SIMD Parallelism
- 5 2.1.13 ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NASM
- 6 2.2 ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ MASM: ΠΡΠ»ΠΈΡΠΈΡ
- 7 6.5.3 elf-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ GLOBAL
- 8 8.1.3 ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ
- 9 Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ?
- 10 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
- 11 ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΠ΅ΠΎΡΠΈΡ
- 12 ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΊΡΡΡΡΠ²ΠΎ?
- 13 6.5.4 elf-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ COMMON
- 14 6.6 aout: ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρa.out ΠΠΈΠ½ΡΠΊΡ
- 15 6.7 aoutb: ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρa.out NetBSD/FreeBSD/OpenBSD
- 16 6.8 as86: ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ as86 ΠΠΈΠ½ΡΠΊΡ
- 17 6.9 rdf: ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
- 18 8.2.2 ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
- 19 ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°
8.1.4 c32.mac: ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ Π΄Π»Ρ 32-ΡΡ Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ Π‘ΠΈ
Π€Π°ΠΉΠ» ΠΌΠ°ΠΊΡΠΎΡΠ° c32.mac Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π°ΡΡ
ΠΈΠ² NASM, Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³
misc. Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ 3 ΠΌΠ°ΠΊΡΠΎΡΠ°: proc,
arg ΠΈ endproc. ΠΠ½ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π² ΡΡΠΈΠ»Π΅ Π‘ΠΈ, ΠΈ ΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅
Π΄Π»Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π°.
ΠΡΠΈΠΌΠ΅Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ ΡΡΠΎΡ Π½Π°Π±ΠΎΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:
proc _proc32 %$i arg %$j arg mov eax, mov ebx, add eax, endproc
ΠΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ _proc32 ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ
Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΏΠ΅ΡΠ²ΡΠΉ (i) ΡΠ²Π»ΡΠ΅ΡΡΡ integer
ΠΈ Π²ΡΠΎΡΠΎΠΉ (j) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° integer.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΡΠ΅Ρ i + *j.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡ arg ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ EQU, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ %$i ΠΊΠ°ΠΊ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ BP.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ,
ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌΠΎΠΌΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΡΡΠ΅ΠΊΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ proc
ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌΠΎΠΌΡ ΠΎΡΡΡΠ΄Π° ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ endproc), ΠΏΠΎΡΡΠΎΠΌΡ
Π² Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°Ρ
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ,
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ.
arg ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ
ΡΠ°Π·ΠΌΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π΅ Π·Π°Π΄Π°Π½, ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΡΠΌ 4-Π΅ΠΌ, ΠΏΠΎΡΠΎΠΌΡ
ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΡΠΈΠΏΠ° int
ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ.
8.2 ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ NetBSD/FreeBSD/OpenBSD
ΠΈ Linux/ELF
ELF Π·Π°ΠΌΠ΅ΡΠ°Π΅Ρ ΡΡΠ°ΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ a.out Π΄Π»Ρ
ΠΠΈΠ½ΡΠΊΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄ (position-independent code
PIC), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅.
NASM ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ELF,
ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΠΠΈΠ½ΡΠΊΡ ELF Π½Π° NASM.
NetBSD, ΠΈ Π΅Π³ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΈ FreeBSD ΠΈ OpenBSD, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄,
Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠΎΡΠΌΠ°Ρ a.out.
NASM ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠ°Ρ aoutb Π΄Π»Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ BSD Π½Π° NASM ΡΠΎΠΆΠ΅.
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ PIC (ΠΏΠ΅ΡΠΌΠ΅ΡΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄)
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π΄Π΅Π»Π°Ρ
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠ°ΠΉΠ»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ΅
ΠΌΠ΅ΡΡΠΎ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅
ΡΠ΅ΠΊΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΡΠ΄Π° ΠΎΠ½Π°
Π·Π°Π³ΡΡΠΆΠ΅Π½Π°.
ΠΠΎΡΡΠΎΠΌΡ, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°ΠΊΠΈΠΌ Π²ΠΎΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
mov eax, ; ΠΠ¨ΠΠΠΠ
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ, Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ
ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ (global offset table), ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΠ’Π‘ (GOT); ΠΠ’Π‘ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π°
Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌ ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΡ ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ
ΠΊΡΠ΄Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π° Π²Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° (ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ CALL
ΠΈ POP), Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°Π΄ΡΠ΅Ρ ΠΠ’Π‘, ΠΈ Π·Π°ΡΠ΅ΠΌ
Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Π²Π°ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠΎΠΌ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΠ’Π‘.
Π‘Π΅ΠΊΡΠΈΡ data PIC (ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄) ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ
ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΊΡΠΈΡ Π΄Π°Π½Π½ΡΡ
Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ
Π±ΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π° Π² ΠΏΠ°ΠΌΡΡΡ ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ ΡΠΎ Π½ΠΈ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
Π² ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π°, ΠΎΠ½Π°
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½Π°. ΠΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° Π²
ΡΠ΅ΠΊΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
, ΠΎΡΠΎΠ±ΠΎ Π½Π΅ Π·Π°Π±ΠΎΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ (Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π² ΠΏΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ).
ΠΠΎΡΠ΅ΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°?
Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅Π΄ΠΊΠΎ. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊ ΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅Π»Π΅ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ Π·Π°ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΡΡΠ΄Π°, ΠΏΡΠΈΡΠ΅ΠΌ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΎΠ²). ΠΠ° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΡΠ΄Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΎ ΠΈ ΠΈΠ· ΡΠ°ΠΊΠΎΠΉ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ Π΄Π»Ρ Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΈΡΡΡ Π½Π° ΡΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ·ΡΠΊΠ°ΠΌΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡΠΊΠΈΡ Ρ ΠΈΡΡΠΎΡΡΠ΅ΠΉ. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠ΅ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΈ Π² ΡΠ΄ΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ·ΡΠΊΠ° ΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π΅Π΄Π²Π° Π»ΠΈ ΠΊΠΎΠΌΡ ΠΏΡΠΈΠ΄Π΅Ρ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΡΡΠΌΠ°ΡΡΠ΅Π΄ΡΠ°Ρ ΠΌΡΡΠ»Ρ ΠΏΠΈΡΠ°ΡΡ ΠΊΡΡΠΏΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΈΡΡΠΎΠΌ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅.
Π’Π°ΠΊ Π·Π°ΡΠ΅ΠΌ ΠΆΠ΅ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π΅Π³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅? ΠΠΎ ΡΡΠ΄Ρ Π²Π΅ΡΠΊΠΈΡ ΠΏΡΠΈΡΠΈΠ½, ΠΈ Π²ΠΎΡ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ : Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β ΡΡΠΎ ΠΊΡΠ°Π΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠΊΠΎΠΈΡΡΡ Π²ΡΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠ·ΠΈΠΊ ΠΌΠ΅ΡΡΠ°Π΅Ρ ΡΠ°Π·Π³Π°Π΄Π°ΡΡ ΡΠ°ΠΉΠ½Ρ ΡΡΡΠΎΠ΅Π½ΠΈΡ Π²ΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ, Π½Π°ΠΉΡΠΈ ΡΡΠΈ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ Π½Π΅Π΄Π΅Π»ΠΈΠΌΡΠ΅ (Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅) ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ, Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΡ Π»ΠΈΡΡ ΡΠΌΡΡΠ½ΡΠΌ ΠΎ ΡΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ²Π°Π½ΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΎΡΠΈΠΈ. ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΆΠ΅ ΠΈ Π΅ΡΡΡ ΡΠ° ΠΏΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΡΠΎΠΈΡ Π²ΡΠ΅Π»Π΅Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΠ½ β ΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π°Π΅Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΌΡΡΠ»ΠΈΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. Π ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΌΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π»ΡΠ±ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π² ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ½ Π½Π΅ Π½Π°ΠΏΠΈΡΠ΅Ρ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠΈ. ΠΠ΅Π»ΡΠ·Ρ ΠΎΡΡΠΈΡΠ°ΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΎΠΌ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΎΠ± ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΠΎΠΉ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ΅. ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ Π±Ρ ΡΠ·ΡΠΊΠ΅ Π²Ρ Π½ΠΈ ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Ρ ΠΎΡΡ Π±Ρ Π² ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΠΈΡΠΏΠΎΠ»Π½ΡΡ Π²Π°ΡΠ΅ Π²ΡΡΠΎΡΠ°ΠΉΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π»Π΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π΅Ρ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π±Π΅Π·Π΄ΡΠΌΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π²ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π²Π΅Π΄Π°Ρ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ ΡΠ²ΠΎΡΠΈΡ.
ΠΠΎΠΎΠ±ΡΠ΅, ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ, ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΡΡΠΎ-ΡΠΎ Π½Π΅ Π·Π½Π°ΡΡ, Π½ΠΎ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Π²ΡΠ΅Ρ Π΅Π΅ ΡΡΠΎΠ²Π½ΡΡ , ΠΎΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡ Π΅ΠΌ Π΄ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ Π² Π³Π»ΡΠ±ΠΈΠ½Π΅ ΠΏΠΎΠ΄ΡΠΎΠ·Π½Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΠ΅ΠΉ Π·Π°Π³Π°Π΄ΠΎΡΠ½ΠΎΡΡΠΈ, Π½Π΅ΠΏΠΎΡΡΠΈΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΈΠ½ΡΡΠ²Π°, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎ ΠΌΠ°Π½ΠΎΠ²Π΅Π½ΠΈΡ ΡΡΠ΅ΠΉ-ΡΠΎ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠΉ ΠΏΠ°Π»ΠΎΡΠΊΠΈ. Π’Π°ΠΊΠΎΠ΅ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Π° Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ½ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ·Π°Π½ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½ Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ Π³Π»ΡΠ±ΠΈΠ½Π½ΡΡ ΡΠ»ΠΎΠ΅Π² ΠΏΠΎΠ΄ΡΠΎΠ·Π½Π°Π½ΠΈΡ, ΡΡΠΎ ΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅Π»ΠΎ, Π½ΠΈΡΠ΅Π³ΠΎ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ΠΏΠΎΠ·Π½Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ.
ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ ΠΏΠΎΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ, Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ.
Π ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΡΠ·ΡΠΊ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΈΠ·ΡΡΠ°ΡΡ. ΠΠ½Π°Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΡΡ Ρ ΡΡΠΏΠ΅Ρ ΠΎΠΌ ΠΌΠΎΠΆΠ΅ΡΡ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ, ΠΏΠΎΡΡΠ°ΡΠΈΠ² Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
ΠΠΎ ΡΠ°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΡΠΌΠ΅Ρ ΠΌΡΡΠ»ΠΈΡΡ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΡ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅ΡΡ Π·Π½Π°ΡΡ, ΡΡΠΎ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π ΡΡΠΎ ΡΠΆΠ΅ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΡΡΠΊΠΎΠΉ, Π° ΠΏΡΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π΅ΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ°ΡΡ Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠ΅ΡΡΡΠ²Π°.
SIMD Parallelism
The XMM registers can do arithmetic on floating point values one operation at a time (scalar)
or multiple operations at a time (packed). The operations have the form:
xmmreg_or_memory, xmmreg |
For floating point addition, the instructions are:
Β Β Β Β Β | do 2 double-precision additions in parallel (add packed double) |
do just one double-precision addition, using the low 64-bits of the register (add scalar double) | |
do 4 single-precision additions in parallel (add packed single) | |
do just one single-precision addition, using the low 32-bits of the register (add scalar single) |
Hereβs a function that adds four floats at once:
add_four_floats.asm
; void add_four_floats(float x, float y) ; x += y for i in range(0..4) global add_four_floats section .text add_four_floats: movdqa xmm0, ; all four values of x movdqa xmm1, ; all four values of y addps xmm0, xmm1 ; do all four sums in one shot movdqa , xmm0 ret
and a caller:
test_add_four_floats.c
#include <stdio.h> void add_four_floats(float[], float[]); int main() { float x[] = {-29.750, 244.333, 887.29, 48.1E22}; float y[] = {29.750, 199.333, -8.29, 22.1E23}; add_four_floats(x, y); printf("%f\n%f\n%f\n%f\n", x, x, x, x); return 0; }
Also see this nice
little x86 floating-point slide deck from Ray Seyfarth.
2.1.13 ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NASM
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ NASM, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ
Π΅Π΅ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊΠ»ΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ
ΡΡ ΡΠ°Π½ΡΡΠ΅
Β«Π½Π°ΡΡΠΎΡΡΠΈΡ
Β» ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ,
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ²
Π² ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΡΡ NASM ΠΊΠ»ΡΡ -i.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ -s
-ic:\nasmlib Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΊΠ»ΡΡΠ°. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ -dNAME=Β»my nameΒ» Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ°ΠΊ,
ΠΊΠ°ΠΊ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ (Π²Π½ΡΡΡΠΈ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π΅Π») ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ NASMΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ
Π½Π΅ ΠΏΠΎΠΉΠΌΠ΅Ρ Π΄Π²ΡΡ
Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² -dNAME=Β»my
ΠΈ nameΒ».
ΠΠ»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
NASM Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΌΡΡ Π·Π½Π°ΠΊΠΎΠΌ Β«ΠΌΠΈΠ½ΡΡΒ»,
NASM Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΎΠΏΡΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅!-s!-ic:\nasmlib ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ NASM
ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ -s -ic:\nasmlib, Π½ΠΎ Π·Π°ΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ !-dNAME=Β»my
nameΒ» Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
2.2 ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ MASM: ΠΡΠ»ΠΈΡΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ MASM,
ΠΈΠ»ΠΈ TASM Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ MASM, ΠΈΠ»ΠΈ a86,
ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π·Π΄Π΅Π», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° MASM
ΠΈ NASM. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½ΡΡΠ΅ MASM, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ
ΡΠ°Π·Π΄Π΅Π» ΠΈ ΡΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π»ΡΡΠ΅.
6.5.3 elf-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ GLOBAL
ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ELF ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π΅,
ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΅Π³ΠΎ Π°Π΄ΡΠ΅Ρ: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΅Π³ΠΎ ΡΠΈΠΏ. ΠΡΠΎ
ΡΠ΄Π΅Π»Π°Π½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΏΠΈΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
NASM ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ GLOBAL.
ΠΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π² function
ΠΈΠ»ΠΈ data (object ΡΠ²Π»ΡΠ΅ΡΡΡ
ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ data), Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ
Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠ°
global hashlookup:function, hashtable:data
ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» hashlookup ΠΊΠ°ΠΊ
ΡΡΠ½ΠΊΡΠΈΡ, Π° hashtable ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π°Π½Π½ΡΡ
.
ΠΠΎΡΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
(ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΌΠ΅ΡΠΊΠΈ ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ) ΡΠ°Π·ΠΌΠ΅Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π΄Π°Π½Π½ΡΡ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
global hashtable:data (hashtable.end - hashtable) hashtable: db this,that,theother ; Π·Π΄Π΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ .end:
ΠΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡ NASM Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ Π΄Π»ΠΈΠ½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ELF.
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² .
8.1.3 ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π‘ΠΈ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΈΠ»ΠΈ ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ
ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π‘ΠΈ, Π²Π°ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°ΠΊ GLOBAL
ΠΈΠ»ΠΈ EXTERN. (ΠΠΏΡΡΡ ΠΆΠ΅, ΠΈΠΌΠ΅Π½Π° Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ,
ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² .) Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ,
Π‘ΠΈ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ int i ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ
Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ· Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΊΠ°ΠΊ
extern _i mov eax,
Π ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π‘ΠΈ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
ΠΊΠ°ΠΊ int j, Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ ΡΠ°ΠΊ (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ Π²Ρ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΡΠ΅ΡΠ΅
ΡΡΠΎ Π² _DATA ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ):
global _j _j dd 0
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Ρ Π‘ΠΈ-ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, int ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ 4 Π±Π°ΠΉΡΠ°,
ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π² Π‘ΠΈ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ°ΠΊ int a,
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ a ΡΠ°ΠΊ: mov
ax,. ( Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ 12 ΠΏΠΎΠ»ΡΠ°Π΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π΅,
3 Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, 4.) Π Π°Π·ΠΌΠ΅ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ
ΡΠΈΠΏΠΎΠ² Π² 32-Ρ
ΡΠ°Π·ΡΡΠ΄Π½ΡΡ
Π‘ΠΈ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ
:
1 Π΄Π»Ρ char, 2 Π΄Π»Ρ short,
4 Π΄Π»Ρ int, long ΠΈ float,
ΠΈ 8 Π΄Π»Ρ double. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ 32-ΡΡ
Π±ΠΈΡΠ½ΡΠΉ
Π°Π΄ΡΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ 4 Π±Π°ΠΉΡΠ°.
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ ΡΠ·ΡΠΊΠ° Π‘ΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ
Π°Π΄ΡΠ΅ΡΠ° ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ Π²Π°Ρ ΠΏΠΎΠ»Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π‘ΠΈ-ΡΡΡΡΠΊΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡ NASM (STRUC),
ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ»ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π³ΠΎ.
Π§ΡΠΎΠ±Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΡΠΎΡΠ΅, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΡΠΈΡΠ°ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ
ΡΠ·ΡΠΊΠ° Π‘ΠΈ ΠΈ Π½Π°ΠΉΡΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
. NASM Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΉ ΡΠ»Π΅Π½ΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ Π² Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠ΅ STRUC,
ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π‘ΠΈ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ
Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΡ
. ΠΠ±ΡΡΠ½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°
struct { char c; int i; } foo;
ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π΅ 5 Π±Π°ΠΉΡ, Π° 8, ΡΠ°ΠΊ ΠΊΠ°ΠΊ int ΠΏΠΎΠ»Π΅
Π±ΡΠ΄Π΅Ρ Π²ΡΡΠΎΠ²Π½Π΅Π½ΠΎ Π½Π° Π³ΡΠ°Π½ΠΈΡΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ
Π½Π°ΡΡΡΠΎΠΈΡΡ Π² Π‘ΠΈ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ #pragma
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠ°ΠΊ Π²Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ?
Π‘Π°ΠΌΠΎ ΡΠ»ΠΎΠ²ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ (assembler) ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Β«ΡΠ±ΠΎΡΡΠΈΠΊΒ». ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΡΠ΅ΠΊΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΡΠ°Ρ ΡΡΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ°ΠΌΠΈ, Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΡ ΡΠ»ΠΎΠ². Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Π―Π·ΡΠΊ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠΌ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°.
ΠΠ° Π·Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΠΠ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ ΡΠ΅Π»ΡΠ΅ ΠΊΠΎΠΌΠ½Π°ΡΡ ΠΈ Π²Π΅ΡΠΈΠ»ΠΈ Π½Π΅ ΠΎΠ΄Π½Ρ ΡΠΎΠ½Π½Ρ, ΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ Ρ Π²ΠΎΡΠΎΠ±ΡΠΈΠ½ΡΠΉ ΠΌΠΎΠ·Π³, Π° ΡΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π±ΡΠ»ΠΎ Π²Π±ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΠ°ΠΌΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠΈΡΡΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Ρ ΡΡΠΌΠ±Π»Π΅ΡΡ, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΊΠΈ ΠΈ ΠΊΠ½ΠΎΠΏΠΎΡΠΊΠΈ. Π§ΠΈΡΠ»ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³Π»ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΡΠ΅Π½ ΠΈ ΡΠΎΡΠ»ΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΡΠ°Π» Π²ΠΎΠΏΡΠΎΡ ΠΎΠ± ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π΅Π½Π΅Π³. ΠΠΎΡΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ ΡΡΠ°Π»ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΎΡΠΎΠΊΠΎΠ²ΡΡ Π³ΠΎΠ΄ΠΎΠ² ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ°-Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΏΡΠΎΡΡΠΈΡΡ, ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΈΡ ΠΎΡΠ»Π°Π΄ΠΊΡ. ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ·ΡΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ (Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ΄Π° Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ ΡΠ·ΡΠΊΠ°) ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ (ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π»Π΅ΡΡ). ΠΠ½ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π»ΠΈΡΡ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π»ΠΈΡΡ β ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π΄ΠΎΡΠ»ΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΡΡΠΊΠΎΠΉ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β ΡΡΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΎΠ΄ΠΈΠ½ Π½Π° ΠΎΠ΄ΠΈΠ½. ΠΡΡΡΠ΄Π° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½Π°Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° β ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ (ΠΏΠΎΡΠ»Π΅ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°). ΠΠΎΠΌΠ°Π½Π΄Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠΎ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ, ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡΡ, ΡΠ·ΡΠΊΠ° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°. ΠΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° Β«ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°Β» ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈΠ»ΠΈ Ρ ΠΎΡΡ Π±Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π½Π° ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ. ΠΠ³ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΡΠ½ΡΡΡ, Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΎΠ½Π° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡΠ΅ ΡΠ·ΡΠΊΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π° ΡΠΈΠΏ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΆΠ΅ΡΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡ Π½Π° ΠΈΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ Π²Π°ΠΆΠ½ΠΎ, ΡΠ·ΡΠΊ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΈΠ·ΡΡΠ°ΡΡ. ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΠΏΠΎΠ½ΡΡΡ ΡΠ°ΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΈ ΡΠΎΠ³Π΄Π° Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ ΡΡΡΠ΄Π° ΠΎΡΠ²ΠΎΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΎΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, Π½ΠΎ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Windows
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π΄Π»Ρ NASM ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ nasm 2.11.02, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° β gcc 4.6.2 ΠΈΠ· MinGW (gcc 4.8.1 ΠΈΠ· MinGW64 Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ x64) ΠΈΠ»ΠΈ ld 2.22 ΠΈΠ· MinGW (ld 2.23.2 ΠΈΠ· MinGW64 Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ x64).
ΠΠ΅ΡΡΠΈΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠΎΠ² Π΄Π»Ρ NASM ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΊΡΡΡΠ° Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΠΠ ΠΈ ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°Β» ΠΠΠ ΠΠΠ£ 1-Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°.
Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ gdb 7.4 (7.6 Π΄Π»Ρ x64) ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° MinGW ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Π°Ρ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0, Π² SASM Π²ΠΊΠ»ΡΡΠ΅Π½Ρ fasm 1.71.39 ΠΈ gas 2.23.1 ΠΈΠ· MinGW (gas 2.23.2 ΠΈΠ· MinGW64).
ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ MASM Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΠ±ΠΎΡΠΊΡ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΠΈΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ MASM Π½Π° ΠΠ°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΡΠ°ΠΉΡΠ° https://www.masm32.com/ ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΠΈ Π΄ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° (ml.exe, ΠΏΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Β«C:/masm32/bin/ml.exeΒ») ΠΈ Π΄ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ° (link.exe, ΠΏΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Β«C:/masm32/bin/link.exeΒ») Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΠ»ΡΡ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Β«ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅Β».
ΠΠΎΠ΄ Windows SASM ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ°Π·Ρ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ°Π±ΠΎΡΠ΅.
Linux
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Linux Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ: nasm ΠΈΠ»ΠΈ gas (Π΅ΡΠ»ΠΈ ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, fasm ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΡΠ½ Π² ΡΠ±ΠΎΡΠΊΡ), gcc, gdb (Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ).
ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² Wiki ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° GitHub.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΠ΅ΠΎΡΠΈΡ
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° β ΡΡΠΎ ΠΊΠΎΠ΄ BIOS (ΠΈΠ»ΠΈ ΠΆΠ΅ UEFI, Π½ΠΎ Π·Π΄Π΅ΡΡ Ρ Π±ΡΠ΄Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎ BIOS), ΠΊΠΎΡΠΎΡΡΠΉ Β«Π·Π°ΡΠΈΡΒ» Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ½ΡΠΊΠΎΠΉ ΠΏΠ»Π°ΡΡ (ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ β ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0xFFFFFFF0).
Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ BIOS Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Power-On Self-Test (POST) β ΡΠ°ΠΌΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. BIOS ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΠ‘. ΠΠ°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΉ Π΄ΠΈΡΠΊ β ΡΡΠΎ Π΄ΠΈΡΠΊ (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ), Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 2 Π±Π°ΠΉΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΠΎΡΠ° (ΠΏΠΎΠ΄ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ΅ΠΊΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ 512 Π±Π°ΠΉΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ, Ρ.ΠΊ. 1 ΡΠ΅ΠΊΡΠΎΡ = 512 Π±Π°ΠΉΡ) ΡΠ°Π²Π½Ρ 55 ΠΈ AA (Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅). ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΉ Π΄ΠΈΡΠΊ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½, BIOS Π·Π°Π³ΡΡΠ·ΠΈΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΅Π³ΠΎ 512 Π±Π°ΠΉΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0x7c00 ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΏΠΎ ΡΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ.
Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, Π² ΡΡΠΈ 512 Π±Π°ΠΉΡ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ ΡΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Π² ΡΡΠΎΡ ΡΠ΅ΠΊΡΠΎΡ ΠΊΠ»Π°Π΄ΡΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΠ‘ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
Π‘ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Real Mode (= 16-Π±ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈΡΡ Ρ 16-Π±ΠΈΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 1 ΠΠ± ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎ Π²ΡΠΎΡΡΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π·Π΄Π΅ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. ΠΠ°ΡΡΠΈΠ½ΠΊΠ° Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ (ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π²Π·ΡΡΠ° ΠΎΡΡΡΠ΄Π°).
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, ΠΎ ΡΠ΅ΠΌ ΡΡΠΎΠΈΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΡΡΡ β ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΎΡΠΎΠ±ΡΠΉ ΡΠΈΠ³Π½Π°Π» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π²Π²ΠΎΠ΄Π°, ΡΠ°ΠΊΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΈΠ»ΠΈ ΠΌΡΡΡ) ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ. ΠΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Interrupt Descriptor Table (IDT) Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π°Π΄ΡΠ΅Ρ ΠΏΡΠ΅ΡΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² (Π½Π° ΡΡΠ΅ΠΊΠ΅) ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΊ ΠΏΡΠ΅ΡΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΠΎ-ΡΠΎ Π½Π° ΡΠΊΡΠ°Π½ Π² BIOS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 0x10 (ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ), Π° Π΄Π»Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ β ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ 0x16. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π·Π΄Π΅ΡΡ.
Π’Π°ΠΊΠΆΠ΅, Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π΅ΡΡΡ ΡΠ²ΠΎΡ ΠΏΠΎΠ΄ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΡΡΠΎ-ΡΠΎ Π½Π° ΡΠΊΡΠ°Π½ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ (!), Π½ΡΠΆΠ½ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ AH Π·Π°Π½Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0x0e. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. 0x10 ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ah (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΡΠ½ΠΊΡΠΈΡ) ΠΈ al (ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ,
Π²ΡΠ²Π΅Π΄Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΈΠΌΠ²ΠΎΠ» βxβ. 0x16 ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ah (ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΡΡΠ½ΠΊΡΠΈΡ) ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π² ΡΠ΅Π³ΠΈΡΡΡ al Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ 0x0.
ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΡΠΊΡΡΡΡΠ²ΠΎ?
Π‘ΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°ΠΊ, Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, Π² ΡΡΠΈΡ ΡΡΠΊΠ°Ρ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ. ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΈΠ· ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π΅Π³ΠΎ Π΄ΡΡΠ°, Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΠΎΠ·Π½Π°Π½ΠΈΠ΅. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π²ΡΡ ΠΌΡΠ·ΡΠΊΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²Π°, ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΡΠ΅ΠΌΠΈ Π½ΠΎΡ, ΡΠ°ΠΊ ΠΈ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΈΡ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΆΠΈΠ·Π½ΡΡ. ΠΡΠΎ Π·Π½Π°Π΅Ρ Π»ΠΈΡΡ ΡΡΠΈ Π°ΠΊΠΊΠΎΡΠ΄Π° β ΡΡΠΎ Β«ΠΏΠΎΠΏΡΠ°Β», ΠΊΠΎΠΌΡ ΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π²ΡΡ ΠΏΠ°Π»ΠΈΡΡΠ° β ΡΡΠΎ ΠΊΠ»Π°ΡΡΠΈΠΊΠ°.
ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ Π½Π°ΡΠΊΠ° ΡΠ°ΠΊ ΠΆΠ°ΠΆΠ΄Π΅Ρ ΠΏΡΠΎΠ½ΠΈΠΊΠ½ΡΡΡ Π² ΠΊΠ²Π°Π½ΡΠΎΠ²ΡΠ΅ Π³Π»ΡΠ±ΠΈΠ½Ρ ΠΈ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π² ΡΠ²ΠΎΠΈ ΡΡΠΊΠΈ Π½Π΅ΡΠ»ΠΎΠ²ΠΈΠΌΡΠΉ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊ ΠΌΠ°ΡΠ΅ΡΠΈΠΈ? Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°Π΄ Π½Π΅ΠΉ Π²Π»Π°ΡΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΅Π΅ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π²ΠΎΠ»Π΅, ΡΡΠ°ΡΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π’Π²ΠΎΡΡΠ° ΠΡΠ΅Π»Π΅Π½Π½ΠΎΠΉ. Π ΡΡΠΈ ΡΡΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ ΡΠ°ΠΊΠ°Ρ Π²Π»Π°ΡΡΡ β ΡΡΠΎ Π΅ΡΠ΅ Π²ΠΎΠΏΡΠΎΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π½Π°ΡΠΊΠΈ, Π² ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ½ Π½Π΅Ρ, Π½Π°ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊΠΈ, Π΅Π³ΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈ ΡΠ° Π²Π»Π°ΡΡΡ Π½Π°Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΌ Π΄Π°Π΅Ρ Π·Π½Π°Π½ΠΈΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΏΠΎΠ΄Π½ΡΠ»ΠΎΡΡ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΡΠΊΡΡΡΡΠ²Π°, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΊΡΠ°ΡΠΎΡΡ, ΡΠΊΡΡΠ²Π°ΡΡΡΡΡΡ Π·Π° ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΈ Π½ΡΠ»Π΅ΠΉ. ΠΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΎΡΡΠ°ΡΠ»ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡΡ, Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°ΡΡ ΠΠ°ΡΡΠ΅ΡΠΎΠΌ. Π ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΊΡΠ»ΡΡΡΡΡ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΡΠ΄Π° ΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠΈ Π°Π²ΡΠΎΡ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π² ΡΠ²ΠΎΠ΅ ΡΠ²ΠΎΡΠ΅Π½ΠΈΠ΅.
ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°ΡΠΎΡ
ΠΠ΅ ΡΠ°ΠΊ Π΄Π°Π²Π½ΠΎ ΠΠΆΠ΅ΠΉΠΌΡ ΠΡΠΌΠ΅ΡΠΎΠ½ Π²ΡΠΏΡΡΡΠΈΠ» Π² ΡΠ²Π΅Ρ 3D-Π²Π΅ΡΡΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ Β«Π’Π΅ΡΠΌΠΈΠ½Π°ΡΠΎΡΠ°Β», ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΈΠ±ΠΎΡΠ³Π°-ΡΠ±ΠΈΠΉΡΡβ¦
ΠΠ°Π΄Ρ ΠΈΠ· ΡΠΈΠ»ΡΠΌΠ° Β«Π’Π΅ΡΠΌΠΈΠ½Π°ΡΠΎΡΒ»
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Β«Π·ΡΠ΅Π½ΠΈΠ΅Β» ΡΠ΅ΡΠΌΠΈΠ½Π°ΡΠΎΡΠ°, Π° ΡΠ»Π΅Π²Π° Π½Π° Π½Π΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ Π»ΠΈΡΡΠΈΠ½Π³. Π‘ΡΠ΄Ρ ΠΏΠΎ Π½Π΅ΠΌΡ, Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΡΠΉ Π£Π½ΠΈΡΡΠΎΠΆΠΈΡΠ΅Π»Ρ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ MOS Technology 6502 Π»ΠΈΠ±ΠΎ Π½Π° MOS Technology 6510. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π² 1975 Π³ΠΎΠ΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ Apple ΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, Π½Π° Π·Π½Π°ΠΌΠ΅Π½ΠΈΡΡΡ ΠΈΠ³ΡΠΎΠ²ΡΡ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°Ρ ΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Atari 2600 ΠΈ Nintendo Entertainment System (Ρ Π½Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠ°ΠΊ Dendy). ΠΠΌΠ΅Π» Π»ΠΈΡΡ ΡΡΠΈ 8-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°: Π-Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ ΠΈ Π΄Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ° X ΠΈ Y. Π’Π°ΠΊΠΎΠ΅ ΠΌΠ°Π»ΠΎΠ΅ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ 256 Π±Π°ΠΉΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π½ΡΠ»Π΅Π²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°) ΠΌΠΎΠ³Π»ΠΈ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ 8-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΈΠ»ΠΈ 16-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ². Π£ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π±ΡΠ»ΠΎ 13 ΡΠ΅ΠΆΠΈΠΌΠΎΠ² Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Π²ΡΠ΅Π³ΠΎ 53 ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π£ ΡΠ΅ΡΠΌΠΈΠ½Π°ΡΠΎΡΠ° ΠΈΠ΄Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ LDA-STA-LDA-STAβ¦ Π ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π΅ 6502 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΡΠΎΡΠ»ΠΈ ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ· LDA/LDY/LDX/STA/STX/STY:
Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π² ΠΏΠΎΡΡΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ ΡΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅ΡΠΌΠΈΠ½Π°ΡΠΎΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΉ Π²ΠΈΠ΄, Π° Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π±Π΅ΡΡΠΎΠ»ΠΊΠΎΠ²ΡΡ ΡΠ°Π½ΡΠ°Π·ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡΠ°: MOS Technology 6502 / Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄.
6.5.4 elf-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ COMMON
ELF ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ
ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π° (ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π΄Π²ΠΎΠΉΠΊΠΈ) ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°
ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ) Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
ΠΌΠ°ΡΡΠΈΠ² Π΄Π²ΠΎΠΉΠ½ΡΡ
ΡΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΡΠΎΠ²Π½Π΅Π½ ΠΏΠΎ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΠ»ΠΎΠ²Π°ΠΌ:
common dwordarray 128:4
ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 128 Π±Π°ΠΉΡ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» Π²ΡΡΠΎΠ²Π½Π΅Π½
ΠΏΠΎ 4-Π±Π°ΠΉΡΠ½ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅.
6.6 aout: ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
a.out ΠΠΈΠ½ΡΠΊΡ
Π€ΠΎΡΠΌΠ°Ρ aout Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ a.out
Π² ΡΠΎΡΠΌΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ ΠΠΈΠ½ΡΠΊΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. (ΠΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² a.out ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π² ΠΏΠ΅ΡΠ²ΡΡ
ΡΠ΅ΡΡΡΠ΅Ρ
Π±Π°ΠΉΡΠ°Ρ
ΡΠ°ΠΉΠ»Π°. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ a.out,
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ NetBSD, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠΈΠ½ΡΠΊΡ Π½Π΅ Π·Π½Π°Π΅Ρ).
Π€ΠΎΡΠΌΠ°Ρ a.out ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ .o.
ΠΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ. ΠΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²,
Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SEG ΠΈΠ»ΠΈ WRT
ΠΈ Π² Π½Π΅ΠΌ Π½Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ². ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ
ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΡΠ΅ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ .text, .data ΠΈ
.bss.
6.7 aoutb: ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
a.out NetBSD/FreeBSD/OpenBSD
Π€ΠΎΡΠΌΠ°Ρ aoutb Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ a.out
Π² ΡΠΎΡΠΌΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ BSD-ΠΊΠ»ΠΎΠ½Π°ΠΌΠΈ UNIX: NetBSD, FreeBSD ΠΈ OpenBSD.
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΡΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ aout
Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² ΠΏΠ΅ΡΠ²ΡΡ
ΡΠ΅ΡΡΡΠ΅Ρ
Π±Π°ΠΉΡΠ°Ρ
ΡΠ°ΠΉΠ»Π°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΡΠΌΠ°Ρ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ (ΠΊΠ°ΠΊ ΠΈ ΡΠΎΡΠΌΠ°Ρ elf) ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ
ΠΊΠΎΠ΄, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
BSD.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΡΠΌΠ°ΡΠ° aoutb ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
.o.
Π€ΠΎΡΠΌΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΡΠ΅ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ .text, .data ΠΈ .bss.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΠΎ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ
ΠΊΠΎΠ΄Π΅ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ WRT ΡΠ°ΠΊ ΠΆΠ΅,
ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ elf. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ
Π² .
aoutb, ΠΊΠ°ΠΊ ΠΈ elf
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ GLOBAL:
ΡΠΌ. .
6.8 as86: ΠΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
as86 ΠΠΈΠ½ΡΠΊΡ
16-Π±ΠΈΡΠ½ΡΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΠΈΠ½ΡΠΊΡ as86 ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ
Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ². Π₯ΠΎΡΡ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ ld86
Π²ΡΠ΄Π°Π΅Ρ ΡΡΠΎ-ΡΠΎ Π±Π»ΠΈΠ·ΠΊΠΎΠ΅ ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΌ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠ°ΠΌ a.out,
ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ as86
ΠΈ ld86, Π²ΡΠ΅ ΠΆΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ a.out.
NASM Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΊΠ°ΠΊ as86.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° .o.
Π€ΠΎΡΠΌΠ°Ρ as86 ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ
ΡΠΎΡΠΌΠ°Ρ (Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ NASM). ΠΠ½ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²,
Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SEG ΠΈ WRT,
ΠΈ Π² Π½Π΅ΠΌ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ². ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ
ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΡΠ΅ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ .text, .data ΠΈ
.bss.
6.9 rdf: ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅
ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
ΠΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ rdf ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ RDOFF.
RDOFF ΡΡΠΎ Β«Π΄ΠΎΠΌΠΎΡΠΎΡΠ΅Π½Π½ΡΠΉΒ» ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π²ΠΌΠ΅ΡΡΠ΅
Ρ NASM ΠΈ ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠΉ Π² ΡΠ΅Π±Π΅ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°.
RDOFF Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ
ΡΠΎΡ, ΠΊΡΠΎ ΠΏΠΈΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ
ΠΎΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΎΠ½ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ
ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ Π±ΡΡΠΎΠΊΡΠ°ΡΠΈΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ
ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΡ
ΠΈΠ² Unix NASM ΠΈ Π°ΡΡ
ΠΈΠ² DOS Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ rdoff,
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π°Π±ΠΎΡ RDOFF-ΡΡΠΈΠ»ΠΈΡ: RDF-ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ,
ΡΡΠΈΠ»ΠΈΡΠ°, Π΄Π΅Π»Π°ΡΡΠ°Ρ Π΄Π°ΠΌΠΏ RDF-ΡΠ°ΠΉΠ»Π°, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π·Π°Π³ΡΡΠΆΠ°ΡΡΠ°Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ RDF-ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ
ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ ΠΠΈΠ½ΡΠΊΡ.
Π€ΠΎΡΠΌΠ°Ρ rdf ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ
Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ .text, .data ΠΈ .bss.
8.2.2 ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΠΌΠ΅Ρ ΠΠ’Π‘, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π²Π°ΡΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π±ΡΠ΄ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅ΠΊΡΠΈΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ;
ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ..gotoff
ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ WRT. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
lea eax,
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ myvar wrt ..gotoff Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ, Π·Π°ΡΠ΅ΠΌ
ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π»ΠΈΠ½ΠΊΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΡΡΠ°Π»ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
myvar ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΠ’Π‘ ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊ
EBX, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½Π°ΡΡΠΎΡΡΠΈΠΉ
Π°Π΄ΡΠ΅Ρ myvar Π² EAX.
ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ GLOBAL Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ
ΠΈΡ
ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΎΠ½ΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡΡ
Π±ΡΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅Π΅ Π·Π°Π³ΡΡΠ·ΠΈΠ»Π°. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ
ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΎΠ±ΡΡΠ½ΡΡ
ΡΠ΅ΠΊΡΠΈΡΡ
data ΠΈ BSS,
ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΡΡΠΎ ΠΈ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ..gotoff.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΠ·-Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ Π² BSD a.out
ΡΠΎΡΠΌΠ°ΡΠ° ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎ
Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ, ΡΡΠΎ ΠΈ Π°Π΄ΡΠ΅Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°
NASM ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ x86-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². ΠΠ°Ρ ΠΎΠ΄ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅ΡΠΏΡΠ΅ΠΏΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² NASM ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΡΠ°ΠΏΠΎΠ². ΠΠ΅ΡΠ²ΡΠΉΒ β Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²ΡΠΎΡΠΎΠΉΒ β ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ°. ΠΠ° ΡΡΠ°ΠΏΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄. Π Π½ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π°Π½Π½ΡΠ΅, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΈΠΌΠ²ΠΎΠ»Ρ) ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ Π°Π΄ΡΠ΅ΡΠ°ΠΌ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°). ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌΠΈ Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ , ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ Π΄Π°ΡΡΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅.
ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π² Windows ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ alink(Π΄Π»Ρ 64-Ρ Π±ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ GoLink), Π° Π² LinuxΒ β ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ ld, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ»Ρ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° Π½ΡΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
nasm -f format filename -o output
ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π°
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ², Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π΄ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠΊ.
Π ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ () ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±Π»ΠΈΠΆΠ½ΠΈΠΉ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ²Β β . ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ Π½Π΅ Π·Π°Π²ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π»ΠΈΡΠ½ΠΈΠΉ Π±Π°ΠΉΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° . Π‘ Π²Π΅ΡΡΠΈΠΈ 0.98.09b Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠΈΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ -Ox, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΈΠ»ΠΈ Π±Π΅Π· ΡΠ°ΠΊΠΈΡ ΠΎΠΏΡΠΈΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.