рдЪрдврд╝рд╛рдИ рдПрд▓рдмреНрд░рд╕ - рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдЯреЛрд╣реАред рддрдХрдиреАрдХреА рднрд╛рдЧ 1. рд░рдЬрд┐рд╕реНрдЯрд░, рдвреЗрд░ рдФрд░ рдЕрдиреНрдп рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг

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

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

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

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп: рдвреЗрд░


рдПрд▓реНрдмреНрд░рд╕ рдореЗрдВ рддреАрди рдвреЗрд░ рд╣реИрдВ:

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреИрдХ (PS)
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдвреЗрд░ (рдкреАрд╕реАрдПрд╕)
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдЯреИрдХ (рдпреВрдПрд╕)

рдЖрдЗрдП рдЙрдирдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдЖрдХреГрддрд┐ рдореЗрдВ рдкрддреЗ рд╕рд╢рд░реНрдд рд╣реИрдВ, рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХрд╛ рдирд┐рд░реНрджреЗрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдмрдбрд╝реЗ рдкрддреЗ рд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдПрдХ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред



рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреИрдХ (PS) "рдкрд░рд┐рдЪрд╛рд▓рди" рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, "рд╕рд╛рдзрд╛рд░рдг" рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реИред E2K рдореЗрдВ "рдирд┐рдпрдорд┐рдд" рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреИрдХ рдкрд░ рд╕реНрдЯреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдпреЗ рджреЛрдиреЛрдВ рд╕реНрдЯреИрдХ (PS рдФрд░ PCS) рдПрдХ рдЖрдзрд╛рд░ рдкрддреЗ, рдЖрдХрд╛рд░ рдФрд░ рд╡рд░реНрддрдорд╛рди рдСрдлрд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИрдВред рдпреЗ рдкреИрд░рд╛рдореАрдЯрд░ PSP рдФрд░ PCSP рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╡реЗ 128-рдмрд┐рдЯ рд╣реИрдВ рдФрд░ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдЪреНрдЪ рдпрд╛ рдирд┐рдореНрди) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдвреЗрд░ рдХрд╛ рдХрд╛рдордХрд╛рдЬ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдкрдВрдкрд┐рдВрдЧ / рд╕реНрд╡реИрдкрд┐рдВрдЧ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрдВрддреНрд░ рдореЗрдВ рдПрдХ рд╕рдХреНрд░рд┐рдп рднреВрдорд┐рдХрд╛ рдХреНрд░рдорд╢рдГ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдпрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдвреЗрд░ рдХреЗ рддрдерд╛рдХрдерд┐рдд "рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░" рджреНрд╡рд╛рд░рд╛ рдЦреЗрд▓реА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдиреАрдЪреЗред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ рдЗрди рд╕реНрдЯреИрдХреНрд╕ рдХрд╛ рдбреЗрдЯрд╛ рд░реИрдо рдореЗрдВ рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпреЗ рдвреЗрд░ (рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдвреЗрд░ рдФрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдвреЗрд░) рдмрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ ред рдЬрдм рд╣рдордиреЗ Reference_switch рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рдЖ рдЧрдПред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдЯреИрдХ рдХреЛ рдЖрдзрд╛рд░ рдкрддрд╛ рдФрд░ рдЖрдХрд╛рд░ рднреА рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕реВрдЪрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╣реИ USD.lo. рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдЯреИрдХ рд╣реИ рдЬреЛ рдиреАрдЪреЗ рдмрдврд╝рддрд╛ рд╣реИред рдХреЗрд╡рд▓, "рд╕рд╛рдзрд╛рд░рдг" рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдиреНрдп рд╕реНрдЯреИрдХ (рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕) рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд╣рд╛рдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдПрдХ рдЧреИрд░-рдорд╛рдирдХ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕реНрдЯреИрдХ рдХреА рд╕реАрдорд╛рдУрдВ рдФрд░ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ 4Kb рд╕рдВрд░реЗрдЦрдг рд╣реИ, рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрддреЗ рдФрд░ рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рджреЛрдиреЛрдВ рдХреЛ 4Kb рдореЗрдВ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реВрдВред рд╣рдо рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдЖрдП, рдлрд┐рд░ рд╕реЗ, рдЬрдм рд╣рдордиреЗ Reference_switch рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп: рд░рдЬрд┐рд╕реНрдЯрд░ред рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рд╡рд┐рдВрдбреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ


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

рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ (рдЖрд░рдПрдл) рд╕рднреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рджреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдПрдХ рдлрд╛рдЗрд▓ (рдЪреЗрди рдлрд╛рдЗрд▓ - рд╕реАрдПрдл), рджреВрд╕рд░реЗ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╛рдЗрд▓ (рдЖрд░рдПрдл) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ "рдСрдкрд░реЗрд╢рдирд▓" рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред

рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреНрд╖реЗрддреНрд░ (рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рд╕реЗрдЯ) рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ред рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд┐рд╕реА рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рд╣реИ рдХрд┐ x86 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдЕрдбрд╝рдЪрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдареАрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде RISC рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдпрд╣ рд╕рд░рд▓ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд▓рдЧрднрдЧ 16 рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХрдИ (2-3) рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рд┐рд░реНрдл 128 рд░рдЬрд┐рд╕реНрдЯрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрдврд╝ рдЬрд╛рдПрдЧрд╛? рдЙрддреНрддрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрддреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрд┐рдЯреНрд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪрд╛рд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЫрд╛рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдмреИрдВрдХреЛрдВ, рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЫрд╛рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдЖрд░рдПрдо рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рдВрдЧрдарди рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрддред рдпрджрд┐ рдХреЛрдИ рд░реБрдХрд╛рд╡рдЯ рдпрд╛ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдПрдХ рд╣реА рдирд╛рдо (рд╕рдВрдЦреНрдпрд╛) рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдореВрд▓ рд╕реЗрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдЬрд╛рдирдХрд╛рд░реА рд╡рд╣рд╛рдВ рд░рд╣рддреА рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░ рдмреИрдВрдХ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЫрд╛рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗрдЯреЛрдВ рдХрд╛ рдмрд╕ рдХреЛрдИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЪреБрдирддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдХрд┐рд╕ рдмреИрдВрдХ (рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╕реЗрдЯ) рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред

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



рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдореЗрдореЛрд░реА рдореЗрдВ), рд▓реЗрдХрд┐рди рдпрд╣ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдирд┐: рд╢реБрд▓реНрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИрдВред

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



