
рд╣реИрд▓реЛ, рдореЗрд░рд╛ рдирд╛рдо рдпреВрдЬреАрди рд╣реИ, рдФрд░ рдореИрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдердХ рдЧрдпрд╛ рд╣реВрдВред рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред
рдЬрдм рдЖрдк рдмрдбрд╝реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ C ++, рдЬрд╛рд╡рд╛, рдкрд╛рдпрдерди рдЖрджрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЫреЛрдЯреЗ рдФрд░ рдкреЙрдЯ-рдмреЗрд▓рд┐рдб рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЙрдирдХреЗ рдЕрд▓реНрдк рдФрдЬрд╛рд░реЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдФрд░ рд╕реНрд╡рд╛рдпрддреНрддрддрд╛ рдХреЗ рдХрд╛рд░реНрдп рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдВрдЧрд▓реА рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг, рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЙрдмрд╛рдК рдФрд░ рдЙрдмрд╛рдК рд╕рдмрдХ, рд╢рд╛рдпрдж рд╣реА рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рднреАред рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ ... рдЖрдк рдлреНрд▓реИрд╢ рдХрд░рддреЗ рд╣реИрдВ ... рдЖрдк рдмреНрд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ ... рдПрдХ рдПрд▓рдИрдбреА (рдХрднреА-рдХрднреА рдпреВрдПрдЖрд░рдЯреА рдкрд░ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ)ред рд╕рднреА рдХрд▓рдо, рд╡рд┐рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ред
рдпрд╣ рднреА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЫреЛрдЯреЗ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рджреНрдп рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред
рдФрд░ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдФрд░ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рддреНрд░реБрдЯрд┐ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдФрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдРрд╕реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, REPL рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрддреА рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдмрд╕ рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдпреЗ рдХрд░ рд╕рдХреЗрдВ, рдХрдо рд╕реЗ рдХрдо рддреБрдЪреНрдЫ рдмрд╛рддреЗрдВ,
\
рдЗрд╕ рдкрд░ рдХреИрд╕реЗ рдЖрдирд╛ рд╣реИ, рд▓реЗрдЦреЛрдВ рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕рдорд░реНрдкрд┐рдд рд╣реИред
рдФрд░ рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдПрдХ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдЬрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдВрд╕рд░реЛрдВ рдФрд░ рдЕрдиреНрдп рдЪрд┐рдкреНрд╕ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдордХреЗ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рд╡рд┐рд╢реЗрд╖ рдордЬрд╝рд╛ рдпрд╣ рдерд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рджреЛ рдорд╣реАрдиреЗ рдпрд╛ рддреЛ (рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рдЯреЛрд╕реНрдЯрдорд╛рд╕реНрдЯрд░ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред
рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рд╣рдо рд░реЛрдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реА рдФрд░ рдЕрдВрддрд╣реАрди рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ wilds рдореЗрдВ рдбреБрдмрдХреА рд▓рдЧрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕ рдкрд╛рда рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдордирд╛ рдпрд╛ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрдд рдореЗрдВ, рдЖрд▓рд╕реНрдп рдФрд░ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдкреНрд░рдЧрддрд┐ рдХрд╛ рдЗрдВрдЬрди рд╣реИред
рдкрд┐рдЫрд▓реА рдмрд╛рд░, рдЬрдм рдореИрдВрдиреЗ рдУрдкрдирдУрд╕реАрдбреА рдХреЛ рд╕рдордЭрд╛ рдерд╛, рддреЛ рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдкрд░ рдЖрдпрд╛ рдерд╛
http://openocd.org/doc/html/General-Commands.html 15.4 Memory access commands mdw, mdh, mdb тАФ mww, mwh, mwb тАФ
рджрд┐рд▓рдЪрд╕реНрдк ... рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдкрд░рд┐рдзреАрдп рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ? .. рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЯреАрд╕реАрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдУрдкрдирдУрд╕реАрдбреА рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ stm32f103C8T6 рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдорд┐рд╖ рдПрд▓рдИрдбреА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ
рдФрд░ OpenOCD рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рд╕рдорд╛рди рдХреНрд░рдо
mww 0x40021018 0x10 mww 0x40011004 0x300000 mww 0x40011010 0x2000 mww 0x40011010 0x20000000
рдФрд░ рдЕрдм, рдпрджрд┐ рдЖрдк рдЕрдирдиреНрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдФрд░ рдПрдордХреЗ рдХреЗ рд▓рд┐рдП рдлрд░реНрдорд╡реЗрдпрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ ... рддреЛ рдЗрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдЪрд┐рдк рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ; рдлрд░реНрдорд╡реЗрдпрд░ рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЗрд╕рдХрд╛ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ!
рдЯрд┐рдкреНрдкрдгреАрд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреЗрд╢рдХ рдЖрдк рдХреНрд░рд┐рдкреНрдЯ (=) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХрдИ рдХреЛ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛рдж рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬреАрд╡рди рдмреЗрд╣рддрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдУрдкрдирдУрд╕реАрдбреА рд╕реНрд░реЛрдд рдореЗрдВ рдЖрдк рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЬрдЧрд░ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЦрд╛рд▓реАред
рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдкрддреЗ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдФрд░ рдХреЛрд╖реЗрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реИрдВрдкреЗрди рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдмрд╛рд╣реНрдп рдкрд░рд┐рдзреАрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдирдП рдПрдЪрдПрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рд╣реНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрдЬрдЧрд░ рддрдХ рдкрд╣реБрдБрдЪрд╛рдирд╛ ... рдХрд┐рд╕реА рджреБрдГрд╕реНрд╡рдкреНрди рдореЗрдВ рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рддреЛ рдЖрдкрдХреЛ рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ C рдпрд╛ ... C ++ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдореЗрдВ, рдЖрдк рд▓рдЧрднрдЧ рд╕рднреА рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЙрдирдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдзрд╛рд░ рдкрддреЗ, рдЙрдирдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, stm32f10x.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
#define PERIPH_BB_BASE ((uint32_t)0x42000000)
рд╕реЗ рдмрджрд▓реЗрдВ
class InterceptAddr; InterceptAddr addr; #define PERIPH_BB_BASE (addr)
рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХрд▓реА рдореЗрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдЯ ...
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг stm32f10x_i2c.c рдлрд╝рд╛рдЗрд▓ рд╣реИ:
FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG) { __IO uint32_t i2creg = 0, i2cxbase = 0; тАж. i2cxbase = (uint32_t)I2Cx; тАж.
рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрддреЗ рдХреЗ рдкрддреЗ рдХреЛ рд░реЛрдХрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рд╢рд╛рдпрдж Valgrind рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЬреНрдЮрд╛рдкрди рд╣реИред рдЦреИрд░, рдЙрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрддреЗ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХрдирд╛ рд╣реИред
рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╡рд╣рд╛рдБ рдирд╣реАрдВ рджрд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ ... рдореИрдВ рд▓рдЧрднрдЧ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓рдЧрднрдЧ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП
Int * p = ... *p = 0x123;
рдкрддреЗ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдореВрд▓реНрдп рдирд┐рд╣рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕реЗ рдореЗрдордЪреЗрдХ рд╕реЗ рдирд╣реАрдВ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, Valgrind рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛, рдкреНрд░рд╛рдЪреАрди рд░рд╛рдХреНрд╖рд╕ рдХреЗ рдЕрдВрджрд░ libVEX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓реАред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдереЛрдбрд╝рд╛ рдкреНрд░рд▓реЗрдЦрди рдкрд╛рдпрд╛ рдЧрдпрд╛ред
рддрдм рдЕрдиреНрдп рдбреАрдмреАрдЖрдИ рдЙрдкрдХрд░рдг рдереЗред
рдлреНрд░реАрдбрд╛, рдбрд╛рдпрдиреЗрдорд┐рдХ RIO, рдХреБрдЫ рдФрд░, рдФрд░ рдЕрдВрдд рдореЗрдВ рдкрд┐рдВрдЯреВрд▓ рдорд┐рд▓рд╛ред
рдкрд┐рдирдЯреВрд▓ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдереЗред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдЙрдкрдХрд░рдг рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд┐рдХрд▓рд╛, рдпрд╣ рдХреЗрд╡рд▓ рдмрдВрдж рдХреЛрдб рдФрд░ рдХреЗрд╡рд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЛрдВ рдкрд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕ https://godbolt.org/z/nJS9ci рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред
X64 рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ MOV рд╣реЛрдЧрд╛ред
рдФрд░ x86 рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП MOV рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП MOVZ рд╣реЛрдЧрд╛ред
рдиреЛрдЯ: рдЕрдиреБрдХреВрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдкрд╛рдпрд▓рд░ рд╣реЗрдбрд┐рдВрдЧ INS_AddInstrumentFunction(EmulateLoad, 0); INS_AddInstrumentFunction(EmulateStore, 0); ..... static VOID EmulateLoad(INS ins, VOID *v) {
рдкрддреЗ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо loadAddr2Reg рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, loadAddr2Reg рдХреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ ... рддрд░реНрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рднреА рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ 32-рдмрд┐рдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░, рдорд▓реНрдЯреАрдореЗрд╕рдЯреИрд╕реНрдЯрд╕реНрдЯреЛрд░, рдФрд░ 64 рд╕реНрдЯреЛрд░ рдкрд░ Reg2Addr рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рд▓рд╛рдЗрди рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдирдХрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрднреА-рдХрднреА рд╕рд┐рдЧрдлреЙрд▓реНрдЯ рдореЗрдВ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдЦреБрдж рдХреЛ рд▓рд┐рдЦрдиреЗ рджреЗрдВ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рддрд░реНрдХреЛрдВ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдЖрдЧреЗ рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рди рдкрддреЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдирд╛ рд╣реИ, рд╣рдорд╛рд░реЗ stm32f103C8T6 рдЪрд┐рдк рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдореИрдк рджреЗрдЦреЗрдВ:

рд╣рдо SRAM рдФрд░ PERIPH_BASE рдХреЗ рдкрддреЗ рдкрд░ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН 0x20000000 рд╕реЗ 0x20000000 + 128 * 1024 рдФрд░ 0x40000000 рд╕реЗ 0x40030000 рддрдХред рдареАрдХ рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐, рдХрд╛рдлреА рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╣рдЯрд╛ рдирд╣реАрдВ рд╕рдХрддреЗ рдереЗред рдЗрд╕рд▓рд┐рдП, рдЗрди рдкрддреЛрдВ рдкрд░ рд░рд┐рдХреЙрд░реНрдб sigfault рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рдкрддреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛, рди рдХрд┐ рдЗрд╕ рдЪрд┐рдк рдХрд╛ рджреВрд╕рд░рд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд░рдгреА рдкрд░ рдХрд╣рддреЗ рд╣реИрдВред
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЖрдзрд╛рд░ рдкрддреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЗрдВ рдЙрдирдХреЗ рд╕рдВрдХреЗрдд рд╕реНрдерд╛рди рджреЗрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдмрдЬрд╛рдп рд╕реБрд░реНрдЦрд┐рдпреЛрдВ рдореЗрдВ
#define SRAM_BASE ((uint32_t)0x20000000) #define PERIPH_BASE ((uint32_t)0x40000000)
рдХрд░рдирд╛
#define SRAM_BASE ((AddrType)pAddrSRAM) #define PERIPH_BASE ((AddrType)pAddrPERIPH)
рдФрд░ рдЬрд╣рд╛рдВ pAddrSRAM рдФрд░ pAddrPERIPH рдкреВрд░реНрд╡-рдЖрд╡рдВрдЯрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдХреЗрдд рд╣реИрдВред
рдЕрдм, рд╣рдорд╛рд░реЗ PinTool рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЖрд╡рд╢реНрдпрдХ рдкрддреЛрдВ рдХреА рдорд░рдореНрдордд рдХреИрд╕реЗ рдХреАред
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХрд╛рдо рдЬреЛ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░реЛрдХрдирд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░рдгреА рд╕рдВрд░рдЪрдирд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
typedef struct { addr_t start_addr;
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдЪрд┐рдк рдХреЗ рд▓рд┐рдП рдпрд╣ рдЗрддрдирд╛ рднрд░рд╛ рд╣реЛрдЧрд╛
map->start_addr = (addr_t)pAddrSRAM; map->end_addr = 96*1024; map->reference_addr = (addr_t)0x20000000U;
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░реЛрдХрдирд╛ рдФрд░ рдЙрд╕рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рд▓реЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
IMG_AddInstrumentFunction(ImageReplace, 0); .... static memoryTranslate *replaceMemoryMapFun(CONTEXT *context, AFUNPTR orgFuncptr, sizeMemoryTranslate_t *size) { PIN_CallApplicationFunction(context, PIN_ThreadId(), CALLINGSTD_DEFAULT, orgFuncptr, NULL, PIN_PARG(memoryTranslate *), &addrMap, PIN_PARG(sizeMemoryTranslate_t *), size, PIN_PARG_END()); sizeMap = *size; return addrMap; } static VOID ImageReplace(IMG img, VOID *v) { RTN freeRtn = RTN_FindByName(img, NAME_MEMORY_MAP_FUNCTION); if (RTN_Valid(freeRtn)) { PROTO proto_free = PROTO_Allocate(PIN_PARG(memoryTranslate *), CALLINGSTD_DEFAULT, NAME_MEMORY_MAP_FUNCTION, PIN_PARG(sizeMemoryTranslate_t *), PIN_PARG_END()); RTN_ReplaceSignature(freeRtn, AFUNPTR(replaceMemoryMapFun), IARG_PROTOTYPE, proto_free, IARG_CONTEXT, IARG_ORIG_FUNCPTR, IARG_FUNCARG_ENTRYPOINT_VALUE, 0, IARG_END); } }
рдФрд░ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯреЗрдб рдлрдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрдирд╛рдПрдВ:
memoryTranslate * getMemoryMap(sizeMemoryTranslate_t * size){ ... return memoryMap; }
рд╕рдмрд╕реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рдо рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдУрдкреЗрди рдУрд╕реАрдбреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдкрд┐рдирдЯреВрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдкрд┐рдирдЯреВрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдВрджреНрд░рд╣ рдирд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХреА рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

0x123 рдкрддреЗ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛ:

рдЖрдЗрдП рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
рдкрд┐рдирдЯреВрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд░реНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ
рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреБрдЫ рдереНрд░реЗрдб рд╕рд░рдгреА рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдкрддреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЧреЗрдЯрдореЗрд░реАрдкреЙрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдорд╛рд░рд╛ рдкрд┐рдирдЯреВрд▓ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ 0x123 рдкрддреЗ рдкрд░ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░реЗрдВрдЧреЗ
PinTool рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╕реНрд╕реИрдЧреЗрдЯреЗрдб рдПрдбреНрд░реЗрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ
рдирд┐рдпрдВрддреНрд░рдг рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╣рдорд╛рд░реЗ рдЯреНрд░реИрдХ рдХрд┐рдП рдЧрдП рдкрддреЗ рдкрд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╣реИ 0x123ред StoreReg2Addr рдлрд╝рдВрдХреНрд╢рди рдЗрд╕рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрддрд╛ рд╣реИ
рдФрд░ OpenOCD рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ
рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рдпрдВрддреНрд░рдг рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╣реАрдВ-рдХрд╣реАрдВ рдкрдарди рдкрддрд╛ 0x123 рдкрд░ рд╣реЛрддрд╛ рд╣реИред
loadAddr2Reg рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ OpenOCD рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред
OpenOCD рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдордХреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗ рдореВрд▓реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ
рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬрд╛рд░реА рд╣реИред
рдпрд╣ рд╕рдм рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣реИ, рдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ рд╣реЛрдВрдЧреЗред