JIT рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде Qemu.js: рдЖрдк рдЕрднреА рднреА рдХреАрдорд╛ рдХреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рдШреБрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ

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

  • рдЦреБрд▓рд╛ рд╕реНрддреНрд░реЛрдд
  • рдХрд░реНрдиреЗрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
  • рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
  • рдореЗрдЬрдмрд╛рди рдФрд░ рдЕрддрд┐рдерд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреЛрдиреЛрдВ рдХреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди

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

рдФрд░ рдЕрдм, рдореЗрд░реЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдХреНрдпреВрдореВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рджреЛ рд╕рд╛рд▓ рддрдХ рдЗрддреНрдореАрдирд╛рди рд╕реЗ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд╛рдордиреЗ рдЖрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрд▓рд┐рдмреНрд░реА рдУрдПрд╕ред

рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреНрдпрд╛ рд╣реИ?

рдЖрдЬрдХрд▓, рдХрдИ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдХреБрдЫ, рдЬреИрд╕реЗ рдЯрд╛рдЗрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдореВрд▓ рд░реВрдк рд╕реЗ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рдереЗред рд╕рд╛рде рд╣реА, рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдореМрдЬреВрджрд╛ рд╕реА рдпрд╛ рд╕реА++ рдХреЛрдб рд▓реЗрдиреЗ рдФрд░ рдЙрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░-рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдкрд░ рдпрд╣ рдкреГрд╖реНрда рд╣рдордиреЗ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдХрдИ рдкреЛрд░реНрдЯ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ: рдпрд╣рд╛рдВрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк PyPy рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рд╡реИрд╕реЗ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА JIT рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ - рдЗрд╕рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╕рд╣рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЙрд╕реА рдкреГрд╖реНрда рдкрд░ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХрд╣рддрд╛ рд╣реИ "рдПрдорд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдкреЛрд░реНрдЯреЗрдмрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП C/C++ рдХреЛрдб"ред рдЕрд░реНрдерд╛рддреН, рдРрд╕реЗ рдХрдИ рдСрдкрд░реЗрд╢рди рд╣реИрдВ рдЬреЛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ x86 рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рддрдХ рдЕрд╕рдВрд░реЗрдЦрд┐рдд рдкрд╣реБрдВрдЪ, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдХреБрдЫ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ , Qemu рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдФрд░, рдореИрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ - рдЗрд╕реЗ рд▓реЗрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ, рдлрд┐рд░ JIT рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░реЗрдВ - рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛! рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реИ рдорд╛рдорд▓рд╛...

рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕

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

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

рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреЗрд╡рд▓ JS рдХреЗ рд╕рд╛рде libffi рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд▓рд┐рдЦрдиреЗ рдФрд░ рдорд╛рдирдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рдкрдбрд╝ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдКрдВ рддрд╛рдХрд┐ рд╡реЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ - рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, "рдХреНрдпрд╛ рдХрд╛рд░реНрдп рдЗрддрдиреЗ рдЬрдЯрд┐рд▓ рд╣реИрдВ" рдХреНрдпрд╛ рд╣рдо рдЗрддрдиреЗ рдореВрд░реНрдЦ рд╣реИрдВ? рдореБрдЭреЗ libffi рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП - рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдХреЗ рдкрд╛рд╕ рдЗрдирд▓рд╛рдЗрди рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рд╛рдБ - рдареАрдХ рд╣реИ, рдЬреЛ рднреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓рд░), рдФрд░ рдлреНрд▓рд╛рдИ рдкрд░ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЛрдиреЛрдВ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреБрдЫ рд╕рдордп рддрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдирд┐рд░реНрднрд░ рд▓рд┐рдмрдлрд╝реА рдЕрдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдорд┐рд▓реЗ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЪрд▓рд╛рдпрд╛ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рд░рд╣рд╛ред рдореЗрд░реА рдкреНрд░рддрд┐рднрд╛ рд╕реЗ рд╕реНрддрдмреНрдз - рдХреЛрдИ рдордЬрд╝рд╛рдХ рдирд╣реАрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ - рдореИрдВ, рдЕрднреА рднреА рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдЧрдпрд╛, рдпрд╣ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЦреЛрджрдирд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рджреВрд╕рд░реА рдмрд╛рд░ рдкрд╛рдЧрд▓ рд╣реЛ рдЧрдпрд╛ - рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рдо рдерд╛ рдЬреЛ рдореЗрд░рд╛ рдХрд╛рдо рдерд╛ ffi_call - рдЗрд╕рдиреЗ рдПрдХ рд╕рдлрд▓ рдХреЙрд▓ рдХреА рд╕реВрдЪрдирд╛ рджреАред рдХреЛрдИ рдХреЙрд▓ рд╣реА рдирд╣реАрдВ рдереА. рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛, рдЬрд┐рд╕рдиреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реБрдзрд╛рд░ рджрд┐рдпрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рдУрд▓рдВрдкрд┐рдпрд╛рдб рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП a == b рдФрд░ рдХреИрд╕реЗ рднреА a - b < EPS - рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ 0 1/3 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ libffi рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдВ, рдЬреЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде glib рд╣реИ рд╕рдВрдХрд▓рд┐рдд - рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдореИрдВ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХрдВрдкрд╛рдЗрд▓рд░ рдиреЗ рдЕрдВрддрд┐рдо рдХреЛрдб рдореЗрдВ рд▓рд┐рдмрдлрд╝реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

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

рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕

рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдереА, рдФрд░ рдХреЛрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдмреИрд╕рд╛рдЦреА рдбрд╛рд▓рдиреЗ рд╕реЗ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдирд┐рд╖реНрдХрд░реНрд╖: рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдмреИрд╕рд╛рдЦреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕рдВрд╕реНрдХрд░рдг 2.4.1, рдЬреЛ рдЙрд╕ рд╕рдордп рддрд╛рдЬрд╝рд╛ рдерд╛, рд▓рд┐рдпрд╛ рдЧрдпрд╛ (2.5.0 рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐, рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдРрд╕реЗ рдмрдЧ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЕрднреА рддрдХ рдкрдХрдбрд╝реЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВ, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реНрдпрд╛рдкреНрдд рдмрдЧ рд╣реИрдВ) ), рдФрд░ рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдерд╛ thread-posix.c. рдареАрдХ рд╣реИ, рдпрд╣ рдЙрддрдирд╛ рд╣реА рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ: рдпрджрд┐ рдХрд┐рд╕реА рдиреЗ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддреБрд░рдВрдд рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ abort() - рдмреЗрд╢рдХ, рдЗрд╕рд╕реЗ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдПрдХ рд╕рд╛рде рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЪреБрдкрдЪрд╛рдк рдЕрд╕рдВрдЧрдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдерд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреЗрдПрд╕ рдореЗрдВ рдХреЛрдб рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рд╕рд╣рд╛рдпрдХ рд╣реЛрддреЗ рд╣реИрдВ -s ASSERTIONS=1 -s SAFE_HEAP=1 - рд╡реЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЕрд╕рдВрд░реЗрдЦрд┐рдд рдкрддреЗ рдкрд░ рдХреЙрд▓ (рдЬреЛ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕реБрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ) HEAP32[addr >> 2] = 1) рдпрд╛ рдЧрд▓рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред

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

рдвреЗрд░ рдХрд╛ рд╡рд┐рдирд╛рд╢

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЯреАрд╕реАрдЖрдИ рддрдХ рдЕрд╕рдВрд░реЗрдЦрд┐рдд рдкрд╣реБрдВрдЪ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдПрдХ рдореБрдЦреНрдп рд▓реВрдк рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░, рдЖрд░рд╕реАрдпреВ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ Qemu рдХреЛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ -d exec,in_asm,out_asm, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдб рдХреЗ рдХреМрди рд╕реЗ рдмреНрд▓реЙрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рдордп рдпрд╣ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрддрд┐рдерд┐ рдХреЛрдб рдХреНрдпрд╛ рдерд╛, рд╣реЛрд╕реНрдЯ рдХреЛрдб рдХреНрдпрд╛ рдмрди рдЧрдпрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдЗрдЯрдХреЛрдб)ред рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдХрдИ рдЕрдиреБрд╡рд╛рдж рдмреНрд▓реЙрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рд╕реАрдпреВ рдЕрдм рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдФрд░... рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ abort() рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ free(). рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдХреЗ free() рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдХрд┐ рд╣реАрдк рдмреНрд▓реЙрдХ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ, рдЬреЛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рд╕реЗ рдкрд╣рд▓реЗ рдЖрда рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╣реИ, рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдмрдЬрд╛рдп, рдХрдЪрд░рд╛ рдерд╛ред

рдвреЗрд░ рдХрд╛ рд╡рд┐рдирд╛рд╢ - рдХрд┐рддрдирд╛ рдкреНрдпрд╛рд░рд╛... рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрдкрд╛рдп рд╣реИ - (рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ) рдЙрдиреНрд╣реАрдВ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ, рдПрдХ рджреЗрд╢реА рдмрд╛рдЗрдирд░реА рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рд▓рдЧреНрд░рд┐рдВрдб рдХреЗ рддрд╣рдд рдЪрд▓рд╛рдПрдВред рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдмрд╛рдЗрдирд░реА рддреИрдпрд╛рд░ рд╣реЛ рдЧрдИред рдореИрдВ рдЗрд╕реЗ рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рдмреЗрд╢рдХ, рдпрд╣ рдЕрдкреНрд░рд┐рдп рд╣реИ - рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рд╕реНрд░реЛрдд рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдирд╣реАрдВ рдереЗ, рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдиреЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬреЗ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд▓рдЧреНрд░рд┐рдВрдб рд╣реИ - рдкрд╣рд▓реЗ рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░, рдЕрдЧрд░ рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд░рд╣рд╛ , рдореВрд▓ рд╡рд╛рд▓рд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдореИрдВ рд╡рд╛рд▓рдЧреНрд░рд┐рдВрдб рдХреЗ рддрд╣рдд рд╡рд╣реА рдЪреАрдЬрд╝ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ... рд╡рд╛рдИ-рд╡рд╛рдИ-рд╡рд╛рдИ, рд╡рд╛рдИ-рд╡рд╛рдИ-рд╡рд╛рдИ, рдЙрд╣-рдЙрд╣, рдпрд╣ рд╢реБрд░реВ рд╣реБрдЖ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рдЧрд▓рдд рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рднреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛ рдореВрд▓ рдмрдЧ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛, рдлреЙрд▓реНрд╕ рдХрд╛ рддреЛ рдЬрд┐рдХреНрд░ рд╣реА рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреАрд╡рди рдиреЗ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ - рд╡реЙрд▓рдЧреНрд░рд┐рдВрдб рдХреЗ рддрд╣рдд рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдХреНрд░реИрд╢рд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреНрд░реИрд╢ рд╣реЛрдирд╛ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреНрдпрд╛ рдерд╛ рдпрд╣ рдПрдХ рд░рд╣рд╕реНрдп рд╣реИред рдореЗрд░реА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдмрд╛рд░, рдЬреАрдбреАрдмреА рдиреЗ рдХрд╛рдо рджрд┐рдЦрд╛рдпрд╛ memset-a рдПрдХ рд╡реИрдз рд╕реВрдЪрдХ рдХреЗ рд╕рд╛рде рдпрд╛ рддреЛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ mmx, рдЪрд╛рд╣реЗ рд╡рд╣ xmm рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░реЗрдЦрдг рддреНрд░реБрдЯрд┐ рдереА, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЕрднреА рднреА рдХрдард┐рди рд╣реИред