рдЕрд░реНрдерд╛рддреН, рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ r0 рд╢реВрдиреНрдп рдореЗрдВ r2 рдХреЗ рд╕рдорд╛рди рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛрдЧрд╛, рдФрд░ r3 рдХреЗ рд╕рдорд╛рди рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ рд╕реЗ r1 рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ r2 рдореЗрдВ рд▓рд┐рдЦрдирд╛ (рд╡рд┐рдВрдбреЛ рдирдВрдмрд░ рдмрджрд▓рдирд╛) рд╣рдореЗрдВ r0 рдореЗрдВ рдореВрд▓реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдШреВрдордиреЗ рдХрд╛ рддрдВрддреНрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓реНрдмреНрд░рд╕ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рд╡рд┐рдВрдбреЛ рд╣реИрдВ, рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЪрд░, рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреЗ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдШреБрдорд╛рдП рдЧрдП рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рд░реЛрдЯреЗрдЯреЗрдмрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдПрдХ рд╡рд┐рдВрдбреЛ рдЗрдВрдбреЗрдХреНрд╕ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рдпрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡рд┐рдВрдбреЛ рдЗрдВрдбреЗрдХреНрд╕ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рд╡рд┐рдВрдбреЛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧреАред рдПрд▓реНрдмреНрд░рд╕ рдореЗрдВ, рдпреЗ рд╕реВрдЪрдХрд╛рдВрдХ рд░рдЬрд┐рд╕реНрдЯрд░ PSHTP (PS рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП) рдФрд░ PCSHTP (PCS рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди "рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ"ред рдЕрдм рдЖрдк рдлрд┐рд░ рд╕реЗ рд╕реНрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрдВрддреНрд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЬреЛ рд╣реИ рдЙрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВред рдореЗрд░рд╛ рдорддрд▓рдм рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рддреЛ рдЙрдкрдХрд░рдг рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВрдЧреЗред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдирдИ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рдкреНрдд рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рдкрдВрдк рдЖрдЙрдЯ" рдХрд░ рджреЗрдЧреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдЙрдЪрд┐рдд рд╕реНрдЯреИрдХ (рдореЗрдореЛрд░реА рдореЗрдВ) рдкрд░ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ "рд╕реНрдЯреИрдХ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЯреЙрдк рдХреЛ рдкреЙрдЗрдВрдЯрд░" (рдСрдлрд╝рд╕реЗрдЯ рдЗрдВрдбреЗрдХреНрд╕) рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реА рддрд░рд╣, рд╕реНрдЯреИрдХ рд╕реЗ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдордиреЗ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЫрд┐рдкреЗ рд╣реБрдП рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрд▓реНрдмреНрд░рд╕ рдореЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП FLUSHR рдФрд░ FLUSHC рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FLUSHR - рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╛рдЗрд▓ рдХреЛ рдХреНрд▓реАрдпрд░ рдХрд░рддреЗ рд╣реБрдП, рдХрд░рдВрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╡рд┐рдВрдбреЛ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕реНрдЯреИрдХ рдореЗрдВ рдкреНрд░рд╡рд╛рд╣рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, PSHTP рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FLUSHC - рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдВрдлреЙрд░реНрдореЗрд╢рди рдлрд╛рдЗрд▓ рдХреЛ рдХреНрд▓реАрдпрд░ рдХрд░рддреЗ рд╣реБрдП рдХрд░рдВрдЯ рд╡рд┐рдВрдбреЛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдВрдлреЙрд░реНрдореЗрд╢рди рд╕реНрдЯреИрдХ рдкрд░ рдбрдВрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, PCSHTP рдЗрдВрдбреЗрдХреНрд╕ рднреА рдЬреАрд░реЛ рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп: рдПрд▓реНрдмреНрд░рд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдЕрдм рдЬрдм рд╣рдордиреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рддреЛ рд╣рдо рдПрд▓рдмреНрд░рд╕ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

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

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

PS рд╕реНрдЯреИрдХ рдкрд░ рд╡рд┐рдВрдбреЛ рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╡рд┐рдВрдбреЛ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреЗрд╢ рдХреА рдЧрдИ рд╣реИред рдЗрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдВрдбреЛ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ -% dr0,% dr1, ...,% dr15, ... рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реЗ рд╣рдореЗрд╢рд╛ 0 рд╕реЗ рдЧрд┐рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдзрд╛рд░ рдкрддреЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рд░рдЬрд┐рд╕реНрдЯрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рдШреБрдорд╛рдиреЗ рдХреЗ рддрдВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдПрд▓реНрдмреНрд░рд╕ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдореЗрдВ рддрд░реНрдХреЛрдВ рдФрд░ рдХреБрдЫ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 4 рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░) рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯрд╡рд╛рд░реНрдб рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

setwd wsz=0x10 

рдХреНрд╡рд╛рдб-рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ (128-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред



рдЕрдм, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдШреБрдорд╛рдП рдЧрдП рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рдХреА рд╡рд░реНрдгрд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдКрдкрд░ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рддреА рд╣реИ рдЬрд╣рд╛рдВ рд╡рд┐рдВрдбреЛ 1 (рд╣рд░рд╛) рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдВрдбреЛ 2 (рдирд╛рд░рдВрдЧреА) рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрди рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЖрдкрдХреЗ% dr0,% dr1 рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА, ... рд▓реЗрдХрд┐рди рддрд░реНрдХ рддрдерд╛рдХрдерд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡рд┐рдВрдбреЛ 1 рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рдВрдбреЛ 2 (рдЗрди рджреЛ рд╡рд┐рдВрдбреЛ рдЪреМрд░рд╛рд╣реЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ) рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдмрди рдЬрд╛рдПрдВрдЧреЗред рдпреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдЪрд┐рддреНрд░ рдореЗрдВ рд░реЛрдЯрд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рджреЗрдЦреЗрдВ) рдФрд░ рдкрддрд╛% db [0],% db [1] рд╣реИ ... рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рдВрдбреЛ 2 рдореЗрдВ% dr0 рд░рдЬрд┐рд╕реНрдЯрд░% db [0] рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдЦрд┐рдбрд╝рдХреА 1ред

