рд╣рд▓реНрдХреЗ рдХрдВрдЯреЗрдирд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡реЗрдХреНрдЯрд░

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



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



//

template < class TEntry, class TAllocator > class TArrayBase

{

//

TEntry* GetStart() const { return m_Start; }

// ( , )

TEntry* GetFinish() const { return m_Finish; }

// ( , )

TEntry* GetEndAllocated() const { return m_Storage._M_data; }

//

TEntry* m_Start;

TEntry* m_Finish;

// ,

//

_STLP_alloc_proxy<TEntry*, TEntry, allocator_type> m_Storage;

};







32-рдмрд┐рдЯ x86 рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдРрд╕реА рд╡рд╕реНрддреБ 12 рдмрд╛рдЗрдЯреНрд╕ рд▓реЗрдЧреАред рдпрджрд┐ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдбреНрд╕ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдмрд┐рдирд╛ рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдорд╛рдирдХ рдПрд▓реЛрдХреЗрдЯрд░ рдмрд╕ рдпрд╣реА рд╣реИ), рддреЛ рдпрд╣ рдПрдХ рд╕рдлрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЬрдЧрд╣ рдирд╣реАрдВ рд▓реЗрдЧрд╛, рдХрдо рд╕реЗ рдХрдо STLPort рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВред VS2005 рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрдо рд╕рдлрд▓ рд╣реИ рдФрд░ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдПрдХ рдФрд░ 4 рдмрд╛рдЗрдЯреНрд╕ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдиреНрдпреВрдирддрдо 8 рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред



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



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



рдкрд╣рд▓рд╛ рд╕рдорд╛рдзрд╛рди рдСрдЯреЛ_рдкреНрдЯреНрд░ <рд╡реЗрдХреНрдЯрд░> рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдерд╛ред рдкреЙрдЗрдВрдЯрд░ рд╕рдорд╛рди 4 рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рдПрдХ рд╢реВрдиреНрдп рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд░рдгреА рдЦрд╛рд▓реА рд╣реИ, рдПрдХ рдЧреИрд░-рд░рд┐рдХреНрдд рдПрдХ рдвреЗрд░ рдкрд░ рд╡реЗрдХреНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХрдИ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:

  1. рдПрдХ рдЧреИрд░-рдЦрд╛рд▓реА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ (4 рдмрд╛рдЗрдЯреНрд╕) рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╣реАрдк рдкрд░ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП (рдкреНрд░рдпреБрдХреНрдд рд╣реАрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 4 рдмреНрд▓реЙрдХ рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддрд┐ рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ);
  2. рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдкреНрд░рддреНрдпрдХреНрд╖рддрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдХреНрдЯрд░ рдвреЗрд░ рдХреЗ рдПрдХ рдЕрд▓рдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬреЛ рдХреИрд╢ рдХреЗ рд▓рд┐рдП рднреА рдЦрд░рд╛рдм рд╣реИ;
  3. рдЙрдкрдпреЛрдЧ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕реВрдЪрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рджреЛрд╖ рдХреЛ рд╕реВрдЪрдХ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЙрдХреНрд╕реА рдХрдВрдЯреЗрдирд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЪреЗрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред



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



рдХреЛрдб рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде:



// ( )

template < class TAllocator >

class TTinyArrayStorage

{

//

char *Finish;

//

_STLP_alloc_proxy< char *, char , allocator_type> Storage;

//

static TTinyArrayStorage<TAllocator> EmptyStorage;

};



//

template < class TEntry, class TAllocator >

class TTinyArrayBase

{

//

TEntry* GetStart() const { return m_Data; }

// ( , )

TEntry* GetFinish() const { return (TEntry*)GetStorage()->Finish; }

// ( , )

TEntry* GetEndAllocated() const

{ return (TEntry*)GetStorage()->Storage._M_data; }

//

TTinyArrayStorage<TAllocator> *GetStorage() const

{ return (TTinyArrayStorage<TAllocator>*)((( char *)m_Data) -

sizeof (TTinyArrayStorage<TAllocator>)); }

//

TEntry *m_Data;

};







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



for (vector<TFoo>::iterator i = in_data.begin(), e = in_data.end(); i != e; ++i)

i->Process();







VS2005 рд╕рдВрдХрд▓рдХ рдПрдХ рдорд╛рдирдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдмрдирд╛рддрд╛ рд╣реИ:

 00401340 8B 44 24 04 mov eax,dword ptr [esp+4] 00401344 56 push esi 00401345 8B 30 mov esi,dword ptr [eax] 00401347 57 push edi 00401348 8B 78 04 mov edi,dword ptr [eax+4] 0040134B 3B F7 cmp esi,edi 0040134D 74 0F je Test+1Eh (40135Eh) 0040134F 90 nop 00401350 8B CE mov ecx,esi 00401352 E8 D9 FF FF FF call TFoo::Process (401330h) 00401357 83 C6 04 add esi,4 0040135A 3B F7 cmp esi,edi 0040135C 75 F2 jne Test+10h (401350h) 0040135E 5F pop edi 0040135F 5E pop esi 00401360 C3 ret
      
      





рдФрд░ "рд▓рд╛рдЗрдЯ" рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП:

 00401370 8B 44 24 04 mov eax,dword ptr [esp+4] 00401374 56 push esi 00401375 8B 30 mov esi,dword ptr [eax] 00401377 57 push edi 00401378 8B 7E F8 mov edi,dword ptr [esi-8] 0040137B 3B F7 cmp esi,edi 0040137D 74 0F je Test+1Eh (40138Eh) 0040137F 90 nop 00401380 8B CE mov ecx,esi 00401382 E8 A9 FF FF FF call TFoo::Process (401330h) 00401387 83 C6 04 add esi,4 0040138A 3B F7 cmp esi,edi 0040138C 75 F2 jne Test+10h (401380h) 0040138E 5F pop edi 0040138F 5E pop esi 00401390 C3 ret
      
      





рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рд▓рдЧрднрдЧ рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкрд╛рдВрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реВрдЪрдХ рдХреЛ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ ([eax + 4]) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ ([рдПрд╕рдЖрдИрдЖрдИ -8]; )ред



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



рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреВрдВрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдВрдЯреЗрдирд░ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рдЧрднрдЧ 270 рд╣рдЬрд╛рд░ рд╡реЗрдХреНрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рд▓рдЧрднрдЧ 170 рд╣рдЬрд╛рд░ рдЦрд╛рд▓реА рд░рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдПрдХ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╣реЗрдЬрдирд╛ред рдорд╛рдирдХ рд╡реЗрдХреНрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдХреЛрдб рдЖрдХрд╛рд░ рдореЗрдВ рдмреЗрд╣рд┐рд╕рд╛рдм рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ - 48 рдХреЗрдмреА рддрдХ, рд▓рдЧрднрдЧ 10 рдПрдордмреА рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рдеред рдЙрддреНрдкрд╛рджрдХрддрд╛ рдереЛрдбрд╝реА рдмрдврд╝ рдЧрдИ, рд▓рдЧрднрдЧ 1%ред



All Articles