рдареАрдХ рд╣реИ, рд╡рд╛рд▓рдЧреНрд░рд┐рдВрдб рдпрд╣рд╛рдБ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдШреГрдгрд┐рдд рдмрд╛рдд рд╢реБрд░реВ рд╣реБрдИ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдРрд╕реА рдШрдЯрдирд╛ рдХреЗ рдХрд╛рд░рдг рдмрд┐рд▓реНрдХреБрд▓ рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд▓рд╛рдЦреЛрдВ рдирд┐рд░реНрджреЗрд╢ рдкрд╣рд▓реЗ рд╣реЛ рд╕рдХрддреА рдереАред рдХрд╛рдлреА рджреЗрд░ рддрдХ рддреЛ рдпрд╣ рднреА рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдлрд┐рд░ рднреА рдмреИрдардХрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЬрд┐рд╕ рд╣реЗрдбрд░ рдХреЛ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛ред рдФрд░, рджреЗрдЦреЛ рдФрд░ рджреЗрдЦреЛ, рдпрд╣ рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ BIOS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдИ рдЧрдИ рдереА - рдЕрд░реНрдерд╛рдд, рдЕрдм рдЙрдЪрд┐рдд рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╣рдирд╛ рд╕рдВрднрд╡ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдерд╛, рдФрд░ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдареАрдХ рд╣реИ, рдлрд┐рд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ - рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдореЗрдВ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкрддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдХреЛрдИ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЫреЗрдж рднреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдВрддрд┐рдо рд▓реЙрдиреНрдЪ рд╕реЗ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдмреАрдЪ рдореЗрдВ рдХрд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рдХреЛ рджреЗрдЦреЗрдВ, рд╕реВрдЪрдХ рдХреЛ рджреЗрдЦреЗрдВ, рдФрд░, рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рддреЛ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рднреЛрдЬрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рд╕рдЪ рд╣реИ, рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рдж рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд╛рдЗрди рдкрд╛рдИ рдЧрдИ рдЬрд┐рд╕рдиреЗ BIOS рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдмрдлрд╝рд░ рд╕реЗ рдЕрддрд┐рдерд┐ рдореЗрдореЛрд░реА рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ - рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрдлрд╝рд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рдирд╣реАрдВ рдереАред рдЙрд╕ рдЕрдЬреАрдм рдмрдлрд╝рд░ рдкрддреЗ рдХрд╛ рд╕реНрд░реЛрдд рдвреВрдВрдврдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЙрддреНрдкрдиреНрди рд╣реБрдЖ qemu_anon_ram_alloc рдлрд╛рдЗрд▓ рдореИрдВ oslib-posix.c - рд╡рд╣рд╛рдВ рддрд░реНрдХ рдпрд╣ рдерд╛: рдХрднреА-рдХрднреА рдкрддреЗ рдХреЛ 2 рдПрдордмреА рдЖрдХрд╛рд░ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрда рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдкреВрдЫреЗрдВрдЧреЗ mmap рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рдФрд░, рдФрд░ рдлрд┐рд░ рд╣рдо рдорджрдж рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реМрдЯрд╛ рджреЗрдВрдЧреЗ munmap. рдФрд░ рдпрджрд┐ рдРрд╕реЗ рд╕рдВрд░реЗрдЦрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо 2 рдПрдордмреА рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВрдЧреЗ getpagesize() - mmap рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╕рдВрд░реЗрдЦрд┐рдд рдкрддрд╛ рджреЗрдЧрд╛... рддреЛ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдореЗрдВ mmap рдмрд╕ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ malloc, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдкреГрд╖реНрда рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдмрдЧ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рддрдХ рдирд┐рд░рд╛рд╢ рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ ╨┤╨▓╤Г╤Е рдкрдВрдХреНрддрд┐рдпрд╛рдБ.

рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдФрд░ рдЕрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреБрдЫ рдЧрд┐рди рд░рд╣рд╛ рд╣реИ, Qemu рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реАрди рдЪрд╛рд▓реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдЬрд▓реНрджреА рд╕реЗ рд▓реВрдк рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ -d exec,in_asm,out_asm. рдПрдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рд╕рд╛рдордиреЗ рдЖрдИ рд╣реИ: рдЯрд╛рдЗрдорд░ рд╡реНрдпрд╡рдзрд╛рди (рдпрд╛, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рднреА рд╡реНрдпрд╡рдзрд╛рди) рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВред рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдореВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╛рди рддрд╕реНрд╡реАрд░ рдорд┐рд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрддреНрддрд░ рдирд╣реАрдВ рдерд╛: рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдирд┐рд╢рд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд╖реЗрдк рдкрде рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рдЕрд▓рдЧ рд╣реЛ рдЧрдП рдереЗред рдпрд╣рд╛рдВ рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЙрдиреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕рдХреА рддреБрд▓рдирд╛ emrun рдореВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╛рдВрддреНрд░рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ emrun, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд░ рдореЗрдВ рдЕрдВрддрд░ рдЕрднреА рддрдХ рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд╖реЗрдк рдкрде рдЕрд▓рдЧ рд╣реЛ рдЧрдП рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ ljmpl рд╡рд┐рднрд┐рдиреНрди рдкрддреЛрдВ рдкрд░ рд╕рдВрдХреНрд░рдордг рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрддреНрдкрдиреНрди рдмрд╛рдЗрдЯрдХреЛрдб рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ: рдПрдХ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЧреВрдЧрд▓ рдкрд░ рджреЗрдЦрдиреЗ рдФрд░ рдЗрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕рдХреЗ рдареАрдХ рдкрд╣рд▓реЗ cr0 рдПрдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдЧрдИ - рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА - рдЬрд┐рд╕рдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд рдпрд╣ рдХрд┐ рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрднреА рднреА рд╕рдВрд░рдХреНрд╖рд┐рдд рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рд╣реБрдЖред рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдХреА рдПрдХ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреИрд╕реЗ рдХреЛрдб рдХреЛ рд╕рд╣рди рдХрд░рдиреЗ рдХреА рдЕрдирд┐рдЪреНрдЫрд╛ рд╣реИ call рдЯреАрд╕реАрдЖрдИ рдореЗрдВ, рдЬреЛ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЯрд╛рдЗрдк рд╣реЛрддрд╛ рд╣реИ long long f(int arg0, .. int arg9) - рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рддреЛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ) рдпрд╛ рдЧрд▓рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ (рдЬрд┐рд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рджреБрдЦрдж рд╣реЛрдЧрд╛)ред рдПрдХ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ - рдРрд╕реЗ рд░реИрдкрд░реНрд╕ рдХреА рдкреАрдврд╝реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдЬреЛ рддрд░реНрдХ рдЬреЛрдбрд╝рддреЗ/рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдпреЗ рд░реИрдкрд░реНрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЧрд╣ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╕реМ рд╕реЗ рдХреБрдЫ рдЕрдзрд┐рдХ рд░реИрдкрд░реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЕрдХреЗрд▓рд╛ рдмрд╣реБрдд рджреБрдЦрдж рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╕рд╛рдордиреЗ рдЖрдИ: рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рддрд░реНрдХреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдареАрдХ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореЗрд░рд╛ libffi рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЕрд░реНрдерд╛рддреН, рдХреБрдЫ рдорджрджрдЧрд╛рд░реЛрдВ рдХреЛ рдмрд╕ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Qemu рдХреЗ рдкрд╛рд╕ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреА рдорд╢реАрди-рдкрдардиреАрдп рд╕реВрдЪрд┐рдпрд╛рдБ рд╣реИрдВ

DEF_HELPER_0(lock, void)
DEF_HELPER_0(unlock, void)
DEF_HELPER_3(write_eflags, void, env, tl, i32)

рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рдордЬреЗрджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рд╕рдмрд╕реЗ рд╡рд┐рдЪрд┐рддреНрд░ рддрд░реАрдХреЗ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ DEF_HELPER_n, рдФрд░ рдлрд┐рд░ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ helper.h. рдЗрд╕ рд╣рдж рддрдХ рдХрд┐ рдореИрдХреНрд░реЛ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛ рдФрд░ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рд╕рд░рдгреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдмрдЬрд╛рдп - #include <helper.h> рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдЦрд╝рд┐рд░рдХрд╛рд░ рдореБрдЭреЗ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛ рдкрд╛рдЗрдкрд░реНрд╕рд┐рдВрдЧ, рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрди рд░реИрдкрд░реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЙрд╕рдХреЗ рдмрд╛рдж рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрд╛ред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЛ рдХрднреА рднреА рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ memtest86+ рдореВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЪрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ Qemu рдмреНрд▓реЙрдХ I/O рдХреЛрдб рдХреЛрд░реВрдЯрд╛рдЗрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХрд╛ рдЕрдкрдирд╛ рдмрд╣реБрдд рд╣реА рдкреЗрдЪреАрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рднреА Qemu рдХреЛрдб рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЕрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: Qemu рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ -kernel, -initrd, -append, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рд▓рд┐рдирдХреНрд╕ рдХреЛ рдмреВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, memtest86+, рдмрд┐рдирд╛ рдмреНрд▓реЙрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдореВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ -nographic, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЙрд╕ рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ emrun, рдирд╣реАрдВ рдЖрдпрд╛. рдпрд╛рдиреА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ: рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдорди рдореЗрдВ рдЦреНрдпрд╛рд▓ рдЖрдпрд╛ рдХрд┐ рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП. рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ "рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЛ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдзреАрд░реЗ-рдзреАрд░реЗ рдмреНрд▓рд┐рдВрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ," рдФрд░ рд▓рдЧрднрдЧ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдХрд░реНрдиреЗрд▓ рдиреЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдФрд░ рд▓рдЯрдХрдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ SDL2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЦрдВрдЧрд╛рд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдореБрдЭреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░, рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реЗрдЦрд╛ рдЪрдордХрддреА рдереА, рдЬрд┐рд╕рдиреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╕реБрдЭрд╛рдПред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ Qemu рдПрдХ рднреМрддрд┐рдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдЖрдк Ctrl-Alt-n рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдпрд╣ рдореВрд▓ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Emscripten рдореЗрдВ рдирд╣реАрдВред рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рдмрд╛рдж -monitor none -parallel none -serial none рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдкрд░ рдкреВрд░реА рд╕реНрдХреНрд░реАрди рдХреЛ рдЬрдмрд░рджрд╕реНрддреА рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢, рд╕рдм рдХреБрдЫ рдЕрдЪрд╛рдирдХ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрд╛ред