рд░реЛрдЯреЗрд╢рди рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рд╕реЗрдЯрдмрд┐рди рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИ:

  setbn rbs = 0x3, rsz = 0x8 

rbs рдШреБрдорд╛рдП рдЧрдП рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ rsz рдЖрдзрд╛рд░ рдкрддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ред рдпрд╛рдиреА рдпрд╣рд╛рдВ рд╣рдордиреЗ 8 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ 3 рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рд╣реИрдВред

рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ:

 void my_func(uint64_t a) { } 

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

  addd 0, %dr9, %db[0] disp %ctpr1, my_func call %ctpr1, wbs = 0x8 

рдЗрд╕рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ред рдЕрдм рдЖрдЗрдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдвреЗрд░ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣ рддрдерд╛рдХрдерд┐рдд рд╕реАрдЖрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреЛ - CR0, CR1ред рдФрд░ рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред



рдлрд╝рдВрдХреНрд╢рди рдХреА рд╡рд┐рдВрдбреЛ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ CR0 рдФрд░ CR1 рдЬрд┐рдиреНрд╣реЗрдВ рдирд╛рд░рдВрдЧреА рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░реЗ рд╣реИрдВред CR0 рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╕реВрдЪрдХ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рдзреЗрдп рдлрд╝рд╛рдЗрд▓ (PF-Predicate рдлрд╝рд╛рдЗрд▓) рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред

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

рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реВрдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд (рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреАрдПрд╕ рдФрд░ рдкреАрд╕реАрдПрд╕ рд╕реНрдЯреИрдХ рд╕реЗ) рдкрдВрдк рдФрд░ рд╕реНрд╡реИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реЗрдЯрдЬрдореНрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд┐рдВрджреБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

SETJMP / LONGJMP


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

