X32 ABI рдорд┐рдердХреЛрдВ рдХрд╛ рд╡рд┐рдореЛрдЪрди

рд╢рд╛рдпрдж рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреЗ рдПрдХ рдлреНрд░реАрдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХреНрд╕ 32 рдПрдмреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ x32 ABI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ 32-рдмрд┐рдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП 64-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдкреВрд░рд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ 4 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ, рдЖрдк рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рднрд░рддреЗ рд╣реИрдВред рдЖрдк рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ? рдпрджрд┐ рдЪрд┐рддреНрд░рдг рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
32 рдмрд┐рдЯреНрд╕: рдкреЙрдЗрдВрдЯрд░ + рдПрд▓реАрдореЗрдВрдЯ рдХрд╛рдЙрдВрдЯрд░ + рдПрди рдкреВрд░реНрдгрд╛рдВрдХ = рдПрди + 2 32-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛
64 рдмрд┐рдЯреНрд╕: рдкреЙрдЗрдВрдЯрд░ + рдПрд▓реАрдореЗрдВрдЯ рдХрд╛рдЙрдВрдЯрд░ + рдПрди рдкреВрд░реНрдгрд╛рдВрдХ = рдПрди + 2 64-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ = 2 рдПрди + 4 32-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛
рддреЛ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдиреЗ рд╕реЛрдЪрд╛: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк 64-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ 32-рдмрд┐рдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ? X86-64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ CISC рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдФрд░ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣рдорд╛рд░рд╛ рд╕рд░рдгреА 2N + 4 рдХреЗ рдмрдЬрд╛рдп 2N + 3 рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдЧрд╛ред рдмрдЪрдд рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ, рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ рдХреЛрдб рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдХреНрд╕рд░ рджрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╢реЙрд░реНрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрднрд╡рддрдГ 50% рддрдХ рдореЗрдореЛрд░реА (рдЖрджрд░реНрд╢ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреА рдмрдЪрдд рд╣реЛрдЧреАред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
* PHP рдореЗрдВ рд╕рд░рдгрд┐рдпрд╛рдБ (рдФрд░ рдорд╛рди) рдХрд┐рддрдиреЗ рдмрдбрд╝реЗ рд╣реИрдВ? (рд╕рдВрдХреЗрдд: рдмрд╣реБрдд рдмрдбрд╝рд╛)
* PHP рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рдпрд╣ 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛ рдХрд┐ рдХреЛрдИ рдореБрдлреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред



рдбрд┐рдмрдВрдХрд┐рдВрдЧ x32 рдорд┐рдердХ рд▓реЗрдЦ рдЕрдиреБрд╡рд╛рдж


рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ x32 рдПрдмреАрдЖрдИ рд▓реЗрдЦ рдкрд░ рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдереАрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдмрд╕ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЖрднрд╛рд╕ рд╣реЛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдЗрд░реНрджрдЧрд┐рд░реНрдж рдорд╛рд▓ рдХреА рдЦреЗрддреА рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рдереАред рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ: "рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡реЗ рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдореИрдВ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВ," рдЬрдмрдХрд┐ рддрдХрдиреАрдХреА рд╕рд╛рдХреНрд╖рд░рддрд╛ рдмрд╣реБрдд рд▓рд╛рдн рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рддреЛ рдЗрд╕реА рднрд╛рд╡рдирд╛ рд╕реЗ рдХрд┐ рдореИрдВ рд▓рдЧрднрдЧ рдЪрд╛рд░ рд╕рд╛рд▓ рдкрд╣рд▓реЗ ccache рд╕реЗ рдЧреБрдЬрд░рддрд╛ рдерд╛ (рд╡рд╛рд╣, рдореЗрд░рд╛ рдмреНрд▓реЙрдЧ рдЗрддрдиреЗ рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдЕрдЪреНрдЫрд╛, рдХреНрдпрд╛ рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ?), рдореИрдВ рдЗрд╕ x32I рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд┐рдердХреЛрдВ рдФрд░ рднреНрд░рд╛рдВрддрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред ред

x32 ABI рдХреЛрдб рддреЗрдЬреА рд╕реЗ

рдмрд┐рд▓рдХреБрд▓ рдареАрдХ рдирд╣реАрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ ABI рдХреЛ рдмрдирд╛рдпрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рддреЗрдЬрд╝ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ, рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдЧрд▓реЗ рдХреБрдЫ рд╡рд╛рдХреНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдкрд╖реНрдЯ рд╣реЛрдВрдЧреЗред

рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдк рддреЗрдЬ рдереЗ, рдЕрдВрддрд░ рдореМрд▓рд┐рдХ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдВрдЯреЗрд▓ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗрд╡рд▓ рдореВрд▓ x86 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрддрд░ рджрд┐рдЦрд╛рддреА рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ x86-64 рд╕реЗ рднреА рдмрджрддрд░ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рд╕реЗ рдирд╣реАрдВ, рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕реЗ рдкрд░рд┐рдгрд╛рдо рддреАрди рдмрдХреНрд╕реЗ рд╕реЗ рдЭреВрда рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

x32 ABI рдХреЛрдб рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИ

рдирдпрд╛ рдПрдмреАрдЖрдИ рдХрдо рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреИрд╢ рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдо рдлрд╛рдЗрд▓реЗрдВ рднреА рд╣реЛрдВрдЧреАред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд╕рддреНрдп рд╣реИред рдЙрддреНрдкрдиреНрди рдХреЛрдб, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, x86-64 рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддрдерд╛рдХрдерд┐рдд рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрд╕ рдмрджрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ (рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░) рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдЖрдХрд╛рд░ (рд▓реЗрдХрд┐рди рдкрд░рд┐рд╡рд░реНрддрди) рдХреЗ рд▓рд┐рдП рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдЖрдХрд╛рд░)ред