рдХреЛрд░реВрдЯрд┐рдиреНрд╕

рддреЛ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдиреБрдХрд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╕рд┐рдВрдЧрд▓-рдлреНрд▓реЙрдкреА рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдмреНрд▓реЙрдХ I/O рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдХреЙрд░рдЖрдЙрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Qemu рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдХреЛрд░рдЯрд╛рдЗрди рдмреИрдХрдПрдВрдб рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреНрд░рдХреГрддрд┐ рдФрд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рдХрд╛рд░рдг, рдЖрдк рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдХреА рдмрд╛рдЬреАрдЧрд░реА рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ "рд╕рдм рдХреБрдЫ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд▓рд╛рд╕реНрдЯрд░ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ," рд▓реЗрдХрд┐рди рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдм рдХреБрдЫ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦ рд▓рд┐рдпрд╛ рд╣реИред рдЗрд╕реЗ рдХрд╛рдлреА рдордЬрд╝реЗрджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЖрдЗрдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджрд┐рдЧреНрдз рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ emscripten_sleep рдФрд░ Asyncify рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЕрдиреНрдп, рд╕рд╛рде рд╣реА рдкреЙрдЗрдВрдЯрд░ рдХреЙрд▓ рдФрд░ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдкрд┐рдЫрд▓реЗ рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдЯреИрдХ рдХреЗ рдиреАрдЪреЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд┐рдЧреНрдз рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдХреЙрд▓ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд╣рдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рд╣реБрдИ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдПрд╕рд┐рдВрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕рд╣реЗрдЬреЗрдВрдЧреЗ, рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрдм рд╣рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдФрд░ рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣реАрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ рдлрд┐рдЬреВрд▓рдЦрд░реНрдЪреА - рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рд╕рдВрджрд┐рдЧреНрдз рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ "рд╕реНрдЯрдмреНрд╕" рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ - рдЗрд╕ рддрд░рд╣: рдпрджрд┐ n рд╕рдВрджрд┐рдЧреНрдз рдХреЙрд▓ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣реАрдВ n/2 рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд╕рдордп - рдпрд╣ рдЕрднреА рднреА рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рддреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рд▓рд┐рдЦрдиреА рдкрдбрд╝реА, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рджрд┐рдП рдЧрдП рд╕реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдХрдерд┐рдд рддреМрд░ рдкрд░ "рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ" (рдпрд╛рдиреА, рд╕реНрдЯреИрдХ рдкреНрд░рдореЛрд╢рди рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИ) рдЙрдирдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВ), рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЗрди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рди рдорд╛рдирд╛ рдЬрд╛рдПред рдФрд░ рдлрд┐рд░ 60 рдПрдордмреА рд╕реЗ рдХрдо рдХреА рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВ - рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрдо рд╕реЗ рдХрдо 30ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдмрд╛рд░ рдореИрдВ рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдЧрд▓рддреА рд╕реЗ рд▓рд┐рдВрдХрд░ рд╡рд┐рдХрд▓реНрдк рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ -O3. рдореИрдВ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдФрд░ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдореЛрд░реА рдХреЛ рдЦрд╝рддреНрдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдореЗрд░реА рдирдЬрд░ рдЧрд▓рддреА рд╕реЗ рдЙрд╕ рдкрд░ рдкрдбрд╝реА рдЬреЛ рд╡рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛... рдЦреИрд░, рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдореБрдЭреЗ 500+ рдПрдордмреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рд╣реЛрддрд╛ рддреЛ рдореИрдВ рднреА рдЬрдо рдЬрд╛рддрд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Asyncify рд╕рдкреЛрд░реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдореЗрдВ рдЪреЗрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рдереЗ longjmp-рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреЗ рдкреИрдЪ рдХреЗ рдмрд╛рдж рдЬреЛ рдЗрди рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЬрдмрд░рджрд╕реНрддреА рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛, рдХреЛрдб рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрдЬреАрдм рдмрд╛рдд рд╢реБрд░реВ рд╣реБрдИ: рдХрднреА-рдХрднреА рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛрдб рдореЗрдВ рдЪреЗрдХ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддреЗ рдереЗ - рд╡рд╣реА рдЬреЛ рдХреЛрдб рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдХрд┐рд╕реА рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЧрдП рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЛ рд╣рдерд┐рдпрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХреНрд░рдордмрджреНрдз рдХреЛрдб рдореЗрдВ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдирд┐рдХрд▓реА - рдореИрдВ рдмрд╕ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдорд╛рдирдХ рдореБрдЦреНрдп рд▓реВрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдХ рдХреЛ рдЦреЛрд▓ рджреЗрддреА рдереА, рдФрд░ рдЙрд╕ рд╕рдордп рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рдереА setTimeout рдореБрдЦреНрдп рд▓реВрдк рд╕реЗ - рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдб рдкрд┐рдЫрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдореБрдЦреНрдп рд▓реВрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рдЧрдпрд╛ред рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдкрд░ рдкреБрдирдГ рд▓рд┐рдЦреЗрдВ рдФрд░ emscripten_sleep, рдФрд░ рдореНрдпреВрдЯреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрдВрдж рд╣реЛ рдЧрдИрдВред рдХреЛрдб рдФрд░ рднреА рдЕрдзрд┐рдХ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдЧрд▓рд╛ рдПрдиреАрдореЗрд╢рди рдлреНрд░реЗрдо рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ - рдкреНрд░реЛрд╕реЗрд╕рд░ рдмрд╕ рдХреБрдЫ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░реАрди рд╕рдордп-рд╕рдордп рдкрд░ рдЕрдкрдбреЗрдЯ рд╣реЛрддреА рд░рд╣рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рдорд╕реНрдпрд╛рдПрдБ рдпрд╣реАрдВ рдирд╣реАрдВ рд░реБрдХреАрдВ: рдХрднреА-рдХрднреА Qemu рдирд┐рд╖реНрдкрд╛рджрди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдЪреБрдкрдЪрд╛рдк рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рдерд╛ред рдЙрд╕ рдкрд▓ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди, рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА: рдХреЛрд░рдЯрд╛рдЗрди рдХреЛрдб, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ setTimeout (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрддрдиреА рдмрд╛рд░ рдирд╣реАрдВ рдЬрд┐рддрдиреА рдмрд╛рд░ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ): рдХрд╛рд░реНрдп emscripten_yield рдмрд╕ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдлрд╝реНрд▓реИрдЧ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдкреВрд░реА рдмрд╛рдд рдпрд╣реА рд╣реИ emscripten_coroutine_next рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ: рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдзреНрд╡рдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд╡рд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕реНрдЯреИрдХ рдХрд╛ рдкреНрд░рдореЛрд╢рди рдпрд╣реАрдВ рдЦрд╝рддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ. рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдпреВрдЬрд╝-рдЖрдлреНрдЯрд░-рдлреНрд░реА рдХреЗ рдХрд╛рд░рдг, рдЬреЛ рддрдм рдкреНрд░рдХрдЯ рд╣реБрдЖ рдЬрдм рдХреЙрд░рдЖрдЙрдЯрд┐рди рдкреВрд▓ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЕрдХреНрд╖рдо рд╣реЛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛ рдХреЙрд░рдЖрдЙрдЯрд┐рди рдмреИрдХрдПрдВрдб рд╕реЗ рдХреЛрдб рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрдВрдХреНрддрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдИ рдереА, рдлрд╝рдВрдХреНрд╢рди qemu_in_coroutine рд╕рддреНрдп рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдЬрдмрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЕрд╕рддреНрдп рд▓реМрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдЗрд╕рдХреЗ рдЪрд▓рддреЗ рдХреЙрд▓ рдЖрдИ emscripten_yield, рдЬрд┐рд╕рдХреЗ рдКрдкрд░ рдвреЗрд░ рдкрд░ рдХреЛрдИ рдирд╣реАрдВ рдерд╛ emscripten_coroutine_next, рдвреЗрд░ рдмрд╣реБрдд рдКрдкрд░ рддрдХ рдЦреБрд▓ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдирд╣реАрдВ setTimeout, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЬрдирд░реЗрд╢рди