Embox рдореЗрдВ, рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ setjmp / longjmp рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ / рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ: CR0, CR1, PSP, PCSP, USD, - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп рд╕реЗ рд╣рдореЗрдВ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрдЪрдд / рдмрд╣рд╛рд▓реА рд╣рдорд╛рд░реЗ рдорд╛рдереЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рд╕реНрдЯреИрдХ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН: рд╕реНрдЯреИрдХ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рди рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреА рд╣реИрдВред рдЗрд╕ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдкрд╣рд▓рд╛ рдлреАрдЪрд░ рд╕реЗрд╡ рдФрд░ рд░рд┐рд╕реНрдЯреЛрд░ рдХреЗ рджреМрд░рд╛рди рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдбрд┐рд╕реЗрдмрд▓ рдХрд░рдирд╛ рд╣реИред рдХрд┐рд╕реА рдмрд╛рдзрд╛ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рдЕрдиреНрдпрдерд╛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЖрдзрд╛-рд╕реНрд╡рд┐рдЪ рдХрд┐рдП рдЧрдП рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ ("рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг" рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡реИрдкрд┐рдВрдЧ рдХреЛ рдкрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдФрд░ рдЬрдм рдмрдЪрдд рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрд╕реЗрд╕рд░ рдлрд┐рд░ рд╕реЗ рд░реИрдо рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрд╡реИрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рд╕реЗ рдкреАрдПрд╕рдПрдЪрдЯреАрдкреА = 0 рдФрд░ рдкреАрдПрд╕рд╕реАрдЯреАрдкреА = 0, рдЗрдирд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ) рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕реАрд▓рд┐рдП, setjmp рдФрд░ longjmp рджреЛрдиреЛрдВ рдореЗрдВ, рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдорд╕реАрдЯреАрдПрд╕ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдиреЗ рд╣рдореЗрдВ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрд░рдорд╛рдгреБ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рджреВрд╕рд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдореЛрд░реА рд╕реЗ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдВрдк / рдкрдВрдк рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рдЖрдХрд╛рд░ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдВрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдкреАрдПрд╕рдкреА рдФрд░ рдкреАрдПрд╕рдПрдЪрдЯреАрдкреА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдореЗрдореЛрд░реА рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ рд░рд╣реА рд╣реИ, рд╕рдВрджрд░реНрдн рдмрд╣рд╛рд▓реА рдХреЗ рд╕рдордп рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрд▓рдд рд╣реЛрдЧрд╛ (рди рдХрд┐ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ "рдмрдЪрд╛рдпрд╛") рдбреЗрдЯрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреВрд░реА рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рд╕реЗрдЬрдореНрдк рдореЗрдВ рдмрдЪрдд рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЗрдореЛрд░реА рдореЗрдВ PSP.ind рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ PSHSHTP.ind рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреВрд░реЗ PCSP.ind + PCSHTP.ind рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рд╣реИ:

 /* First arg is PCSP, 2nd arg is PCSHTP * Returns new PCSP value with updated PCSP.ind */ .type update_pcsp_ind,@function $update_pcsp_ind: setwd wsz = 0x4, nfx = 0x0 /* Here and below, 10 is size of PCSHTP.ind. Here we * extend the sign of PCSHTP.ind */ shld %dr1, (64 - 10), %dr1 shrd %dr1, (64 - 10), %dr1 /* Finally, PCSP.ind += PCSHTP.ind */ addd %dr1, %dr0, %dr0 E2K_ASM_RETURN 

рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЗрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрд░реНрдерд╛рддреН, PCSHTP.ind рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡рд░реНрдгрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ (64-10) рдХреЛ рдмрд╛рдИрдВ рдУрд░ (64-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░), 10-рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб рдкрд░, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред

рд╡рд╣реА PSP (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреИрдХ) рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ

 /* First arg is PSP, 2nd arg is PSHTP * Returns new PSP value with updated PSP.ind */ .type update_psp_ind,@function $update_psp_ind: setwd wsz = 0x4, nfx = 0x0 /* Here and below, 12 is size of PSHTP.ind. Here we * extend the sign of PSHTP.ind as stated in documentation */ shld %dr1, (64 - 12), %dr1 shrd %dr1, (64 - 12), %dr1 muld %dr1, 2, %dr1 /* Finally, PSP.ind += PSHTP.ind */ addd %dr1, %dr0, %dr0 E2K_ASM_RETURN 

