IA-32 рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ 32- рдФрд░ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЗрдВрдЯреЗрд▓ IA-32 рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЬрд┐рд╕реЗ x86 рдФрд░ x86_64 рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдореИрдВ IA-32 рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╛рдж рдХрд░реВрдВрдЧрд╛:





рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рд▓реЗрдЦ "рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ Disassembler" рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрдВрдЯреЗрд▓ 64 рдФрд░ IA-32 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореИрдиреБрдЕрд▓ рдореЗрдВ ред рдпрд╣ рд▓реЗрдЦ IA-32 рдЙрдкрд╕рд░реНрдЧреЛрдВ, рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд░реБрдЭрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдЧрд╛ред

рдПрдХрд▓ рдмрд╛рдЗрдЯ рдЙрдкрд╕рд░реНрдЧ


рд▓рдЧрднрдЧ рдкрд╣рд▓реЗ рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ, рдЖрдИрдП -32 рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХрд▓-рдмрд╛рдЗрдЯ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрд╕рд░реНрдЧ


SSE рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдПрдХрд▓-рдмрд╛рдЗрдЯ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рдЕрд░реНрдерд╛рддреН 0xf2 , 0x66 , 0x66 рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ opcode рднрд╛рдЧ рдХреА рднрд╛рд╡рдирд╛ рдмрдирд╛рдиреЗ рд▓рдЧреЗред рддрдерд╛рдХрдерд┐рдд рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрд╕рд░реНрдЧ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред рдРрд╕реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╣реИрдВред

рдПрдиреНрдХреЛрдбрд┐рдВрдЧрдирд┐рд░реНрджреЗрд╢ рдореИрдиреБрдЕрд▓рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрд╕рд░реНрдЧ
0x0f 0x10MOVUPS-
0xf2 0x0f 0x10MOVSD0xf2
0xf3 0x0f 0x10MOVSS0xf3
0x66 0x0f 0x10MOVUPD0x66


рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЗрд╡рд▓ рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА opcode - 0x0f 0x10 ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдЕрд▓рдЧ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MOVSD рдПрдХ рдСрдкрд░реЗрдВрдб рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ 64 рдмрд┐рдЯреНрд╕ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ MOVUPD - 128 рдмрд┐рдЯреНрд╕ред

REX рдЙрдкрд╕рд░реНрдЧ


рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, 64-рдмрд┐рдЯ рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдФрд░ рдкрддрд╛ рдпреЛрдЧреНрдп рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред AMD рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ REX рдирд╛рдордХ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рдкрдЯрд╛рдпрд╛ рд╣реИред рдпрд╣ рдЙрдкрд╕рд░реНрдЧ рднреА рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдлреЙрд░реНрдо 0x4* ред рдЗрд╕рдХреЗ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ Mod_R/M рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рдореМрдЬреВрджрд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдСрдкрд░реЗрдВрдб рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдВрдХрдбрд╝рд╛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП REX рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИред



рдпрд╣ рдЗрд╕ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЬреБрдбрд╝реА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдПрдиреНрдХреЛрдбрд┐рдВрдЧ 0x4* рдХреЗрд╡рд▓ 64-рдмрд┐рдЯ рдореЛрдб рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЕрдиреНрдп рд╕рднреА рдореЛрдб рдореЗрдВ рдпрд╣ INC/DEC рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЗрд╕ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЧреБрдг рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдУрдкрдХреЛрдб рдХреЗ рдмрд╛рдЗрдЯ рд╕реЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ REX рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрд╕рд░реНрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрд╕ рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЛрдб рдХреЗ рдмрд╛рдЗрдЯ рдХреЗ рдмреАрдЪ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

VEX рдЙрдкрд╕рд░реНрдЧ


AVX рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде, VEX -32 рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ VEX рдирд╛рдордХ рдПрдХ рдирдпрд╛ рдЙрдкрд╕рд░реНрдЧ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдпрд╣ рдЕрдм рд╕рд┐рдВрдЧрд▓-рдмрд╛рдЗрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреЛ рдпрд╛ рддреАрди рдмрд╛рдЗрдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд░рдорд╢рдГ 0xc4 рдФрд░ 0xc5 ред



R , X , B , W рдлрд╝реАрд▓реНрдб REX рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рдорд╛рди рдЕрд░реНрде рд░рдЦрддреЗ рд╣реИрдВред рдкреАрдкреА рдХреНрд╖реЗрддреНрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп SIMD рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, b01 = 0x66 )ред рдФрд░ m-mmmm 0x0f 0x3a рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0b00011 = 0x0f 0x3a )ред рдлрд╝реАрд▓реНрдб L рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ: 0 - 128 рдмрд┐рдЯреНрд╕, 1 - 256 рдмрд┐рдЯреНрд╕ред

VEX рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:


рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рдПрдХрд▓-рдмрд╛рдЗрдЯ рдЙрдкрд╕рд░реНрдЧреЛрдВ ( 0xf0 , 0x66 , 0xf2 , 0xf2 , REX ) рдХреЗ рд╕рд╛рде VEX рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд╖рд┐рджреНрдз рд╣реИ рдФрд░ рдЕрдкрд╡рд╛рдж #UD рдУрд░ рдЬрд╛рддрд╛ рд╣реИред

EVEX рдЙрдкрд╕рд░реНрдЧ


рдЗрддрдиреА рджреЗрд░ рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдЗрдВрдЯреЗрд▓ рдиреЗ AVX3 рдпрд╛ AVX512 рдирд╛рдордХ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЙрджреНрднрд╡ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдПрдХ рдирдпрд╛ рдЙрдкрд╕рд░реНрдЧ, рдЬрд┐рд╕реЗ EVEX рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рднреА рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрдВрдЯреЗрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдпрд╣ VEX рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрдиреНрдирдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 4 рдмрд╛рдЗрдЯреНрд╕ рд▓рдВрдмрд╛ рд╣реИ рдФрд░ рдмрд╛рдЗрдЯ 0x62 рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ 64-рдмрд┐рдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдореЛрдб рдореЗрдВ 0x62 BOUND рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдзреБрдирд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдХреБрдЫ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, EVEX рдЙрдкрд╕рд░реНрдЧ рдХреА рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:


рдирд┐рд╖реНрдХрд░реНрд╖


рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЬрдЯрд┐рд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░, рдХрдорд╛рдВрдб рдХреА рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВред рдЗрдВрдЯреЗрд▓ IA-32 рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рдХреЗ 70 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм 64-рдмрд┐рдЯ рдореЛрдб рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдереАред рдЗрдВрдЯреЗрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдПрдордП рдиреЗ рдЖрдИрдП -32 рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдИрдП -32 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рд▓реЗрдЦ рдореЗрдВ рдП рдлреЙрдЧ рд╕реЗ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдорд╕реМрджреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЯрдХреБрдЖ рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

PS рд╕рднреА рдЪрд┐рддреНрд░ рдЗрдВрдЯреЗрд▓ 64 рдФрд░ IA-32 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореИрдиреБрдЕрд▓ рд╕реЗ рд╣реИрдВ ред

Source: https://habr.com/ru/post/In200598/


All Articles