рдФрд░ рдпрд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, "рдХреАрдорд╛ рдмрдирд╛рдпрд╛ рд╣реБрдЖ рдорд╛рдВрд╕ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ" рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрд╝рд░реВрд░реА рдирд╣реАрдВред рдмреЗрд╢рдХ, рдЕрдЧрд░ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Qemu рдФрд░ рдЙрд╕рдореЗрдВ Node.js рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, Qemu рдореЗрдВ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрд▓рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреВрдореВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рддреБрд░рдВрдд рдорд╛рдл рдХрд░реЗрдВ: рдореИрдВ рдПрдХ рдкреЗрд╢реЗрд╡рд░ Qemu рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, "рдЫрд╛рддреНрд░ рдХреА рд░рд╛рдп рдХреЛ рд╢рд┐рдХреНрд╖рдХ рдХреА рд░рд╛рдп, рдкреАрдиреЛ рдХреА рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдзрддрд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред" Qemu рдХреЗ рдкрд╛рд╕ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдЕрддрд┐рдерд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ target-i386. рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХрдИ рдЕрддрд┐рдерд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рдХрдИ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд╣реЛрдВрдЧреЗред рдЕрддрд┐рдерд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб, рдмрджрд▓реЗ рдореЗрдВ, рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ Qemu рд╕рдВрдЪрд╛рд▓рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ TCG (рдЯрд┐рдиреА рдХреЛрдб рдЬреЗрдирд░реЗрдЯрд░) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛрд╕реНрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдорд╢реАрди рдХреЛрдб рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЯреАрд╕реАрдЬреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рд░реАрдбрдореА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬреЗрдЖрдИрдЯреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрдм рдЕрддрд┐рдерд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдореЗрдЬрдмрд╛рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдПрдХ рдФрд░ рдШрдЯрдХ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ - рдЯрд┐рдиреА рдХреЛрдб рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ (рдЯреАрд╕реАрдЖрдИ), рдЬрд┐рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдб (рд▓рдЧрднрдЧ рд╕рдорд╛рди рдЖрдВрддрд░рд┐рдХ рд╕рдВрдЪрд╛рд▓рди) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ JIT рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рди рдХреЗрд╡рд▓ рдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рддреНрд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ, рдмрд▓реНрдХрд┐ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рднреАред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рдкреВрд░реНрдг рдЯреАрд╕реАрдЬреА рдмреИрдХрдПрдВрдб рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЬрд▓реНрджреА рд╣реА рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЯреАрд╕реАрдЖрдИ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реБрдП:

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

рддреАрд╕рд░реЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреИрдЪрд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рджреЛ рдмрд┐рдВрджреБ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдХреЛрдб рдореВрд▓ рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдкрддреЗ рдкрд░ рдПрдХ рдмрдбрд╝реЗ рд╕реНрд╡рд┐рдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░, рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЬреЗрдПрд╕ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдкреБрдирдГ рд▓реВрдкрд┐рдВрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЕрдзрд┐рдХ рдорд╛рдирд╡ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЦрд╛рд╕рдХрд░ рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред рдЬреИрд╕реЗ рд╣реА рдХрд╣рд╛, рдХрд┐рдпрд╛, рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдерд╛ рдЬреЛ ifs рдХреЗ рд╕рд╛рде рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рдерд╛ (рдпрджреНрдпрдкрд┐ рдмрд┐рдирд╛ рд▓реВрдк рдХреЗ)ред рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдВрджреЗрд╢ рдЧрдпрд╛ рдХрд┐ рдирд┐рд░реНрджреЗрд╢ рдХреБрдЫ рдЧрд▓рдд рд▓рдВрдмрд╛рдИ рдХреЗ рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд░рд┐рдХрд░реНрд╕рди рд╕реНрддрд░ рдкрд░ рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ рдерд╛ brcond. рдареАрдХ рд╣реИ, рдореИрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдЬрд╛рдВрдЪ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдФрд░... рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬреЛрд░ рд╕реНрд╡рд┐рдЪ рдХреЗ рдмрд╛рдж рднреА рд╡реЗ рд╡рд┐рдлрд▓ рд░рд╣реЗред рдЕрдВрдд рдореЗрдВ, рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╕реНрд╡рд┐рдЪ рдХреЗ рдмрд╛рдж, рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдРрд╕рд╛ рд╣реА рд╣реБрдЖ. рдмрдлрд╝рд░ рдХреЛ рдПрдХ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдмрдврд╝рд╛рдХрд░ рджрд╕ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдордВрдбрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рдерд╛ред рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдерд╛ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдЯреАрдмреА рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдЧрд▓реЗ рдЯреАрдмреА рдХрд╛ рдкрддрд╛ рдЛрдг рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ "рдпрджрд┐ рдмрд╛рдЗрдЯрдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рддреЛ рдХреМрди рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?" - рдХреЗрд╡рд▓ рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рдмреНрд▓реЙрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рд╕рдм рдХреБрдЫ рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдерд╛ (рдЪреВрдВрдХрд┐ рдореИрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ), рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдиреЗ рдореБрдЭреЗ asm.js рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХреЛрдб рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХреНрд░реЛрдорд┐рдпрдо.

рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг

Compiling 0x15b46d0:
CompiledTB[0x015b46d0] = function(stdlib, ffi, heap) {
"use asm";
var HEAP8 = new stdlib.Int8Array(heap);
var HEAP16 = new stdlib.Int16Array(heap);
var HEAP32 = new stdlib.Int32Array(heap);
var HEAPU8 = new stdlib.Uint8Array(heap);
var HEAPU16 = new stdlib.Uint16Array(heap);
var HEAPU32 = new stdlib.Uint32Array(heap);

var dynCall_iiiiiiiiiii = ffi.dynCall_iiiiiiiiiii;
var getTempRet0 = ffi.getTempRet0;
var badAlignment = ffi.badAlignment;
var _i64Add = ffi._i64Add;
var _i64Subtract = ffi._i64Subtract;
var Math_imul = ffi.Math_imul;
var _mul_unsigned_long_long = ffi._mul_unsigned_long_long;
var execute_if_compiled = ffi.execute_if_compiled;
var getThrew = ffi.getThrew;
var abort = ffi.abort;
var qemu_ld_ub = ffi.qemu_ld_ub;
var qemu_ld_leuw = ffi.qemu_ld_leuw;
var qemu_ld_leul = ffi.qemu_ld_leul;
var qemu_ld_beuw = ffi.qemu_ld_beuw;
var qemu_ld_beul = ffi.qemu_ld_beul;
var qemu_ld_beq = ffi.qemu_ld_beq;
var qemu_ld_leq = ffi.qemu_ld_leq;
var qemu_st_b = ffi.qemu_st_b;
var qemu_st_lew = ffi.qemu_st_lew;
var qemu_st_lel = ffi.qemu_st_lel;
var qemu_st_bew = ffi.qemu_st_bew;
var qemu_st_bel = ffi.qemu_st_bel;
var qemu_st_leq = ffi.qemu_st_leq;
var qemu_st_beq = ffi.qemu_st_beq;

function tb_fun(tb_ptr, env, sp_value, depth) {
  tb_ptr = tb_ptr|0;
  env = env|0;
  sp_value = sp_value|0;
  depth = depth|0;
  var u0 = 0, u1 = 0, u2 = 0, u3 = 0, result = 0;
  var r0 = 0, r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0, r7 = 0, r8 = 0, r9 = 0;
  var r10 = 0, r11 = 0, r12 = 0, r13 = 0, r14 = 0, r15 = 0, r16 = 0, r17 = 0, r18 = 0, r19 = 0;
  var r20 = 0, r21 = 0, r22 = 0, r23 = 0, r24 = 0, r25 = 0, r26 = 0, r27 = 0, r28 = 0, r29 = 0;
  var r30 = 0, r31 = 0, r41 = 0, r42 = 0, r43 = 0, r44 = 0;
    r14 = env|0;
    r15 = sp_value|0;
  START: do {
    r0 = HEAPU32[((r14 + (-4))|0) >> 2] | 0;
    r42 = 0;
    result = ((r0|0) != (r42|0))|0;
    HEAPU32[1445307] = r0;
    HEAPU32[1445321] = r14;
    if(result|0) {
    HEAPU32[1445322] = r15;
    return 0x0345bf93|0;
    }
    r0 = HEAPU32[((r14 + (16))|0) >> 2] | 0;
    r42 = 8;
    r0 = ((r0|0) - (r42|0))|0;
    HEAPU32[(r14 + (16)) >> 2] = r0;
    r1 = 8;
    HEAPU32[(r14 + (44)) >> 2] = r1;
    r1 = r0|0;
    HEAPU32[(r14 + (40)) >> 2] = r1;
    r42 = 4;
    r0 = ((r0|0) + (r42|0))|0;
    r2 = HEAPU32[((r14 + (24))|0) >> 2] | 0;
    HEAPU32[1445307] = r0;
    HEAPU32[1445308] = r1;
    HEAPU32[1445309] = r2;
    HEAPU32[1445321] = r14;
    HEAPU32[1445322] = r15;
    qemu_st_lel(env|0, r0|0, r2|0, 34, 22759218);
if(getThrew() | 0) abort();
    r0 = 3241038392;
    HEAPU32[1445307] = r0;
    r0 = qemu_ld_leul(env|0, r0|0, 34, 22759233)|0;
if(getThrew() | 0) abort();
    HEAPU32[(r14 + (24)) >> 2] = r0;
    r1 = HEAPU32[((r14 + (12))|0) >> 2] | 0;
    r2 = HEAPU32[((r14 + (40))|0) >> 2] | 0;
    HEAPU32[1445307] = r0;
    HEAPU32[1445308] = r1;
    HEAPU32[1445309] = r2;
    qemu_st_lel(env|0, r2|0, r1|0, 34, 22759265);
if(getThrew() | 0) abort();
    r0 = HEAPU32[((r14 + (24))|0) >> 2] | 0;
    HEAPU32[(r14 + (40)) >> 2] = r0;
    r1 = 24;
    HEAPU32[(r14 + (52)) >> 2] = r1;
    r42 = 0;
    result = ((r0|0) == (r42|0))|0;
    if(result|0) {
    HEAPU32[1445307] = r0;
    HEAPU32[1445308] = r1;
    }
    HEAPU32[1445307] = r0;
    HEAPU32[1445308] = r1;
    return execute_if_compiled(22759392|0, env|0, sp_value|0, depth|0) | 0;
    return execute_if_compiled(23164080|0, env|0, sp_value|0, depth|0) | 0;
    break;
  } while(1); abort(); return 0|0;
}
return {tb_fun: tb_fun};
}(window, CompilerFFI, Module.buffer)["tb_fun"]

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

рддреЛ, рдХрд╛рдо рдЕрднреА рднреА рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдкреВрд░реНрдгрддрд╛ рддрдХ рд▓рд╛рдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрднреА рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ рдЙрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдХреЛрдб рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдбрд░рд╛рд╡рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдпреЛрдЧ рд╣реИ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ, рддрдм рдХреНрдпреВрдореВ рдХреЗ рдХреБрдЫ рдФрд░ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рдорд╛рдгреБ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдПрдБ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рдмреНрд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЧреАрддрд╛ рдореЗрдВ рдПрдХ рд╕реВрддреНрд░ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ "рд╕реНрддрд░" рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░реВрд╕реА рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред рджрд░рдЕрд╕рд▓, рдпрд╣ рд▓реЗрдЦ рдХрд╛рдлреА рд╣рдж рддрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд╛ рдкреБрдирд░реНрдХрдерди рд╣реИ git log.

рдЖрдк рдпрд╣ рд╕рдм рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ (рдпрд╛рддрд╛рдпрд╛рдд рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ).

рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

  • x86 рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
  • рдорд╢реАрди рдХреЛрдб рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ JIT рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ
  • рдЕрдиреНрдп 32-рдмрд┐рдЯ рдЕрддрд┐рдерд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдЕрд╕реЗрдВрдмрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ: рдЕрднреА рдЖрдк рд▓реЛрдбрд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдордЖрдИрдкреАрдПрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдлреНрд░реАрдЬ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

  • рдЕрдиреБрдХрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдВ. рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ JIT рдореЛрдб рдореЗрдВ рднреА рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ x86 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирдХрд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкреВрд░реНрдг Qemu рд╣реИ)
  • рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП - рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореИрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдорд╛рдирдХ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рд╢реЗрд▓ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИ
  • рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ Qemu рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ, VM рдорд╛рдЗрдЧреНрд░реЗрд╢рди, рдЖрджрд┐ред
  • рдпреБрдкреАрдбреА: рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдЕрдкрд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдХреНрдпреВрдореВ рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкрд┐рдЫрд▓реЗ рдкреЛрд░реНрдЯрд░реНрд╕ рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред рдореЗрд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдореЗрдВ рдЙрдирдХреЗ рдпреЛрдЧрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдзрдиреНрдпрд╡рд╛рджред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