рдереЛрдбрд╝реЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде (рдлрд╝реАрд▓реНрдб 12 рдмрд┐рдЯреНрд╕ рд╣реИ, рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд╡рд╣рд╛рдВ 128-рдмрд┐рдЯ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдорд╛рди 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╕реНрд╡рдпрдВ рд╕реЗрдЯрдЬрдореНрдк рдХреЛрдб

 C_ENTRY(setjmp): setwd wsz = 0x14, nfx = 0x0 /* It's for db[N] registers */ setbn rsz = 0x3, rbs = 0x10, rcur = 0x0 /* We must disable interrupts here */ disp %ctpr1, ipl_save ipd 3 call %ctpr1, wbs = 0x10 /* Store current IPL to dr9 */ addd 0, %db[0], %dr9 /* Store some registers to jmp_buf */ rrd %cr0.hi, %dr1 rrd %cr1.lo, %dr2 rrd %cr1.hi, %dr3 rrd %usd.lo, %dr4 rrd %usd.hi, %dr5 /* Prepare RF stack to flush in longjmp */ rrd %psp.hi, %dr6 rrd %pshtp, %dr7 addd 0, %dr6, %db[0] addd 0, %dr7, %db[1] disp %ctpr1, update_psp_ind ipd 3 call %ctpr1, wbs = 0x10 addd 0, %db[0], %dr6 /* Prepare CF stack to flush in longjmp */ rrd %pcsp.hi, %dr7 rrd %pcshtp, %dr8 addd 0, %dr7, %db[0] addd 0, %dr8, %db[1] disp %ctpr1, update_pcsp_ind ipd 3 call %ctpr1, wbs = 0x10 addd 0, %db[0], %dr7 std %dr1, [%dr0 + E2K_JMBBUFF_CR0_HI] std %dr2, [%dr0 + E2K_JMBBUFF_CR1_LO] std %dr3, [%dr0 + E2K_JMBBUFF_CR1_HI] std %dr4, [%dr0 + E2K_JMBBUFF_USD_LO] std %dr5, [%dr0 + E2K_JMBBUFF_USD_HI] std %dr6, [%dr0 + E2K_JMBBUFF_PSP_HI] std %dr7, [%dr0 + E2K_JMBBUFF_PCSP_HI] /* Enable interrupts */ addd 0, %dr9, %db[0] disp %ctpr1, ipl_restore ipd 3 call %ctpr1, wbs = 0x10 /* return 0 */ adds 0, 0, %r0 E2K_ASM_RETURN 

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

 #define E2K_ASM_FLUSH_CPU \ flushr; \ nop 2; \ flushc; \ nop 3; 

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

 C_ENTRY(longjmp): setwd wsz = 0x14, nfx = 0x0 setbn rsz = 0x3, rbs = 0x10, rcur = 0x0 /* We must disable interrupts here */ disp %ctpr1, ipl_save ipd 3 call %ctpr1, wbs = 0x10 /* Store current IPL to dr9 */ addd 0, %db[0], %dr9 /* We have to flush both RF and CF to memory because saved values * of P[C]SHTP can be not valid here. */ E2K_ASM_FLUSH_CPU /* Load registers previously saved in setjmp. */ ldd [%dr0 + E2K_JMBBUFF_CR0_HI], %dr2 ldd [%dr0 + E2K_JMBBUFF_CR1_LO], %dr3 ldd [%dr0 + E2K_JMBBUFF_CR1_HI], %dr4 ldd [%dr0 + E2K_JMBBUFF_USD_LO], %dr5 ldd [%dr0 + E2K_JMBBUFF_USD_HI], %dr6 ldd [%dr0 + E2K_JMBBUFF_PSP_HI], %dr7 ldd [%dr0 + E2K_JMBBUFF_PCSP_HI], %dr8 rwd %dr2, %cr0.hi rwd %dr3, %cr1.lo rwd %dr4, %cr1.hi rwd %dr5, %usd.lo rwd %dr6, %usd.hi rwd %dr7, %psp.hi rwd %dr8, %pcsp.hi /* Enable interrupts */ addd 0, %dr9, %db[0] disp %ctpr1, ipl_restore ipd 3 call %ctpr1, wbs = 0x10 /* Actually, we return to setjmp caller with second * argument of longjmp stored on r1 register. */ adds 0, %r1, %r0 E2K_ASM_RETURN 

рдкреНрд░рд╕рдВрдЧ рд╕реНрд╡рд┐рдЪ


рдЬрдм рд╣рдо рд╕реЗрдЯрдЬрдореНрдк / рд▓реЙрдиреНрдЧрдЬрдореНрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди_ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдПред рджрд░рдЕрд╕рд▓, рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ / рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╣рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрдерд┐рддрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ (рдпреВрдкреАрдПрд╕рдЖрд░) рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдХреЛрдбрд░ рдХреЛрдб reference_switch:

 C_ENTRY(context_switch): setwd wsz = 0x10, nfx = 0x0 /* Save prev UPSR */ rrd %upsr, %dr2 std %dr2, [%dr0 + E2K_CTX_UPSR] /* Disable interrupts before saving/restoring context */ rrd %upsr, %dr2 andnd %dr2, (UPSR_IE | UPSR_NMIE), %dr2 rwd %dr2, %upsr E2K_ASM_FLUSH_CPU /* Save prev CRs */ rrd %cr0.lo, %dr2 rrd %cr0.hi, %dr3 rrd %cr1.lo, %dr4 rrd %cr1.hi, %dr5 std %dr2, [%dr0 + E2K_CTX_CR0_LO] std %dr3, [%dr0 + E2K_CTX_CR0_HI] std %dr4, [%dr0 + E2K_CTX_CR1_LO] std %dr5, [%dr0 + E2K_CTX_CR1_HI] /* Save prev stacks */ rrd %usd.lo, %dr3 rrd %usd.hi, %dr4 rrd %psp.lo, %dr5 rrd %psp.hi, %dr6 rrd %pcsp.lo, %dr7 rrd %pcsp.hi, %dr8 std %dr3, [%dr0 + E2K_CTX_USD_LO] std %dr4, [%dr0 + E2K_CTX_USD_HI] std %dr5, [%dr0 + E2K_CTX_PSP_LO] std %dr6, [%dr0 + E2K_CTX_PSP_HI] std %dr7, [%dr0 + E2K_CTX_PCSP_LO] std %dr8, [%dr0 + E2K_CTX_PCSP_HI] /* Load next CRs */ ldd [%dr1 + E2K_CTX_CR0_LO], %dr2 ldd [%dr1 + E2K_CTX_CR0_HI], %dr3 ldd [%dr1 + E2K_CTX_CR1_LO], %dr4 ldd [%dr1 + E2K_CTX_CR1_HI], %dr5 rwd %dr2, %cr0.lo rwd %dr3, %cr0.hi rwd %dr4, %cr1.lo rwd %dr5, %cr1.hi /* Load next stacks */ ldd [%dr1 + E2K_CTX_USD_LO], %dr3 ldd [%dr1 + E2K_CTX_USD_HI], %dr4 ldd [%dr1 + E2K_CTX_PSP_LO], %dr5 ldd [%dr1 + E2K_CTX_PSP_HI], %dr6 ldd [%dr1 + E2K_CTX_PCSP_LO], %dr7 ldd [%dr1 + E2K_CTX_PCSP_HI], %dr8 rwd %dr3, %usd.lo rwd %dr4, %usd.hi rwd %dr5, %psp.lo rwd %dr6, %psp.hi rwd %dr7, %pcsp.lo rwd %dr8, %pcsp.hi /* Restore next UPSR */ ldd [%dr1 + E2K_CTX_UPSR], %dr2 rwd %dr2, %upsr E2K_ASM_RETURN 

рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдУрдПрд╕ рдереНрд░реЗрдб рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рд╣реИред Embox рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдереНрд░реЗрдб рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИ

 void _NORETURN thread_trampoline(void); 

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

рдирддреАрдЬрддрди, рдлрд┐рд▓рд╣рд╛рд▓ рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рд╕реНрдЯреИрдХ рдХреЗ рдиреАрдЪреЗ рдХреА рдЬрдЧрд╣ рдХреЛ рддреАрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдмрд╛рдБрдЯ рджреЗрдВрдЧреЗ, рдПрдХ рдЪреМрдерд╛рдИ рдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдиреНрдлрд╝рд░реНрдореЗрд╢рди рдХреЗ рдвреЗрд░ рдХреЗ рдиреАрдЪреЗ, рдПрдХ рдЪреМрдерд╛рдИ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕реНрдЯреИрдХ рдХреЗ рдиреАрдЪреЗ рдФрд░ рдЖрдзреЗ рдХреЛ рдпреВрдЬрд╝рд░ рд╕реНрдЯреИрдХ рдХреЗ рдиреАрдЪреЗ рдмрд╛рдБрдЯ рджреЗрдВрдЧреЗред

рдореИрдВ рдХреЛрдб рд▓рд╛рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЖрдк рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рдЖрд░рдВрднреАрдХрд░рдг рд╣реИред
 /* This value is used for both stack base and size align. */ #define E2K_STACK_ALIGN (1UL << 12) #define round_down(x, bound) ((x) & ~((bound) - 1)) /* Reserve 1/4 for PSP stack, 1/4 for PCSP stack, and 1/2 for USD stack */ #define PSP_CALC_STACK_BASE(sp, size) binalign_bound(sp - size, E2K_STACK_ALIGN) #define PSP_CALC_STACK_SIZE(sp, size) binalign_bound((size) / 4, E2K_STACK_ALIGN) #define PCSP_CALC_STACK_BASE(sp, size) \ (PSP_CALC_STACK_BASE(sp, size) + PSP_CALC_STACK_SIZE(sp, size)) #define PCSP_CALC_STACK_SIZE(sp, size) binalign_bound((size) / 4, E2K_STACK_ALIGN) #define USD_CALC_STACK_BASE(sp, size) round_down(sp, E2K_STACK_ALIGN) #define USD_CALC_STACK_SIZE(sp, size) \ round_down(USD_CALC_STACK_BASE(sp, size) - PCSP_CALC_STACK_BASE(sp, size),\ E2K_STACK_ALIGN) static void e2k_calculate_stacks(struct context *ctx, uint64_t sp, uint64_t size) { uint64_t psp_size, pcsp_size, usd_size; log_debug("Stacks:\n"); ctx->psp_lo |= PSP_CALC_STACK_BASE(sp, size) << PSP_BASE; ctx->psp_lo |= E2_RWAR_RW_ENABLE << PSP_RW; psp_size = PSP_CALC_STACK_SIZE(sp, size); assert(psp_size); ctx->psp_hi |= psp_size << PSP_SIZE; log_debug(" PSP.base=0x%lx, PSP.size=0x%lx\n", PSP_CALC_STACK_BASE(sp, size), psp_size); ctx->pcsp_lo |= PCSP_CALC_STACK_BASE(sp, size) << PCSP_BASE; ctx->pcsp_lo |= E2_RWAR_RW_ENABLE << PCSP_RW; pcsp_size = PCSP_CALC_STACK_SIZE(sp, size); assert(pcsp_size); ctx->pcsp_hi |= pcsp_size << PCSP_SIZE; log_debug(" PCSP.base=0x%lx, PCSP.size=0x%lx\n", PCSP_CALC_STACK_BASE(sp, size), pcsp_size); ctx->usd_lo |= USD_CALC_STACK_BASE(sp, size) << USD_BASE; usd_size = USD_CALC_STACK_SIZE(sp, size); assert(usd_size); ctx->usd_hi |= usd_size << USD_SIZE; log_debug(" USD.base=0x%lx, USD.size=0x%lx\n", USD_CALC_STACK_BASE(sp, size), usd_size); } static void e2k_calculate_crs(struct context *ctx, uint64_t routine_addr) { uint64_t usd_size = (ctx->usd_hi >> USD_SIZE) & USD_SIZE_MASK; /* Reserve space in hardware stacks for @routine_addr */ /* Remark: We do not update psp.hi to reserve space for arguments, * since routine do not accepts any arguments. */ ctx->pcsp_hi |= SZ_OF_CR0_CR1 << PCSP_IND; ctx->cr0_hi |= (routine_addr >> CR0_IP) << CR0_IP; ctx->cr1_lo |= PSR_ALL_IRQ_ENABLED << CR1_PSR; /* Divide on 16 because it field contains size in terms * of 128 bit values. */ ctx->cr1_hi |= (usd_size >> 4) << CR1_USSZ; } void context_init(struct context *ctx, unsigned int flags, void (*routine_fn)(void), void *sp, unsigned int stack_size) { memset(ctx, 0, sizeof(*ctx)); e2k_calculate_stacks(ctx, sp, stack_size); e2k_calculate_crs(ctx, (uint64_t) routine_fn); if (!(flags & CONTEXT_IRQDISABLE)) { ctx->upsr |= (UPSR_IE | UPSR_NMIE); } } 


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

рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ! рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╣рд╛рдпрддрд╛, рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реАрдзреЗ ICST рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Embox рдореЗрдВ рдХреЛрдб, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рдлрд┐рд░ рд╕реЗ, MCST рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles