рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рдордзреНрдпреЗ рд░рд╕реНрдЯ рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдЬреЛрдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдореБрджреНрджреНрдпрд╛рд╡рд░ рдЪрд░реНрдЪрд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡

рдирд┐рдХ рдбрд┐рд╕реЕрдЧреНрдирд┐рдпрд░ (рдирд┐рдХ рдбреЗрд╕реЙрд▓рдирд┐рдпрд░реНрд╕), рдЬреЛ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Google рд╡рд░ рдХрд╛рдо рдХрд░рддреЛ рд╕рдорд░реНрдерди рдХреНрд▓реЕрдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд╛рдкрд░реВрди рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рддреЗ рджреЗрдЦреАрд▓ рдорджрдд рдХрд░рдгреЗ рд░рд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░рдордзреАрд▓ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛, рд╕реБрдЪрд╡рд┐рд▓реЗ рдкрд░рд┐рд╖рджреЗрдд рдареЗрд╡рд╛ рд▓рд┐рдирдХреНрд╕ рдкреНрд▓рдВрдмрд░реНрд╕ рдХреЙрдиреНрдлрд░рдиреНрд╕ 2020 рд░рд╕реНрдЯрдордзреНрдпреЗ рдХрд░реНрдирд▓ рдШрдЯрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЪрд░реНрдЪрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рддреНрд░. рдирд┐рдХ LLVM рд▓рд╛ рд╕рдорд░реНрдкрд┐рдд рдорд╛рдпрдХреНрд░реЛ-рдХреЙрдиреНрдлрд░рдиреНрд╕ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдд рдЖрд╣реЗ, рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЖрд╣реЗ рдХреА рдХрд░реНрдирд▓рдордзреНрдпреЗ рд░рд╕реНрдЯ рд╕рдкреЛрд░реНрдЯрдЪреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдп рдПрдХрддреНрд░реАрдХрд░рдгрд╛рдЪреНрдпрд╛ рддрд╛рдВрддреНрд░рд┐рдХ рдмрд╛рдмреАрдВрд╡рд░ рдЪрд░реНрдЪрд╛ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╣реЛрдИрд▓ (рддреНрдпрд╛рдиреЗ KBuild рд╕рд╛рдареА рдЖрдзреАрдЪ рдХрд╛рд░реНрдпрд░рдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ) рдЖрдгрд┐ рдЕрд╕реЗ рд╕рдорд░реНрдерди рдХрд░рд╛рд╡реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ. рдЕрдЬрд┐рдмрд╛рдд рдЬреЛрдбрд▓реЗ рдЬрд╛рд╡реЗ рдЖрдгрд┐ рд░рд╕реНрдЯрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╡рд░ рдХреЛрдгрддреЗ рдирд┐рд░реНрдмрдВрдз рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рдЬрд╛рд╡реЗрдд.

рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдорд┐рдЯ рдЖрдгрд┐ рдПрдореНрдмреЗрдбреЗрдб рд▓рд┐рдирдХреНрд╕ рдХреЙрдиреНрдлрд░рдиреНрд╕рдордзреАрд▓ рдЕрд▓реАрдХрдбреАрд▓ рдЪрд░реНрдЪреЗрдд рд▓рд┐рдирд╕ рдЯреЛрд░рд╡рд╛рд▓реНрдбреНрд╕ рддреЗ рдирд╛рдХрд╛рд░рд▓реЗ рдирд╛рд╣реА рд░рд╕реНрдЯ рд╕рд╛рд░рдЦреНрдпрд╛ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдиреЙрди-рдХреЛрд░ рдХрд░реНрдирд▓ рдЙрдкрдкреНрд░рдгрд╛рд▓реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕) рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рдмрдВрдзрдирд╛рдВрдЪрд╛ рдЙрджрдп. рд░рд╕реНрдЯрдордзреНрдпреЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдХрдореАрдд рдХрдореА рдкреНрд░рдпрддреНрдирд╛рдд рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрдгрд┐ рдЪрд╛рдВрдЧрд▓реЗ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓, рдлреНрд░реАрд┐рдВрдЧрдирдВрддрд░ рдореЗрдорд░реА рдНрдХреНрд╕реЗрд╕, рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдбреАрд░реЗрдлрд░реЗрдиреНрд╕реЗрд╕ рдЖрдгрд┐ рдмрдлрд░ рдУрд╡реНрд╣рд░рд░рдиреНрд╕ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рдореБрдХреНрдд. рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рдЕрдиреЗрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗрдд:

  • "рдлрд┐рд╢ рдЗрди рдЕ рдмреЕрд░рд▓" рдХрдВрдкрдиреАрдЪреЗ рд╡рд┐рдХрд╕рдХ рддрдпрд╛рд░ рд░рд╕реНрдЯ рднрд╛рд╖реЗрдд рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рд╕рд╛рдареА рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓реНрд╕ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЯреВрд▓рдХрд┐рдЯ, рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдгрд┐ рдХрд░реНрдирд▓ рд╕рдВрд░рдЪрдирд╛рдВрд╡рд░ рдЕрдореВрд░реНрдд рд╕реНрддрд░рд╛рдВрдЪрд╛ рд╕рдВрдЪ рд╡рд╛рдкрд░реВрди. рдпреБрдЯрд┐рд▓рд┐рдЯреА рд╡рд╛рдкрд░реВрди рд╡рд┐рджреНрдпрдорд╛рди рдХрд░реНрдирд▓ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реНрд╕рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрддрд░ рдЖрдкреЛрдЖрдк рддрдпрд╛рд░ рд╣реЛрддрд╛рдд bingen. рдерд░ рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓реЕрдВрдЧрдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЗрдВрдЯрд░рд▓реЗрдЕрд░реНрд╕ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЕрд╕реЗрдВрдмрд▓ рдХреЗрд▓реЗрд▓реЗ рдореЙрдбреНрдпреВрд▓ рд╕реНрдЯреЕрдЯрд┐рдХрд▓рд┐рдм рдкреЕрдХреЗрдЬ рд╡рд╛рдкрд░рддрд╛рдд.
  • рд╣рд╛рдБрдЧрдХрд╛рдБрдЧрдЪреНрдпрд╛ рдЪреАрдиреА рд╡рд┐рджреНрдпрд╛рдкреАрдард╛рддреАрд▓ рд╕рдВрд╢реЛрдзрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рд░рд╕реНрдЯрдордзреНрдпреЗ рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдореНрд╕ рдЖрдгрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдСрдл рдерд┐рдВрдЧреНрдЬ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕рд╕рд╛рдареА рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдХрд▓реНрдк, рдЬреЛ рдХрд░реНрдирд▓ рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реНрд╕рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрддрд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд╛рдЗрдВрдбрдЬреЗрдирдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЛ. рдлреНрд░реЗрдорд╡рд░реНрдХ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд░реНрдирд▓рдордзреНрдпреЗ рдмрджрд▓ рди рдХрд░рддрд╛ рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ - рдХрд░реНрдирд▓рдордзреАрд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░реНрд╕рд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд▓рдЧрд╛рд╡ рдкрд╛рддрд│реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рд╡рд╛рдкрд░реВрди, рд╕рдВрдХрд▓рдирд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рд╕рдорд╕реНрдпрд╛ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ. рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рд▓реЗ рдЬрд╛рддреЗ рдХреА рдпреЛрдЧреНрдп рдСрдбрд┐рдЯ рди рдХрд░рддрд╛ рдШрд╛рдИрдШрд╛рдИрдд рдорд╛рд▓рдХреА рдЪрд╛рд▓рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдЙрдкрдХрд░рдг рдЙрддреНрдкрд╛рджрдХрд╛рдВрдХрдбреВрди рдЕрд╢рд╛ рдкрджреНрдзрддреАрдЪреА рдорд╛рдЧрдгреА рдЕрд╕реВ рд╢рдХрддреЗ.
  • рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд┐рдХрд╕рдХ C2Rust рд╕реА рдХреЛрдб рд░рд╕реНрдЯрд╡рд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкрд╛рд░ рдкрд╛рдбрдгреЗ рдХрдореАрддрдХрдореА рдореЕрдиреНрдпреБрдЕрд▓ рд╕рдВрдкрд╛рджрдирд╛рдВрд╕рд╣ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓реНрд╕ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдкреНрд░рдпреЛрдЧ. рд▓рдХреНрд╖рд╛рдд рдШреЗрддрд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгрдЬреЗ C2Rust рдордзреНрдпреЗ рдЕрджреНрдпрд╛рдк рд╕рдорд░реНрдерд┐рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ GCC рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдХреЛрдбрдЪреНрдпрд╛ рдХрд░реНрдирд▓рдЪреНрдпрд╛ рдЕрдиреЗрдХ рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░. рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, C2Rust рдиреЗ GCC рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрдирд▓рд╛рдЗрди, рдХреЛрд▓реНрдб, рдЙрдкрдирд╛рд╡, рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рдЖрдгрд┐ рд╕реЗрдХреНрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрд▓реА рдЖрд╣реЗ, рддрд╕реЗрдЪ рдЗрдирд▓рд╛рдЗрди рдЕрд╕реЗрдВрдмрд▓рд░рдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рдВрд░реЗрдЦрд┐рдд рдЖрдгрд┐ рдкреЕрдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрд░рдЪрдирд╛рдВрд╕рд╣ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, xregs_state) . рдореЕрдиреНрдпреБрдЕрд▓ рдХрд╛рдорд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдордзреНрдпреЗ рдЧреИрд░-рдХреНрд╖реБрд▓реНрд▓рдХ C рдореЕрдХреНрд░реЛрдЪреЗ рд░рд╕реНрдЯ рдореЕрдХреНрд░реЛрдордзреНрдпреЗ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЕрд╕рдорд░реНрдерддрд╛ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд░ рдкреБрдиреНрд╣рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдХрд╛рд░рдг C2Rust C рдкреНрд░рдХрд╛рд░рд╛рдВрдирд╛ libc рдкреЕрдХреЗрдЬрдордзреАрд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрдордзреНрдпреЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддреЗ, рдкрд░рдВрддреБ рд╣реЗ рдкреЕрдХреЗрдЬ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