рдпрд╣ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЫреЛрдЯреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдбреЗрдЯрд╛ рдХреИрд╢ рдореЗрдВ рдЕрдзрд┐рдХ рдлрд┐рдЯ рд╣реЛрдВрдЧреЗ (рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢ рдХреИрд╢ рдореЗрдВ рдирд╣реАрдВ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рд▓рдЧрднрдЧред CISC рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдЫреЛрдЯреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг? рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдЙрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХреИрд╢ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреИрд╢ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк Arnaldo (acme) рд╕реЗ рджреЗрд╡- рдЙрдкрдпреЛрдЧ / рдмреМрдиреЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, pahole рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдкрдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдореЗрдореЛрд░реА рдореЗрдВ рдХреИрд╕реЗ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рдПрдВрдЧреАред

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

рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рдЖрдк рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд▓рд╛рдЗрдб 24 рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ x32 ABI рдХреЛрдб рдореВрд▓ x86 рдХреЛрдб рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡реЗ x86-64 рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ VCISC (рд▓рдЧрднрдЧ рдкреНрд░рддрд┐ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ CISC рд╕реЗ 64-рдмрд┐рдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ)), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реИ рдПрдХ рд╣реА рдХреЛрдбред

рдордЬреЗ рдХреЗ рд▓рд┐рдП libc.so.6 рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рд░реВрдмреА рдПрд▓реНрдл рд╕реБрдЗрдЯ рд╕реЗ rbelf-size рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

exec data rodata relro bss overhead allocated filename 1239436 7456 341974 13056 17784 94924 1714630 /lib/libc.so.6 1259721 4560 316187 6896 12884 87782 1688030 x32/libc.so.6 


рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб x32 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдФрд░ рднреА рдмрдбрд╝рд╛ рд╣реИред рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ (рдбреЗрдЯрд╛, рд░реЙрдбрд╛рдЯрд╛, рд░рд┐рд▓реЗ рдФрд░ рдмреАрдПрд╕рдПрд╕) рдореЗрдВ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХреЗрдд рдЕрдм рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИрдВред рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ: "рдПрдХ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?" рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╡рд╛рд▓ рдмрдВрдж рд╡рд┐рд╖рдп рд╣реИред рднрд▓реЗ рд╣реА рд╕рдВрдХреЗрдд рдЫреЛрдЯреЗ рд╣реЛрдВ, рдЕрдВрддрд░ рдЙрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЗ рдкрд╛рд╕ 30 KiB рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдмрдЪрдд рд╣реЛрдЧреА, рдЬреЛ рдореЗрдореЛрд░реА рдореИрдкрд┐рдВрдЧ рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдбреЗрдЯрд╛ рдореЗрдВ рдХрдореА рдЙрдкрдпреЛрдЧреА рд╣реИ

рдЦреИрд░, рд╣рд╛рдВ, рдпрд╣ рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рд╣реИред рдмреЗрд╢рдХ, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ x32 рдХреЗ рд╕рд╛рде рдЫреЛрдЯреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдВрдд рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рд╢рд╛рдпрдж рдпрд╣ рд╣реЛрдЧрд╛: "рдХреНрдпрд╛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ?" рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЬрд╣рд╛рдВ рдЕрдВрддрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд╛рди рдХрд╛ рд▓рдЧрднрдЧ 20% рд╣реИред рдФрд░ рдпрд╣ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ! рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдмрд╣реБрдд рдЫреЛрдЯреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдЕрдм рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдЖрдк рдХреБрдЫ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рди рдкрд░ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рдВ, рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рд╕реА ++ рдФрд░ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рд╡рд╛рд▓реА рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрдо рдХрдард┐рдирд╛рдИ рд╣реЛрдЧреА, рдЦрд╛рд╕рдХрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп, рдХрдо рдХрд┐рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╣рдо рдЗрд╕реЗ рдмрдбрд╝реЗ рдЦрд┐рдВрдЪрд╛рд╡ рдХреЗ рд╕рд╛рде рдореБрдЦрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдирдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдХрдо рд╕реЗ рдХрдо 8 рдмрд╛рдЗрдЯреНрд╕ (64 рдмрд┐рдЯреНрд╕) рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ SIMD рдЕрдиреБрджреЗрд╢ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ 16 рдмрд╛рдЗрдЯреНрд╕ (128 рдмрд┐рдЯреНрд╕) рдореЗрдВ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ x32 рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ "рдХреНрд▓реАрди" x32 рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ рд╡рд╣ рддреАрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИ: x86, x86-64 рдФрд░ x32ред

рдпрд╣ 4 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╢рд╛рдпрдж рд╕рдЪ рд╣реИред рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдХреЗрдд рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ? рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ! рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдпрд╛ рдПрдмреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ "рднрд╛рд░реА" рдХрдо рд╣реИрдВред

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, 4 рдЬреАрдмреА рд╕реЗ рдХрдо рдореЗрдореЛрд░реА рд╡рд╛рд▓реЗ рдкреВрд░реНрдг 64-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП 2 рдЕрд▓рдЧ, рд╡рд┐рдкрд░реАрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ:


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ 64-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ

(рдиреЛрдЯ рд▓реЗрди: рд▓реЗрдЦрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ 64-рдмрд┐рдЯ рд▓рдВрдмрд╛)
рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдПрдмреАрдЖрдИ рдмрдирд╛рдирд╛ рд╣реИред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд▓реЛрдЧ рдЕрднреА рднреА рд▓рдВрдмреЗ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ , рдмрд┐рдирд╛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЫреЛрдЯреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рднреА рд╡реЗ рдмрдбрд╝реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ , рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдВрднрд╡рддрдГ рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ int рдХреЗ рдкрд░реНрдпрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рднреА рдЬрд╣рд╛рдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ 32-рдмрд┐рдЯ рд╣реИ рдФрд░ int 16bit (рд╣реИрд▓реЛ MS-DOS!) рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╣реИ - stdint.h рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдХрд┐ uint32_t рдФрд░ int16_t ред рдЗрд╕рд▓рд┐рдП рдЖрдк рд╣рдореЗрд╢рд╛ рдЙрд╕ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЙрдореНрдореАрдж рд╣реИред рдпрд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдлрдПрдлрдЖрдИ рдФрд░ рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХрдИ рдХреЛрдбрд╛рдВрддрд░рдХ рдЖрд╡реЗрд╖рдг рдирд╣реАрдВ рд╣реИрдВ

рдпрд╣ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж рдХрдИ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдереА рдХрд┐ рдирдП рдПрдмреАрдЖрдИ рдореЗрдВ рд╣рдо рдЬреНрдпрд╛рджрд╛рддрд░ рдЕрд╕реЗрдВрдмрд▓ рдЖрд╡реЗрд╖рдг рдЦреЛ рджреЗрдВрдЧреЗред рдпрд╣ рдХрдерди рд╕рддреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдЗрддрдиреЗ рдХрдо рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рддрдирд╛ рдЖрдк рд╕реЛрдЪрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рднреА рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рдЖрд╡реЗрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SIMD рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рд╕рдВрдХрд▓рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ)ред

рд░реВрдмреА рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдЖрд╡реЗрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рднреА рд╣реИ, рдЬрд╣рд╛рдВ рд░реВрдмреА 1.9 x32 рдкрд░ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд░реВрдмреА 1.8 рдХреЗ рд╕рд╛рде , рд╕реНрдерд┐рддрд┐ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд░рдирдЧреЗрдЯ рдкрд░ рд╕реЗрдЧрдлреЙрд▓реНрдЯреНрд╕ рдлреЗрдВрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд╕реЗрдВрдмрд▓рд░ рдЖрд╡реЗрд╖рдг рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдХреЗрд╡рд▓ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрддрдирд╛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдПрдЪрдЬреЗ рд▓реВ, рдЬреЛ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдирдП рдПрдмреАрдЖрдИ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЛрд░реНрдЯ рд╣реИред

x32 рдПрдмреАрдЖрдИ x86 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рдпрджрд┐ рдЕрднреА рдирд╣реАрдВ, рддреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрди рдЧрд▓рдд рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдкрддреНрдерд░ рдорд╛рд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░рд╕реНрддреБрддрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдХрд░реЗрдЧреАред рд╕реНрд▓рд╛рдЗрдб 22 рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреА рд╣реИ рдХрд┐ рдирдпрд╛ ABI рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ ABI рдХрдо рд╕реЗ рдХрдо x86 рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ off_t рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП 32-рдмрд┐рдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред рдлрд┐рд░ рд╕реЗ, рдореИрдВрдиреЗ рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЫреБрдЖ рдерд╛ ред

рдпрд╣ 64-рдмрд┐рдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╣реИ

рдирд╣реАрдВ, рдлрд┐рд░ рд╕реЗ рд╣рдо рд╕реНрд▓рд╛рдЗрдб рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрд▓рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 10. рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ x86-64 рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП! рдЕрдЪреНрдЫрд╛, рдЕрдм рдЖрдк рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдкреЛрд░реНрдЯрд┐рдВрдЧ рддреБрдЪреНрдЫ рд╣реЛрдЧрд╛, рдЖрдкрдХреЛ рдмрд╕ рдХреЛрдбрд╛рдВрддрд░рдХ рдЖрд╡реЗрд╖рдг рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

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

рдкреНрд░реЛрд╕реЗрд╕рд░ 64-рдмрд┐рдЯ рд╕реЗ рдмреЗрд╣рддрд░ 32-рдмрд┐рдЯ рдирд┐рд░реНрджреЗрд╢ рдХрд░рддрд╛ рд╣реИ

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрдВрдЯреЗрд▓ рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ 32-рдмрд┐рдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдЯрдо рд╣реИред рдореИрдВ рдмреЛрд▓реА: "64-рдмрд┐рдЯ IMUL рдСрдкрд░реЗрд╢рди рдкрд░ рд╡рд┐рд▓рдВрдм рдПрдЯрдо рдкрд░ 32-рдмрд┐рдЯ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреЛрдЧреБрдирд╛ рд╣реИред"

рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ IMUL рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рд╕рд╛рдЗрди рдЧреБрдгрд╛ рдСрдкрд░реЗрд╢рди рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рд╡реНрдпрд░реНрде рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдХреЗрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдЖрдк рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдЙрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдПрдЯрдо) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реА рджреЗрд░реА рд╣реЛрддреА рд╣реИ рдЬрдм рд▓реЛрдЧ 32-рдмрд┐рдЯ рдХреЗ рдмрдЬрд╛рдп 64-рдмрд┐рдЯ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдФрд░ рдЖрдкрдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдирдпрд╛ ABI рдмрдирд╛рдирд╛ рд╣реИ, рдЬрд╣рд╛рдБ 64-рдмрд┐рдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рдФрд░ рдпрд╣ рд╕рдм, рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕рд┐рд░реНрдл рддрдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рд╢рд╛рдпрдж рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдПрдЯрдо рдФрд░ IMUL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдЦреБрд╢ рдХрд░реЗрдЧреА, рдЬреЛ рдХреЗрд╡рд▓ рд╕рддрд╣реА рд░реВрдк рд╕реЗ рдирдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред




рдпреБрдкреАрдбреАред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл Gentoo x32 ABI RC рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ PHP рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд░реВрдмреА рдХреА рддрд░рд╣, рдпрд╣ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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


All Articles