void * memcpy (рд╢реВрдиреНрдп * рдЧрдВрддрд╡реНрдп, const рд╢реВрдиреНрдп * рд╕реНрд░реЛрдд, size_t рд╕рдВрдЦреНрдпрд╛);
рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдЬрдЯрд┐рд▓ рд╣реИ? рдФрд░ рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рдХрд╣рд╛рдиреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдХрд╛рд░реНрдп рдЙрдкрдХрд░рдг - Vtune XE рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреА рдЦрд┐рдбрд╝рдХреА рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдмрд╣реБрдд рдмрд╛рд░ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕рдиреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдкрд╛рдпрд╛ рдХрд┐ рд╕реНрдореГрддрд┐ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ: libgcc / [g] рд▓рд┐рдмрдХ / рдХрд░реНрдиреЗрд▓ рдореЗрдореНрдХрдкреА - XX% рдореЗрдВ рдЦрд░реНрдЪ рдХреА рдЧрдИ рдШрдбрд╝реА рдХреА рдЯрд┐рдХред
рд╢рд╛рдпрдж рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореЗрдорд╕реАрдкреА рдЕрдХреНрд╕рд░ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реА рддрд░рд╣ рдХреЗ
рдзрд╛рдЧреЗ рдЕрдХреНрд╕рд░
рдПрд▓рдХреЗрдПрдордПрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред (рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИрдВ)ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЫрдБрдЯрд╛рдИ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдБ рдореЗрдореЛрд░реА рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХрдИ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рднрд▓реЗ рд╣реА рд╣рдо рд╢реБрджреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ, рд╡рд┐рдХрд▓реНрдк рд╕рдВрднрд╡ рд╣реИрдВред (рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдореЗрдВ - рд▓рд┐рдиреБрд╕ рдЯреЙрд░реНрд╡рд╛рд▓реНрдбреНрд╕ рдФрд░ рдЙрд▓рд░рд┐рдЪ рдбреНрд░реЗрдкрд░ рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдорд╣рд╛рдХрд╛рд╡реНрдп рдмрдЧ
рдХреА рдЪрд░реНрдЪрд╛ )ред
8086 рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ, рдЕрд░реНрдерд╛рддреН, рдЪреМрдВрддреАрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореЗрдореНрдкреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдВрджрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдерд╛:
Mov [рдИ] рдПрд╕рдЖрдИ, src
Mov [рдИ] рдбреАрдЖрдИ, рдкреАрдЯреАрдЖрд░_рдбрд╕реНрдЯ
Mov [рдИ] рд╕реАрдПрдХреНрд╕, рд▓реЗрди
рд░реЗрдореНрд╕ movsb
(рд╕рднреА рдЬрд╛рдВрдЪ, рдЖрджрд┐ рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛)
рддрдм рд╕реЗ рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ? Kat рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдб рдХреЗ рддрд╣рдд рдФрд░ рдПрдХ рднреА рддрд╕реНрд╡реАрд░ рдирд╣реАрдВред
рдПрдЧреНрдиреЗрд░ рдлреЙрдЧ
рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рдо рдореЗрдВ рд╕рдмрд╕реЗ рдпрд╛рджрдЧрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдкрд╣рд▓реБрдУрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ (рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рдирд╣реАрдВ) рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИред
90 рдХреЗ рджрд╢рдХ рдХреЗ рдордзреНрдп рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирдП рдирд┐рд░реНрджреЗрд╢ рд╣рдореЗрд╢рд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЛ рдЧрддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЖрдк REP MOVS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рддреЗрдЬреА рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд SIMD рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ, рдПрдордПрдордПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдордзреНрдпрд╡рд░реНрддреА рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рдПрдХреНрд╕рдПрдордПрдоред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ YMM рдХреЛ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдПрдХреНрд╕рдПрдордПрдо рдПрдХреНрд╕рдПрдордПрдо [0-4], [src] (x4, рдкреВрд░реНрдг рдХреИрд╢ рд▓рд╛рдЗрди)
Movups [dst], рдПрдХреНрд╕рдПрдордПрдо [0-4]
рддрдм [un] рд╕рдВрд░реЗрдЦрд┐рдд рдкрдврд╝рдирд╛, [рд╕рдВрд░реЗрдЦрдг], рдФрд░ [un] рд╕рдВрд░реЗрдЦрд┐рдд рд▓реЗрдЦрди рдХреЛ рд╕реНрдореГрддрд┐ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ (SSE4.1) рдХреБрдЫ рдЗрд╕ рддрд░рд╣
mov [nt] dqa XMM2, [src + i * 2]
mov [nt] dqa XMM1, [src + i * 2 + 1]
Movdqa XMM1, XMM0
Movdqa XMM0, XMM3
palignr XMM3, XMM2, Shift
palignr XMM2, XMM1, рдкрд╛рд░реА
mov [nt] dqa [dst + i * 2], XMM2
mov [nt] dqa [dst + i * 2 + 1], XMM3
рдереЛрдбрд╝реА рдореБрд╢реНрдХрд┐рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрд░реЗрдЦрдг рдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рддрддреНрдХрд╛рд▓ рдЕрдВрддрд┐рдо рдСрдкрд░реЗрдВрдб (рд╢рд┐рдлреНрдЯ) рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдХреЛрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЦрд┐рд▓рддрд╛ рд╣реИ (glibc рджреЗрдЦреЗрдВ)ред рд╡реИрд╕реЗ, рдиреЗрд╣реНрдорд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ, рдЕрд╕рдВрддреБрд▓рд┐рдд рд╕реНрдореГрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рд╕реЗ рд▓рдбрд╝рддрд╛ рд╣реИ, рдЕрдм рдмреНрд░реЗрдХ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореБрдлрд╝реНрдд рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЗрдордХреЛрдкреА рдХреЗ рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдХреБрдЫ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдкрд░ рдзреАрдорд╛ред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдХрдИ рд╡рд┐рдХрд▓реНрдк, рдФрд░ рдХреЛрдб рдЬреЛ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ,
рдиреЗ рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдХреЛ рд╢рд╛рдирджрд╛рд░
рдмрдирд╛ рджрд┐рдпрд╛ ред рд╕рдВрднрд╡рддрдГ CLR рдФрд░ JVM рд╡рд╛рддрд╛рд╡рд░рдг рднреА рдордХреНрдЦреА рдкрд░ System.arraycopy рдХреЗ рдкреНрд░рднрд╛рд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЪреБрдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред Glibc рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рддрд░рд╣ рдХрд╛ SSE рдХреЛрдб рдХреЗрд╡рд▓ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдлреЗрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЖрдкрдХреЛ SIMD рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХреНрдпрд╛, рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреНрдпрд╛ред
рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЕрдЪрд╛рдирдХ, рдПрдХ рдмрд╛рд░, рдФрд░ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд▓реМрдЯ рдЖрдпрд╛ред (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрд╡реАрдПрдХреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ?) рдирд╡реАрдирддрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕рд┐рдХ рдореЗрдорд╕реАрдкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд┐рд░ рд╕реЗ рд╕рдмрд╕реЗ рддреЗрдЬ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ 34 рд╕рд╛рд▓ рддрдХ рджреЗрдЦрд░реЗрдЦ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЬрдпреА рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ MMX, SSE2, SSE3, SSE4.1 рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирдХрд▓ рдХреА рд╣реИред
рд╡реИрд╕реЗ, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рджрд░реНрд╢рди (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЧреИрд░-рдЕрд╕реНрдерд╛рдпреА рдкрдврд╝рдиреЗ рдФрд░ рд▓реЗрдЦрди, рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдЧрддрд┐ рд╕реАрдорд╛, рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХреИрд╢ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рднрд╛рд╡ рдФрд░ DTBB рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ред
1. рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдирд╛ рдЕрдм рдмреЗрдХрд╛рд░ рд╣реИ, рдПрд╕рдЯреАрдбреА :: рдореЗрдорд╕реАрдкреА рд░реЗрдк рдореЛрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рднрд╛рд╡реА рд░рд╣реЗрдЧрд╛ред
2. рдкреБрд░рд╛рдиреЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдкреГрд╖реНрдарднреВрдорд┐ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдФрд░ рдПрдЧреНрдирд░ рдлреЙрдЧ рдХреЛ рджреЗрдЦреЗрдВред
3. рдПрдЯрдо рдкрд░, рдЕрдиреНрдп X86 рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдФрд░ рдкреБрд░рд╛рдиреЗ (Nezhemam рд╕реЗ рдкрд╣рд▓реЗ) рдкреНрд░реЛрд╕реЗрд╕рд░, рдкреНрд░рддрд┐рдирд┐рдзрд┐ Mov рдЕрднреА рднреА рдзреАрдорд╛ рд╣реИред
рдпреБрдкреАрдбреА:
рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдЗрдХреНрд░реЛрдмреЗрдирдорд╛рд░реНрдХ рдХреЛ рдПрдХ рд▓реВрдк рдореЗрдВ рд╕рднреА рд╕рдВрд░реЗрдЦрдг рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдХрд┐рд▓реЛ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ред
рдЕрдВрдХ - рдХрд┐рддрдиреА рдмрд╛рд░ рд╕рдмрд╕реЗ рдЙрдиреНрдирдд SSE4.1 рдХреЛрдб std рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реИ :: repc movs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдмреБрд▓рдбреЛрдЬрд░ -
1.22x (рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП
stepmex рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)
рдкреЗрд░реАрдПрди - 1.6x
рдиреЗрд╣реЗрд▓рдо - 1.5x
рд╕реИрдВрдбреА рдмреНрд░рд┐рдЬ - 1.008x
рдпрд╣ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИ, рдХрдИ рдЕрдиреНрдп рдХрд╛рд░рдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИред