{"id":459287,"date":"2025-05-12T03:45:28","date_gmt":"2025-05-12T03:45:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=459287"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=459287","title":{"rendered":"<span>\u041f\u0438\u0448\u0435\u043c \u043e\u0434\u0438\u043d \u00abexe\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 3-\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u041e\u0421 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0435\u0442, \u044d\u0442\u043e <strong>\u043d\u0435 <\/strong>\u0448\u0443\u0442\u043a\u0430 \u0438 \u043d\u0435 \u043a\u043b\u0438\u043a\u0431\u0435\u0439\u0442. \u0422\u0430\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e &#8212; \u043f\u0440\u0430\u0432\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0445\u0430\u043a.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u044f ARM \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 4-\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 <strong>\u0431\u0435\u0437 <\/strong>\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 ABI. \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 <strong>\u044d\u043b\u044c\u0444\u044b <\/strong>\u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0438\u0437 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439. \u041f\u043e\u0433\u0440\u0443\u0437\u0438\u0432\u0448\u0438\u0441\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u0430 &#8212; \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0441\u043c\u043e\u0433 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u0435\u0437 \u0447\u0438\u0442\u0435\u0440\u0441\u0442\u0432\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 VM! \u0412\u0441\u0435\u0445 \u0433\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u043f\u043e\u0434 \u043a\u0430\u0442!<\/p>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ol>\n<li>\n<p><a href=\"#1\">\u0417\u0430\u0447\u0435\u043c \u0438 \u043f\u043e\u0447\u0435\u043c\u0443?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#2\">\u0424\u043e\u0440\u043c\u0430\u0442 ELF, ABI ARM \u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#3\">\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 Windows Mobile (CE)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#4\">\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 MRP\/MRE<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#5\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ol>\n<h2>\u276f\u00a0\u0417\u0430\u0447\u0435\u043c \u0438 \u043f\u043e\u0447\u0435\u043c\u0443?<\/h2>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<p>\u0414\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e, \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u043c 2001 \u0433\u043e\u0434\u0443, \u043c\u0438\u0440 \u0443\u0432\u0438\u0434\u0435\u043b \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u044f\u043f\u043e\u043d\u0441\u043a\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d &#8212; Sony CMD-J70. \u0415\u0449\u0451 \u0434\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441 Ericsson, Sony \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0432\u0430\u0439\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u044f\u0434\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u043e \u0438 \u043c\u043e\u0434\u0434\u0435\u0440\u043e\u0432 \u0432\u0441\u0435\u0445 \u043c\u0430\u0441\u0442\u0435\u0439. \u0423\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043b\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c \u043f\u043b\u0430\u043d\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043a\u043e\u043f\u0430\u043b\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u0443 \u043d\u0435 \u043b\u0435\u043d\u044c: \u043a\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u043b \u0433\u0440\u0430\u0444\u0438\u043a\u0443, \u043a\u0442\u043e-\u0442\u043e \u043f\u0438\u0441\u0430\u043b <strong>\u043f\u0430\u0442\u0447\u0438<\/strong>, \u0430 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0434\u0430\u0436\u0435 <strong>PRGLoader &#8212; <\/strong>\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0432\u043d\u0435\u0448\u043d\u0438\u0445 &#171;\u044d\u043a\u0437\u0435\u0448\u043d\u0438\u043a\u043e\u0432&#187;, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0448\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 <strong>\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 <\/strong>\u0441\u043e\u0444\u0442, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435!<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f39\/401\/88c\/f3940188caf3faa30cbb571845b17ee9.jpg\" width=\"170\" height=\"312\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f39\/401\/88c\/f3940188caf3faa30cbb571845b17ee9.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f39\/401\/88c\/f3940188caf3faa30cbb571845b17ee9.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u043b\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043d\u043e \u0432 \u0442\u0435 \u0433\u043e\u0434\u044b \u044d\u0442\u043e \u0431\u044b\u043b \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0430\u043b \u0431\u0430\u0448\u043a\u0438: \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e Java\/Mophun-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0438 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u043b\u0435\u0437\u0442\u044c \u0432 \u0434\u0435\u0431\u0440\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0430 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c \u0432\u0441\u0451 \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0448\u044c: \u0441\u0432\u0435\u0442\u043e\u043c\u0443\u0437\u044b\u043a\u0443 \u0438\u0437 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0438\u0433\u0440\u044b, \u043e\u0431\u043e\u0438 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d&#8230; \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0440\u043e\u0433\u0438\u0445 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 \u0441 Symbian \u0438 Windows Mobile \u043d\u0430 \u0431\u043e\u0440\u0442\u0443!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93d\/c2f\/b6a\/93dc2fb6a40b39e104684269b2eab811.jpg\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/93d\/c2f\/b6a\/93dc2fb6a40b39e104684269b2eab811.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93d\/c2f\/b6a\/93dc2fb6a40b39e104684269b2eab811.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u043c Siemens M55 \u0438 \u0443\u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0434\u0438\u043a\u043e\u0432\u0438\u043d\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 Infineon C166, \u0434\u0430\u0436\u0435 \u043f\u043e\u0434 \u044d\u0442\u043e\u0442 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0434\u0435\u043b\u0430\u043b\u0438\u0441\u044c \u043f\u0430\u0442\u0447\u0438 \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u0438\u0433\u0440\u0430. \u041d\u043e \u0440\u0430\u0441\u0441\u0432\u0435\u0442 \u043c\u043e\u0434\u0434\u0438\u043d\u0433-\u0441\u0446\u0435\u043d\u044b Siemens \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0451\u043b \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b S-Gold \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 ARM926EJ-S, \u043a\u043e\u0433\u0434\u0430 \u0432 ~2004 \u0433\u043e\u0434\u0443 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0437\u043b\u043e\u043c\u0430\u043b\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 BootKEY \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 2006 \u0433\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 <strong>\u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 C \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0430\u043c\u044b\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c ADS. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0431\u0438\u043d\u043b\u043e\u0430\u0434\u0435\u0440\u0430 \u0434\u043b\u044f CMD-J70, &#171;\u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a&#187; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0443\u0433\u043e\u043d\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 RTOS \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u043b \u0432 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e <strong>\u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0443\u044e <\/strong>\u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/186\/04c\/f9a\/18604cf9a05c9f665e0c2bfbe48d4c9f.jpg\" alt=\"\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0439\u043c\u0443\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438...\" title=\"\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0439\u043c\u0443\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438...\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/186\/04c\/f9a\/18604cf9a05c9f665e0c2bfbe48d4c9f.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/186\/04c\/f9a\/18604cf9a05c9f665e0c2bfbe48d4c9f.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0439\u043c\u0443\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438&#8230;<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u0440\u0430\u0441\u043a\u0430\u043f\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u0438\u0437\u0443\u0447\u0430\u043b\u0438 \u0435\u0451 \u0438 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0435\u0451 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u0447\u0442\u044b \u0441 \u043f\u0440\u0435\u0434\u043a\u043e\u043c \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439, \u0430\u0441\u044c\u043a\u0438 (NatICQ), \u043f\u043e\u0440\u0442\u044b \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 MP3 \u0432 \u0442\u0435\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445, \u0433\u0434\u0435 \u0435\u0451 \u043e\u0442\u0440\u043e\u0434\u044f\u0441\u044c \u043d\u0435 \u0431\u044b\u043b\u043e! \u0418 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Card Explorer&#8217;\u0435! \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u044d\u043b\u044c\u0444\u043e\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u044b\u043b \u0425\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0438\u043d @Ilya_ZX<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e3\/655\/35a\/6e365535a095f04fb520f89ab540b8ec.jpg\" width=\"645\" height=\"518\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6e3\/655\/35a\/6e365535a095f04fb520f89ab540b8ec.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e3\/655\/35a\/6e365535a095f04fb520f89ab540b8ec.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0447\u0442\u043e \u043e\u0434\u043d\u0438\u043c\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c\u0438 Siemens \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u0431\u044b\u043b\u0438 \u0435\u0434\u0438\u043d\u044b, \u0442\u043e \u0432\u044b \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0435\u0441\u044c &#8212; \u0432\u0435\u0434\u044c \u043a\u0440\u0443\u0447\u0435 \u0431\u044b\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e &#171;\u043c\u043e\u0442\u043e\u0440\u043e\u043b\u043a\u0438&#187;! \u0412 2004-\u0433\u043e\u0434\u0443, \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u0430\u044f Motorola E398 \u0441 \u0434\u0432\u0443\u043c\u044f \u0433\u0440\u043e\u043c\u043a\u0438\u043c\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430\u043c\u0438, \u0441\u0432\u0435\u0442\u043e\u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MicroSD-\u0444\u043b\u044d\u0448\u0435\u043a, \u0441\u0442\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0431\u0435\u0441\u0442\u0441\u0435\u043b\u043b\u0435\u0440\u043e\u043c \u0438 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u043a \u0441\u0435\u0431\u0435 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432, \u0447\u0435\u043c Siemens. \u0420\u0435\u0431\u044f\u0442\u0430 \u0441\u043f\u043b\u043e\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 MotoFan, \u043d\u0430\u0448\u043b\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0435 \u0438 \u0445\u0430\u043a\u043d\u0443\u043b\u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e RSA-\u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0443 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c Seem&#8217;\u044b (\u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430 EEPROM), \u043d\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 &#8212; <strong>\u043c\u043e\u043d\u0441\u0442\u0440\u043f\u0430\u043a\u0438<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u043b\u0438 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u043c \u0442\u0438\u0445\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430\u043c \u0438 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, @Andy51 \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440 (EP1) \u0434\u043b\u044f E398, \u0440\u0430\u0441\u043a\u043e\u043f\u0430\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430, \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043d\u0430 Linux-\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043e\u0442 Motorola&#8230;<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e8d\/354\/d57\/e8d354d57ba2b003e9eed300ea832806.jpg\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e8d\/354\/d57\/e8d354d57ba2b003e9eed300ea832806.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e8d\/354\/d57\/e8d354d57ba2b003e9eed300ea832806.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u044e\u0442 \u043c\u043e\u043b &#171;\u0431\u044b\u043b\u043e \u0438 \u0431\u044b\u043b\u043e, \u043c\u043e\u0439 \u0430\u0439\u0444\u043e\u043d\/\u0441\u044f\u043e\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0444\u0442 \u0438 \u044d\u0442\u0438 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u044f \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b&#8230;&#187;. \u041d\u043e \u043a\u0430\u043a \u0431\u044b \u043d\u0435 \u0442\u0430\u043a: \u043f\u0440\u043e \u043c\u043e\u0442\u043e\u0440\u043e\u043b\u043a\u0438 \u0438 \u0441\u0438\u043c\u0435\u043d\u0441\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0451 \u0447\u0430\u0449\u0435 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442, \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043c\u043e\u0434\u0434\u0435\u0440\u0441\u043a\u043e\u0435 \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043f\u0438\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0441\u043e\u0444\u0442 \u0438 \u0434\u0430\u043b\u0435\u0435 \u043a\u043e\u043b\u0443\u043f\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443. \u0412\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 @EXL \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0440\u0443\u0442\u043e\u0439 \u0441\u043e\u0444\u0442\u0440\u0435\u043d\u0434\u0435\u0440 \u0434\u043b\u044f E398 \u0438 \u0432 2025 \u0433\u043e\u0434\u0443 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0432\u0437\u043b\u043e\u043c\u0430\u043b C350, @Azq2 \u043f\u0438\u043b\u0438\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Infineon S-Gold \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 \u043c\u043e\u0434\u0434\u0438\u043d\u0433 \u0441\u0446\u0435\u043d\u0443 \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c\u043d\u044b\u0445, \u043d\u043e \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432!<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c2\/218\/d01\/1c2218d01c524ddd74a1eac63eb175d5.png\" width=\"422\" height=\"540\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1c2\/218\/d01\/1c2218d01c524ddd74a1eac63eb175d5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c2\/218\/d01\/1c2218d01c524ddd74a1eac63eb175d5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u043b\u044c\u0444\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u0439: \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043a\u0440\u043e\u043c\u0435 printf, \u043b\u044e\u0431\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0440\u0435\u0431\u0443\u0442\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 (\u043d\u0430 \u0441\u0438\u043c\u0435\u043d\u0441\u0430\u0445 \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u043c &#171;\u043f\u0438\u043a&#187;), \u0430 API \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u043c &#8212; \u043d\u0438 \u043e \u043a\u0430\u043a\u0438\u0445 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u044c\u0444\u0430\u0445 \u0438 \u0440\u0435\u0447\u0438 \u043d\u0435 \u0438\u0434\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e: \u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430 \u0441\u0432\u043e\u0438\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043d\u0430\u0447\u0438\u043d\u043a\u043e\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0430\u0442\u0447\u0435\u0439 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439? \u041f\u0440\u0438\u043d\u044f\u0432\u0448\u0438\u0441\u044c \u0437\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 ABI ARM \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Elf, \u044f \u043d\u0430\u0447\u0430\u043b \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b&#8230;<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ab3\/35f\/5cb\/ab335f5cb7337d5559ef9b6f37848c2c.png\" width=\"411\" height=\"227\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ab3\/35f\/5cb\/ab335f5cb7337d5559ef9b6f37848c2c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ab3\/35f\/5cb\/ab335f5cb7337d5559ef9b6f37848c2c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u276f\u00a0\u0424\u043e\u0440\u043c\u0430\u0442 ELF, ABI ARM \u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d<\/h2>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u044d\u043b\u044c\u0444\u044b? Elf &#8212; \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u0432 \u043c\u0438\u0440\u0435 Unix-\u0441\u0438\u0441\u0442\u0435\u043c, \u0442\u0430\u043a \u0438 \u0432 embedded-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0421\u0430\u043c\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u044b &#8212; GCC \u0438 clang\/llvm, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 .exe (PE) \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 Windows. \u041f\u043e\u043c\u0438\u043c\u043e \u043a\u043e\u0434\u0430, Elf \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0446\u0438\u0439 \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0431\u043a\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445: \u043e\u0442 x86, \u0434\u043e risc-v.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35a\/927\/0c9\/35a9270c92c9d0bdd5592e08287b438c.png\" width=\"632\" height=\"346\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/35a\/927\/0c9\/35a9270c92c9d0bdd5592e08287b438c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/35a\/927\/0c9\/35a9270c92c9d0bdd5592e08287b438c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 &#8212; \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u043a\u043e\u0434\u0430, \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0435\u0451 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u0421\u0440\u0435\u0434\u0438 \u0441\u0435\u043a\u0446\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445: <\/p>\n<p><strong>.text<\/strong> &#8212; \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 MMU R X (\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435)<\/p>\n<p><strong>.data<\/strong> &#8212; \u043f\u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u043c\u0435\u0435\u0442 \u0444\u043b\u0430\u0433\u0438 R W (\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 C:<\/p>\n<pre><code class=\"cpp\">int a[] = { 1, 2, 3 };<\/code><\/pre>\n<p><strong>.bss<\/strong> &#8212; \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u0431\u0438\u0442\u044b \u043d\u0443\u043b\u044f\u043c\u0438. \u0418\u043c\u0435\u0435\u0442 \u0442\u0435 \u0436\u0435 \u0444\u043b\u0430\u0433\u0438, \u0447\u0442\u043e \u0438 .data.<\/p>\n<p><strong>.rodata<\/strong> &#8212; \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b: \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435, const-\u043f\u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0442.\u043f, \u0438\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0430\u0433 R \u0438 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0441 MMU \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u044d\u0442\u0443 \u0441\u0435\u043a\u0446\u0438\u044e \u043f\u043e\u0432\u043b\u0435\u0447\u0435\u0442 SIGSEGV.<\/p>\n<p>\u0417\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a Elf \u0432 \u044f\u0434\u0440\u0435 \u041e\u0421. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (.so, \u0430\u043d\u0430\u043b\u043e\u0433 \u0432 Windows &#8212; .dll). \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 ABI \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 <strong>\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 <\/strong>(PIC \u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0435 &#8212; PIE), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043e\u0442\u0442\u0443\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PIC \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0442\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <strong>\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439<\/strong> (GOT) \u0438 <strong>\u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439<\/strong>. \u0420\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 &#8212; \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Elf, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u0443\u0442\u0451\u043c <strong>\u043f\u0430\u0442\u0447\u0438\u043d\u0433\u0430 <\/strong>\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 .got &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187;: \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0441\u0430\u043c \u043a\u043e\u0434 (.text) \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c (\u0434\u0430\u0431\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432) \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a GOT \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e PC, \u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u043c GOT (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043c\u0430\u0441\u0441\u0438\u0432 void* addresses[]) \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x0. \u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043b\u0438\u043d\u043a\u0435\u0440\u0430 &#8212; \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 GOT: \u0432 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e <strong>got[address] += baseAddress<\/strong>.<br \/>\u0420\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 literal pools \u0432 \u043e\u0431\u0445\u043e\u0434 GOT, \u0435\u0441\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/791\/239\/d9e\/791239d9ecd7f6efe4a364a2ebc6709c.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 BattDump \u0434\u043b\u044f Motorola\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 BattDump \u0434\u043b\u044f Motorola\" width=\"687\" height=\"602\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/791\/239\/d9e\/791239d9ecd7f6efe4a364a2ebc6709c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/791\/239\/d9e\/791239d9ecd7f6efe4a364a2ebc6709c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 BattDump \u0434\u043b\u044f Motorola<\/figcaption><\/div>\n<\/figure>\n<p>\u0420\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0435\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f <strong>\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a\u0435\u0440<\/strong> \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 \u043c\u0438\u0440\u0435 Unix (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 <strong>ld.so<\/strong>, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e &#171;not found&#187; \ud83d\ude42 ), \u0430 \u0441\u0430\u043c\u0438\u0445 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0412 ARM \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f <strong>R_ARM_REL32<\/strong><\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 0x0 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0435\u0437 PIC, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0441\u0438\u043c \u043b\u0438\u043d\u043a\u0435\u0440 (&#8212;emit-relocs) \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0435\u0445 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u0445 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0432\u0441\u0451 \u0442\u0435\u0445 \u0436\u0435 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u0412\u043c\u0435\u0441\u0442\u043e <strong>R_ARM_REL32<\/strong>, \u043b\u0438\u043d\u043a\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 <strong>R_ARM_ABS32<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<br \/>\u0421 \u0442\u0430\u043a\u0438\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043a\u0440\u0430\u0442\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f GOT \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0451\u0445 LDR \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0432\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430: \u0438\u0437 Literal pool \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 \u0437\u0430\u0442\u0435\u043c \u0438\u0437 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/171\/e91\/f67\/171e91f67cd6eb5584eeb68f940da072.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 NES\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 NES\" width=\"639\" height=\"193\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/171\/e91\/f67\/171e91f67cd6eb5584eeb68f940da072.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/171\/e91\/f67\/171e91f67cd6eb5584eeb68f940da072.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 NES<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<li>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u0435\u0437\u0434\u0435, \u043d\u043e \u0432 ARM \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 embedded-\u0441\u0440\u0435\u0434\u0435: \u043a\u043e\u0434 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 \/rwpi \u0438 \/ropi \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0438 \u043e\u0442 GOT, \u043d\u0438 \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 R9, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043a\u0443\u0434\u0430 \u043e\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 (mov r9, textSectionBase). \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c GOT, \u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438\u0437-\u0437\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441 PC \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0444\u0435\u0442\u0447\u0435\u043c \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e92\/2cc\/c58\/e922ccc58582a727785d4398c6b8aded.png\" alt=\"\" title=\"\" width=\"677\" height=\"448\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e92\/2cc\/c58\/e922ccc58582a727785d4398c6b8aded.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e92\/2cc\/c58\/e922ccc58582a727785d4398c6b8aded.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 MMU \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u0447\u0442\u043e \u0438\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PIC. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 (\u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430 Siemens \u0438 Motorola), \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 R9.<\/p>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440 \u043f\u043e\u0432\u0435\u0440\u0445 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u043e\u0432, \u043e\u0431\u0435\u0440\u043d\u0443\u0432 API \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a \u0432 \u0440\u044f\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c, \u0432\u0432\u043e\u0434\u043e\u043c, \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0432\u0443\u043a\u043e\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u044d\u043b\u044c\u0444\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c <strong>clang <\/strong>\u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 C99, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 single-header \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u0442\u0438\u043f\u0443 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432, \u0434\u0430 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043c\u0430\u043d\u0435\u0440 Ansi C, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043d\u0438\u0433\u0434\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043a\u0440\u043e\u043c\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u043b\u043e\u043a\u0430. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f74\/b30\/b4a\/f74b30b4a19a896216253e58654ff553.png\" width=\"753\" height=\"178\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f74\/b30\/b4a\/f74b30b4a19a896216253e58654ff553.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f74\/b30\/b4a\/f74b30b4a19a896216253e58654ff553.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0441\u0443\u0442\u043a\u0430\u043c\u0438 \u0438\u0433\u0440\u0430\u043b\u0441\u044f \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438 \u0438 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0434\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f \u043c\u043e\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043a\u043e\u0434 \u0438 \u043f\u043e \u0438\u0442\u043e\u0433\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043b\u0438\u043d\u043a\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043e\u0434\u0438\u043d .text (\u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d Program Header):<\/p>\n<pre><code class=\"cpp\">OUTPUT_FORMAT(\"elf32-littlearm\") SECTIONS { . = 0x0; .text : { *(.r9ptr) *(.text*) *(.data*) *(.bss*) *(.rodata*) *(.functions) }  .rel : { *(.rel*) }  \/DISCARD\/ : { *(.ARM.*) }  }<\/code><\/pre>\n<p>\u0418 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u043f\u0446\u0438\u0439 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, ABI \u0434\u043b\u044f FPU, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0432 \u043b\u0438\u043d\u043a\u0435\u0440\u0435 \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 (\u0438\u043d\u0430\u0447\u0435 \u0444\u0430\u0439\u043b\u044b \u0437\u0430\u0431\u0438\u0442\u044b \u043d\u0443\u043b\u044f\u043c\u0438 \u0438 \u0432\u0435\u0441\u044f\u0442 \u0446\u0435\u043b\u044b\u0445 64\u041a\u0431:<\/p>\n<pre><code class=\"cpp\">CLANGFLAGS = -mno-unaligned-access -O3 -ffast-math -ffixed-r9 -T ld.script -target armv5e-none-eabi -nostartfiles -fno-exceptions -fno-rtti -mfloat-abi=soft -I$(ELFROOT) -Ilibnesemu\/ LDDFLAGS = -Wl,-zmax-page-size=1,--emit-relocs<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434, \u044f \u043f\u0440\u0438\u043d\u044f\u043b\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440. \u0417\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0435 \u0440\u0443\u0433\u0430\u0439\u0442\u0435 &#8212; \u044d\u0442\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0435\u0434, \u0442\u0443\u0442 \u043c\u043e\u0436\u043d\u043e ;))<\/p>\n<p>\u041d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043b\u043e\u0430\u0434\u0435\u0440\u0443 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u044d\u043b\u044c\u0444\u0430 \u0438 \u0435\u0433\u043e \u0434\u043b\u0438\u043d\u0430. \u0417\u0430\u0434\u0430\u0447\u0430 \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a\u0430 &#8212; \u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0441\u044f \u0447\u0442\u043e \u043e\u043d \u0441\u043e\u0431\u0440\u0430\u043d \u0441 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<pre><code class=\"cpp\">    \/\/ Read and verify ELF header Elf32_Ehdr* hdr = (Elf32_Ehdr*)data;  PRINT(\"Loading ELF...\"); if(hdr-&gt;e_machine != EM_ARM) { PRINT(\"Not an EM_ARM executable\");  return 0; }  if(hdr-&gt;e_ident[EI_DATA] != PLATFORM_ELF_ENDIANESS) { PRINT(\"Endianess mismatch\");  return 0; \/\/ Wrong endianess }<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432 \u0441 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0442\u043e\u043c\u0443 \u0438\u043b\u0438 \u0438\u043d\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 \u0444\u0430\u0439\u043b\u0435: \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u0432\u044b\u0434\u0430\u043b \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440. \u041d\u0430 MMU-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0430\u0434\u0440\u0435\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0438\u043d\u0430\u0447\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043d\u0435 \u0434\u0430\u0441\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0444\u043b\u0430\u0433 EXEC!<\/p>\n<pre><code class=\"cpp\">    ret = (ExecInfo*)ExecAlloc(sizeof(ExecInfo));      sections = (Elf32_Phdr*)(&amp;data[hdr-&gt;e_phoff]); sh = (Elf32_Shdr*)&amp;data[hdr-&gt;e_shoff];     symSectionIndex = hdr-&gt;e_shstrndx;     codeSize = 0x0;  PRINT(\"Processing program headers\"); \/\/ Process program headers and determine total size     for(i = 0; i &lt; hdr-&gt;e_phnum; i++) {         Elf32_Phdr hdr = sections[i];          if(hdr.p_type == PT_LOAD) {             if(hdr.p_offset == 0x0)                 continue;              codeSize += hdr.p_memsz;         }     }  PRINT(\"Allocating memory for .text\");  textSection = (char*)ExecAlloc(codeSize);     textOffset = textSection;  ret-&gt;CodeSection = textSection;  if(!textSection) { free(ret); PRINT(\"Failed to allocate .text section\");  return 0; }<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0439\u0442\u0438 \u0441\u0435\u043a\u0446\u0438\u044e \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u0441 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u0433\u0434\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432:<\/p>\n<pre><code class=\"cpp\">   PRINT(\"Analyzing section table\"); for(i = 0; i &lt; hdr-&gt;e_shnum; i++) { Elf32_Shdr sec = sh[i];  if(sec.sh_type == SHT_STRTAB &amp;&amp; i != hdr-&gt;e_shstrndx &amp;&amp; strTable == 0) { strTable = &amp;data[sec.sh_offset]; PRINT(\"Found string table\"); }  if(sec.sh_type == SHT_SYMTAB) { PRINT(\"Found symbol table\"); symbols = (Elf32_Sym*)&amp;data[sec.sh_offset]; symNum = sec.sh_size \/ sizeof(Elf32_Sym); }  if(sec.sh_type == SHT_REL &amp;&amp; relocs == 0) { UtilPrint(\"Found relocations\"); relocs = (Elf32_Rel*)&amp;data[sec.sh_offset]; relNum = sec.sh_size \/ sizeof(Elf32_Rel); }  if(sec.sh_type == SHT_RELA) { PRINT(\"Found unsupported relocation types\"); return 0; } }  if(!strTable || !symbols) { free(ret); PRINT(\".strtab or .symtab not found\");  return 0; }<\/code><\/pre>\n<p>\u0410 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e ElfMain, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043b\u0443\u0436\u0438\u0442 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439! \u041d\u0430 \u044d\u0442\u043e\u043c, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u044d\u043b\u044c\u0444\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430 &#8212; \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c Main!<\/p>\n<pre><code class=\"cpp\">    PRINT(\"Relocation fix-up\"); for(i = 0; i &lt; relNum; i++) { Elf32_Rel rel = relocs[i]; int sym = ELF32_R_SYM(rel.r_info);  switch(ELF32_R_TYPE(rel.r_info)) { case R_ARM_ABS32: *((unsigned int*)&amp;textSection[rel.r_offset]) += (unsigned int)textSection; break; case R_ARM_JUMP24: break; case R_ARM_CALL: break; default: PRINT(\"Unsupported relocation type\"); } }  PRINT(\"Patching import table\");  \/\/ Analyze symbol table and patch all imported function pointers to real counterparts for(i = 0; i &lt; symNum; i++) { Elf32_Sym sym = symbols[i]; uint8_t* symName = &amp;strTable[sym.st_name];  int symType = ELF32_ST_TYPE(sym.st_info);  if(symType == STT_OBJECT &amp;&amp; strstr((const char*)symName, \"SYS_\")) { int funcNumber = ExecFindFunction(symName);  if(funcNumber == -1) { PRINT(\"Failed to import function: \"); UtilPrint((char*)symName); PRINT(\"\");  continue; }  \/\/drawDebug(FuncExportTable[funcNumber].Pointer == 0 ? \"Not OK\" : \"OK\");  *((unsigned int*)&amp;textSection[sym.st_value]) = (unsigned int)FuncExportTable[funcNumber].Pointer; }  if(symType == STT_FUNC &amp;&amp; strstr((const char*)symName, \"ElfMain\")) { PRINT(\"ElfMain function is found\");  ret-&gt;Main = (ExecMainFunction)&amp;textSection[sym.st_value]; }<\/code><\/pre>\n<p>\u0412 Elf \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f Platform Linkage Table. \u0414\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440 Siemens \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 SWI (\u0441\u0438\u0441\u043a\u043e\u043b\u043b\u044b, \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 x86 &#8212; int 10h \u0438 \u0442.\u043f.), Motorola \u0436\u0435 \u043f\u0430\u0442\u0447\u0438\u0442 thunk-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u043b\u0435\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0430\u043c\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/323\/827\/11b\/32382711be7fa70926a49c094d59671e.png\" alt=\"\" title=\"\" width=\"614\" height=\"111\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/323\/827\/11b\/32382711be7fa70926a49c094d59671e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/323\/827\/11b\/32382711be7fa70926a49c094d59671e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u044f\u0449\u043d\u0435\u0435. \u0412 \u043c\u043e\u0435\u043c \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a\u0435, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e-\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 .functions. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 asm, \u0441\u0438\u043c\u0432\u043e\u043b\u0443 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u043e\u0435 \u0438\u043c\u044f &#8212; \u0441 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c SYS_, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u044d\u043b\u044c\u0444\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u043f\u0430\u0442\u0447\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c thunk-\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">#ifndef LOADER #define IMPORT(name, ret, ...) __attribute__ ((section(\".functions\"))) ret (* name )( __VA_ARGS__ ) asm( \"SYS_\" #name ) #define IMPORTNOARGS(name, ret) __attribute__ ((section(\".functions\"))) ret (* name )() asm( \"SYS_\" #name ) #else #define IMPORT(name, ret, ...) ret name( __VA_ARGS__ ) #define IMPORTNOARGS(name, ret) ret name() #endif<\/code><\/pre>\n<p>\u0427\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0437\u0430\u0431\u0430\u0432\u043d\u043e\u0435, \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440 &#8212; \u0432 QEMU \u0441 GDB \u043f\u043e\u0434 Linux. \u041e\u0434\u043d\u0430\u043a\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u043b \u0435\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0435 \u0441 Windows Mobile. \u0410 \u0440\u0430\u0437 WM \u0441\u0442\u0430\u043b \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 &#8212; \u043d\u0430 \u043d\u0435\u043c \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d35\/859\/f06\/d35859f06cbb2704585b7ea53065c512.png\" width=\"1280\" height=\"791\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d35\/859\/f06\/d35859f06cbb2704585b7ea53065c512.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d35\/859\/f06\/d35859f06cbb2704585b7ea53065c512.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u276f\u00a0\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 Windows Mobile (CE)<\/h2>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0441\u044e \u0436\u0438\u0437\u043d\u044c \u044f \u0441\u0438\u0436\u0443 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043d\u0430 Windows, \u0430 WinAPI \u0432 CE \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u043b: \u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c stdlib \u0438\u0437 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 &#171;\u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a&#187;, \u0438\u043b\u0438 \u0436\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 newlib \u0432 clang\/gcc. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e libc \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d, \u043f\u043e \u0441\u0443\u0442\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 Windows, \u0432\u043e \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445 \u0431\u044b\u043b\u0438 \u043b\u0438\u0448\u044c \u0441\u0430\u043c\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e \u0442\u0438\u043f\u0443 malloc, free, memcpy, strcmp \u0438 \u0442.\u043f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434\u044b \u0438 \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u043b \u0438\u0437 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043b\u0438\u0448\u044c \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440 &#8212; \u0442.\u0435 malloc \u0438 free:<\/p>\n<pre><code class=\"cpp\">\/\/ stdlib IMPORT(elf_malloc, void*, int size); IMPORT(elf_free, void, void* ptr); \/*IMPORT(elf_strcmp, int, char* str1, char* str2); IMPORT(elf_strcpy, char*, char* dst, char* src); IMPORT(elf_strlen, int, char* str); IMPORT(elf_strstr, char*, char* string, char* substring); IMPORTNOARGS(elf_rand, int); IMPORT(elf_memcpy, void*, void* dst, const void* src, uint32_t length); IMPORT(elf_memset, void*, void* dst, int what, uint32_t length); IMPORT(elf_memmove, void*, void* dst, void* src, uint32_t length);*\/<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0441\u0440\u0430\u0437\u0443 \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u0438 \u0438\u0437 \u0445\u043e\u0441\u0442-\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0444\u0440\u0435\u0439\u043c\u0431\u0443\u0444\u0435\u0440, \u0430 \u0431\u043b\u0438\u0442\u0442\u0438\u043d\u0433, \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e \u0441\u0430\u043c. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u0435\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 (Motorola E398, Razr V3) \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c 2D GPU \u043e\u0442 ATI \u0438 Nvidia, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0438\u0441\u0443\u044e\u0442 (BitBLT) \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435  \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0435\u0437 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u044c\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f 565) \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043b\u043e\u0440\u043a\u0435\u0439. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0441\u043a\u0430\u043d\u043b\u0430\u0439\u043d\u0430\u043c \u0447\u0435\u0440\u0435\u0437 memcpy:<\/p>\n<pre><code class=\"cpp\">for(i = 0; i &lt; bitmap-&gt;Height; i++) {     for(j = 0; j &lt; bitmap-&gt;Width; j++)     {         LCD_PLOT_565(clamp(x + j, 0, lcd-&gt;Width), clamp(y + i, 0, lcd-&gt;Height), bmp[i * bitmap-&gt;Width + j]);     } }<\/code><\/pre>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0442\u043e\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u0440\u0443\u0442\u044b\u0435 \u0444\u0438\u0447\u0438 \u043f\u043e \u0442\u0438\u043f\u0443 \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0435-\u043c\u043e\u043d\u043e\u0448\u0438\u0440\u0438\u043d\u043d\u044b\u0445 \u0448\u0440\u0438\u0444\u0442\u043e\u0432, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043e\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f. \u041d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0442\u0430\u0451\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0442\u0430\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439: \u0440\u0430\u0437\u043d\u044b\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u044b \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0438 \u043d\u0435 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u0438\u043a\u0441\u0435\u043b\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044f \u043f\u043e\u0448\u0451\u043b \u043f\u043e \u043e\u043b\u0434\u043e\u0432\u043e\u043c\u0443 &#171;\u044d\u043c\u0431\u0435\u0434\u0434\u0435\u0440\u0441\u043a\u043e\u043c\u0443&#187; \u043f\u0443\u0442\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0431\u0438\u0442\u043c\u0430\u043f\u043d\u044b\u0435 \u0448\u0440\u0438\u0444\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 (\u043f\u043e\u043a\u0430) \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0438\u043d\u043a\u043e\u0432\u0430\u043d\u044b \u0441 \u0441\u0430\u043c\u0438\u043c \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a\u043e\u043c. <\/p>\n<pre><code class=\"cpp\">__inline int LcdDrawChar(LcdInfo* lcd, char chr, uint32_t x, uint32_t y, uint16_t color) { if(x &gt;= 0 &amp;&amp; y &gt;= 0 &amp;&amp; x + FONT_WIDTH &lt; lcd-&gt;Width &amp;&amp; y + FONT_HEIGHT &lt; lcd-&gt;Height) { int i, j; unsigned char* glyph = &amp;embedded_font[chr * 8];  for(i = 0; i &lt; FONT_HEIGHT; i++) { short* fb = &amp;((short*)lcd-&gt;Pixels)[(y + i) * lcd-&gt;Width + x];  for(j = 0; j &lt; FONT_WIDTH; j++) { if((*glyph &gt;&gt; (FONT_WIDTH - j)) &amp; 0x1) *fb = color;  fb++; }  glyph++; }  return true; }  return false; }  void LcdDrawString(LcdInfo* lcd, char* str, uint32_t x, uint32_t y, uint16_t color) { SWITCH_CONTEXT; if(lcd &amp;&amp; x &gt;= 0 &amp;&amp; y &gt;= 0) { unsigned int i;  for(i = 0; i &lt; strlen(str); i++) { if(!LcdDrawChar(lcd, str[i], x, y, color)) return; \/\/ Out of screen  x += FONT_WIDTH; } } END_CONTEXT; }<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0430\u0434\u0438\u0432 \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u0442\u0435\u043a\u0441\u0442\u0430:<\/p>\n<pre><code class=\"cpp\">#include &lt;system.h&gt;  int ElfMain(void* ptr) {   LcdInfo* lcd = lcdInit();    lcdDrawBitmap(lcd, bitmap, 0, 0);   lcdDrawString(lcd, \"Test\", 0, 0, COLOR_BLUE)    return 100; }<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/149\/40d\/33c\/14940d33c655cffb695da6ef11fb3b3e.jpg\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/149\/40d\/33c\/14940d33c655cffb695da6ef11fb3b3e.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/149\/40d\/33c\/14940d33c655cffb695da6ef11fb3b3e.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0439, \u0442\u0443\u0442 endianess \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u0430\u043a halfword) \u0441\u0431\u0438\u043b\u0441\u044f, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0451 \u0440\u0430\u0437:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/345\/b7f\/b16\/345b7fb1637b231921e783fef1ee38e0.jpg\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/345\/b7f\/b16\/345b7fb1637b231921e783fef1ee38e0.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/345\/b7f\/b16\/345b7fb1637b231921e783fef1ee38e0.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442! \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a \u043d\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430\u0445 \u043c\u043e\u0434\u0434\u0438\u043d\u0433\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u043d\u0430\u044e\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u044b&#8230;<\/p>\n<h2>\u276f\u00a0\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 MRP\/MRE<\/h2>\n<p><a class=\"anchor\" name=\"4\" id=\"4\"><\/a><\/p>\n<p>\u0418 \u0438\u043c\u044f \u044d\u0442\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435, \u0432\u0435\u0440\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u0434\u0432\u0443\u043c\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c &#8212; MRP \u0438 WRE. \u042d\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u044b\u0445 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 \u0441 2007 \u043f\u043e 2016 \u0433\u043e\u0434. \u0412\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0435\u0437\u0434\u0435: \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u0430\u044f Nokla TV E71\/E72, \u043a\u043b\u043e\u043d\u044b 6700, \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b Fly\/Explay\/DEXP \u0438 \u0434\u0430\u0436\u0435 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 Nokia \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 S30+ (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 230)!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12f\/e82\/b39\/12fe82b39526cd5baa3bcbd43c25f88a.jpeg\" alt=\"\u041b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u0430\u044f &quot;\u043d\u043e\u043a\u043b\u0430&quot;!\" title=\"\u041b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u0430\u044f &quot;\u043d\u043e\u043a\u043b\u0430&quot;!\" width=\"3456\" height=\"2304\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/12f\/e82\/b39\/12fe82b39526cd5baa3bcbd43c25f88a.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/12f\/e82\/b39\/12fe82b39526cd5baa3bcbd43c25f88a.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u0430\u044f &#171;\u043d\u043e\u043a\u043b\u0430&#187;!<\/figcaption><\/div>\n<\/figure>\n<p>\u0418 \u0445\u043e\u0442\u044f \u043b\u044e\u0434\u0438 \u0447\u0430\u0441\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0432 \u043f\u043b\u0430\u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 &#171;\u043d\u043e\u043d\u0435\u0439\u043c&#187;-\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c &#8212; \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e &#171;\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430&#187; dsm_gm.mrp \u0438 \u0432\u0432\u043e\u0434 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 *#220807# \u0432 \u043d\u043e\u043c\u0435\u0440\u043e\u043d\u0430\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u043d\u0430\u043b\u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u043e\u0441\u0442\u044b\u043b\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0438 \u0432 2010 \u0433\u043e\u0434\u0443 MediaTek \u0440\u0435\u0448\u0438\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c MRE (MAUI Runtime Environment), \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0430 \u0431\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438! SDK \u0434\u043b\u044f \u043e\u0431\u0435\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e <a href=\"https:\/\/archive.org\/details\/mre-sdk_developer\">\u043b\u0435\u0436\u0438\u0442 \u0432 \u0441\u0435\u0442\u0438<\/a>.<\/p>\n<p>\u041e\u0431\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043f\u043e \u0441\u0443\u0442\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0442\u0435\u043c \u0436\u0435 \u0441\u0430\u043c\u044b\u043c, \u0447\u0442\u043e \u0438 \u043c\u043e\u0439 \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a &#8212; \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 MMI (\u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430) \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c R9, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0434\u0435-\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0439 \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u043e\u0434\u0445\u043e\u0434, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c \u0434\u043b\u044f &#171;\u0441\u0432\u0438\u0447\u0438\u043d\u0433\u0430&#187; \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u043f\u0440\u0438\u0447\u0435\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 R9 \u044f \u0434\u0435\u043b\u0430\u043b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437-\u0437\u0430 \u0431\u0430\u0433\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0432 IAR:<\/p>\n<pre><code class=\"cpp\">#define SWITCH_CONTEXT unsigned int staticBase; __asm { MOV staticBase, sb; \\ LDR r0, [sb]; \\ MOV sb, r0 }  #define ELF_CONTEXT(ptr) unsigned int staticBase; void* elfStaticBase = ptr; __asm { MOV staticBase, sb; \\ MOV r9, elfStaticBase }  #define END_CONTEXT RestoreSB(staticBase);<\/code><\/pre>\n<p>\u041d\u043e \u044f \u043d\u0435 \u0443\u0447\u0435\u043b \u0442\u043e, \u0447\u0442\u043e MMI \u0445\u043e\u0442\u044c \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e event-based \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443, \u0432 \u043d\u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c while(true) {}, \u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440\u044b, \u0447\u0442\u043e \u0432\u043b\u0435\u0447\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044b\u043b\u0438 \u0441 \u0441\u0432\u0438\u0447\u0438\u043d\u0433\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0447\u0442\u043e \u043f\u043e \u0438\u0442\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u043e \u0438\u0442\u043e\u0433\u0443 \u044f \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u043d\u0430 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0431\u0440\u043e\u0441 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9c\/edb\/35d\/c9cedb35d1af95ac7fa3f001da8fc5e1.jpg\" alt=\"\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043d\u0435 \u0442\u0443\u0434\u0430? \u0420\u0435\u0431\u0443\u0442 \u0438 \u0441\u0438\u0434\u0438, \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0439 \u0441 printf!\" title=\"\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043d\u0435 \u0442\u0443\u0434\u0430? \u0420\u0435\u0431\u0443\u0442 \u0438 \u0441\u0438\u0434\u0438, \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0439 \u0441 printf!\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c9c\/edb\/35d\/c9cedb35d1af95ac7fa3f001da8fc5e1.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9c\/edb\/35d\/c9cedb35d1af95ac7fa3f001da8fc5e1.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043d\u0435 \u0442\u0443\u0434\u0430? \u0420\u0435\u0431\u0443\u0442 \u0438 \u0441\u0438\u0434\u0438, \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0439 \u0441 printf!<\/figcaption><\/div>\n<\/figure>\n<p> \u0412\u043e \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c, MRP \u0438 MRE \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u0430\u043a \u0442\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u043e\u043c \u0432\u0432\u043e\u0434\u0430 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e:<\/p>\n<pre><code class=\"cpp\"> LcdInfo* LcdInit() { LcdInfo* ret; ret = (LcdInfo*)malloc(sizeof(LcdInfo)); ret-&gt;Width = screenInfo.width; ret-&gt;Height = screenInfo.height; ret-&gt;Pixels = (void*)w_getScreenBuffer();  return ret; }  void LcdFree() {  }  void LcdLock(LcdInfo* info) {  }  void LcdFlush(LcdInfo* info) { mrc_refreshScreen(0, 0, 240, 320); }<\/code><\/pre>\n<p>\u0418 \u0432\u043e\u0442, \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0443\u0445 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u041e\u0421 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/015\/164\/cdc\/015164cdc38e5fcb1848c4994c52b177.jpg\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/015\/164\/cdc\/015164cdc38e5fcb1848c4994c52b177.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/015\/164\/cdc\/015164cdc38e5fcb1848c4994c52b177.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u276f\u00a0\u0410 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435 Hello, world?<\/h2>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u043e\u043b &#171;\u043e\u043a\u0435\u0439, \u0442\u0432\u043e\u0439 \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u043e \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435?&#187;. \u0418 \u043a\u043e\u043d\u0435\u0447\u043d\u043e-\u0436\u0435, \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0430\u0431\u044b \u0447\u0442\u043e, \u0430 \u0446\u0435\u043b\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 NES! \u0412 \u043a\u043e\u043d\u0446\u0435-\u043a\u043e\u043d\u0446\u043e\u0432, \u043e\u0434\u043d\u0430 \u0438\u0437 \u0446\u0435\u043b\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a\u0430 &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c Java-\u0438\u0433\u0440 \u0438 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 \u0438\u0437 \u043d\u0443\u043b\u0435\u0432\u044b\u0445.<\/p>\n<p>\u041a\u0430\u043a\u043e\u0435 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434, \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0432\u0435\u0441\u044c\u043c\u0430 \u0448\u0443\u0441\u0442\u0440\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 NES \u043e\u0442 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438\u0437 \u041a\u0438\u0442\u0430\u044f. \u041a\u043e\u0434 \u0431\u044b\u043b \u043d\u0435\u0432\u0430\u0436\u043d\u043e\u0433\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043f\u0438\u0440\u0430\u0439\u0442\u043e\u0432 \u0432 \u043d\u0451\u043c \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0430\u043c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0431\u044b\u043b \u0431\u044b\u0441\u0442\u0440\u044b\u0439 (\u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/github.com\/EXL\/P2kElfs\/tree\/master\/vNesC\">vNesC<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u044b\u043c source-\u043f\u043e\u0440\u0442\u043e\u043c Java-\u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 vNes \u043d\u0430 C), \u044f \u043e\u0442\u0432\u044f\u0437\u0430\u043b \u0435\u0433\u043e \u043e\u0442 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u043b\u0435\u0433\u043a\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043b\u044e\u0431\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0432\u0441\u0435\u0433\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<pre><code class=\"cpp\">typedef struct { uint16_t* FrameBuffer; uint8_t* JoyState; } emuContext;  emuContext* emuInitialize(); uint8_t emuLoadROM(void* rom, int length); void emuReset(); void emuDoFrame(); void emuShutdown();<\/code><\/pre>\n<p>\u0418, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u043e\u0440\u0442 \u043d\u0430 \u043d\u0430\u0448 \u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">#include &lt;string.h&gt;  #define FUNC_PROTOTYPES #include &lt;system.h&gt;  #include &lt;nes.h&gt; #include \"nes_rom.h\"  emu_context* ctx; LcdInfo* lcdInfo;  void EmuTick() { emuDoFrame();  LcdLock(lcdInfo); short* pixels = (short*)lcdInfo-&gt;Pixels;  for(int i = 0; i &lt; EMU_FRAMEBUFFER_HEIGHT; i++) { memcpy(&amp;pixels[i * lcdInfo-&gt;Width], &amp;ctx-&gt;FrameBuffer[i * EMU_FRAMEBUFFER_WIDTH], lcdInfo-&gt;Width * 2); }  LcdFlush(lcdInfo);  }  void EmuSetupTimer() { TimerAttach(1, EmuTick); \/\/ As fast as possible }  void EmuSetupRegularLoop() { while(true) EmuTick(); \/\/ TODO: If elfloader port will be usable on Android, add FPS limit :) }  int ElfMain(unsigned int* basePtr, void* test) { lcdInfo = LcdInit();  ctx = emuInitialize(); if(!emuLoadROM(nes_rom, sizeof(nes_rom))) { UtilPrint(\"Failed to load ROM\"); return 100; }  emuReset();  switch(GetMainLoopType()) { case PLATFORM_LOOP_MMI_TIMER: EmuSetupTimer(); break; case PLATFORM_LOOP_REGULAR: EmuSetupRegularLoop(); break; }  return 100; }<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fe5\/5ab\/15a\/fe55ab15a72da3359014d4bada57fd73.jpg\" alt=\"\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430 Galaxy S3.\" title=\"\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430 Galaxy S3.\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/fe5\/5ab\/15a\/fe55ab15a72da3359014d4bada57fd73.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fe5\/5ab\/15a\/fe55ab15a72da3359014d4bada57fd73.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0438\u0442\u0430\u0439\u0441\u043a\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430 Galaxy S3.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7bd\/c21\/98e\/7bdc2198eb9360f891b41bb6eeef82d3.jpg\" alt=\"\u0422\u0430 \u0441\u0430\u043c\u0430\u044f Nokla!\" title=\"\u0422\u0430 \u0441\u0430\u043c\u0430\u044f Nokla!\" width=\"1280\" height=\"1280\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7bd\/c21\/98e\/7bdc2198eb9360f891b41bb6eeef82d3.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7bd\/c21\/98e\/7bdc2198eb9360f891b41bb6eeef82d3.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0422\u0430 \u0441\u0430\u043c\u0430\u044f Nokla!<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91c\/8fc\/113\/91c8fc113170ef226d2b4c8825b7fbbe.jpg\" alt=\"QTek\" title=\"QTek\" width=\"1920\" height=\"1440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/91c\/8fc\/113\/91c8fc113170ef226d2b4c8825b7fbbe.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91c\/8fc\/113\/91c8fc113170ef226d2b4c8825b7fbbe.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>QTek<\/figcaption><\/div>\n<\/figure>\n<h2>\u276f\u00a0\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p><a class=\"anchor\" name=\"5\" id=\"5\"><\/a><\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0442\u0440\u0451\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c! \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0432\u0441\u0451 \u044d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e! \u041d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0432\u0437\u044f\u0442\u044c \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0432 \u0437\u0443\u0431\u044b \u0438 \u043d\u0435\u043c\u043d\u043e\u0436\u0435\u0447\u043a\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u044b\u0434\u0430\u0451\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0440\u0435\u043c\u043e\u043d\u0442\u0430, \u043c\u043e\u0434\u0434\u0438\u043d\u0433\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0433\u0430\u0434\u0436\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u043b\u0435\u0442 \u2014 \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043c\u043e\u0439 Telegram-\u043a\u0430\u043d\u0430\u043b \u202d\u00ab<a href=\"https:\/\/t.me\/monobogdann\">\u041a\u043b\u0443\u0431 \u0444\u0430\u043d\u0430\u0442\u043e\u0432 \u0431\u0430\u043b\u0434\u0435\u0436\u0430<\/a>\u202d\u00bb, \u043a\u0443\u0434\u0430 \u044f \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u0431\u044d\u043a\u0441\u0442\u0435\u0439\u0434\u0436\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0432\u0438\u0434\u0435\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u044b \u0438 \u0449\u0438\u0442\u043f\u043e\u0441\u0442\u044e. \u0410 \u0440\u043e\u043b\u0438\u043a\u0438 (\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u044e) \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 \u043c\u043e\u0451\u043c<a href=\"https:\/\/www.youtube.com\/@monobogdan\">\u00a0YouTube \u043a\u0430\u043d\u0430\u043b\u0435<\/a>.<\/p>\n<p><strong>\u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e! \u0420\u0430\u0437\u044b\u0441\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0435\u0432\u0430\u0439\u0441\u044b \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439!<\/strong><\/p>\n<p>\u0414\u0440\u0443\u0437\u044c\u044f! \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u044d\u043b\u044c\u0444\u043e\u0432, \u0442\u043e \u0441\u043f\u0435\u0448\u0443 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c: \u0434\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0430\u043c\u043e\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0433\u0440\u0443\u0448\u0435\u043a \u043f\u043e\u0434 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u043e\u0437\u044b\u0441\u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439! \u0412 2000-\u0445 \u0433\u043e\u0434\u0430\u0445, \u043a\u0438\u0442\u0430\u0439\u0446\u044b \u0447\u0430\u0441\u0442\u043e \u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u0435\u0448\u0435\u0432\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u0441 \u0438\u0433\u0440\u043e\u0432\u044b\u043c \u0443\u043a\u043b\u043e\u043d\u043e\u043c \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u0443 \u043d\u0438\u0445 \u0431\u044b\u043b\u043e \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0433\u0435\u0439\u043c\u043f\u0430\u0434\u0430 (\u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430) \u0438\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e A\/B, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b NES\/Sega. \u0424\u0438\u0448\u043a\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u043d\u043e\u0432\u044b\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b, \u0447\u0435\u043c \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e! \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0438 \u0432\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u0435\u0433\u043e \u0437\u0430\u0434\u043e\u043d\u0430\u0442\u0438\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0442\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435 \u0432 Telegram (@<a href=\"https:\/\/t.me\/monobogdan\">monobogdan<\/a>) \u0438\u043b\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b-\u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043d\u0430 Android (\u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0420\u0424 \u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u0430 Func Much-01), \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \ud83d\ude42<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1a9\/e35\/4bf\/1a9e354bf7c4f56904c44f03f93ae1e5.png\" width=\"1560\" height=\"1147\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1a9\/e35\/4bf\/1a9e354bf7c4f56904c44f03f93ae1e5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1a9\/e35\/4bf\/1a9e354bf7c4f56904c44f03f93ae1e5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u044f \u0438\u0449\u0443 \u0441\u0442\u0430\u0440\u044b\u0435 (2010-2014) \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0438 \u043d\u0430 \u0431\u0440\u0435\u043d\u0434\u043e\u0432\u044b\u0435 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b Samsung, Apple \u0438 \u0442. \u043f. \u041e\u043d\u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0447\u0438\u043f\u0441\u0435\u0442\u0430\u0445 \u0438 \u043f\u043e\u0434\u0434\u0430\u044e\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u043c\u043e\u0434\u0434\u0438\u043d\u0433\u0443, \u043f\u0430\u0440\u043e\u0447\u043a\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u0443\u0436\u0435 \u0432\u044b\u0448\u043b\u043e, \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0438 \u043f\u043e \u0438\u0445 \u043c\u043e\u0434\u0434\u0438\u043d\u0433\u0443! \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443 \u043a\u043e\u0433\u043e-\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0441\u0430\u043c\u044b\u0435 \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b Xiaomi (\u0441\u0435\u0440\u0438\u0438 Mi), Meizu (\u0435\u0449\u0451 \u043d\u0430 Exynos) \u0438\u043b\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043d\u0430 Linux (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Motorola EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E6, ZINE ZN5 \u0438 \u0442. \u043f., \u043e \u043d\u0438\u0445 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u0432\u0438\u0434\u0435\u043e \u0442. \u043a. \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u0445 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043b\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445, \u043f\u043e\u0434\u0434\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e\u043c\u0443 \u043c\u043e\u0434\u0434\u0438\u043d\u0433\u0443 \u0438 \u0431\u044b\u043b\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0434\u0430\u0436\u0435 Quake!). \u0412\u0441\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0434\u043e\u043d\u0430\u0442\u044b!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b66\/eee\/18b\/b66eee18b9c5e1a53c176d2c3358a47f.png\" width=\"700\" height=\"395\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b66\/eee\/18b\/b66eee18b9c5e1a53c176d2c3358a47f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b66\/eee\/18b\/b66eee18b9c5e1a53c176d2c3358a47f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a14\/f3f\/767\/a14f3f7670252de2229797bf7f836be6.jpg\" width=\"386\" height=\"408\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a14\/f3f\/767\/a14f3f7670252de2229797bf7f836be6.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a14\/f3f\/767\/a14f3f7670252de2229797bf7f836be6.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0410 \u0435\u0449\u0451 \u044f \u0434\u0435\u0440\u0436\u0443 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u043c\u043e\u0431\u0438\u043b\u044b \u0432 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u0437\u0438\u043d\u0435 \u043f\u0440\u0438 \u0441\u0435\u0431\u0435 (\u0432 \u0441\u043c\u044b\u0441\u043b\u0435, \u0432\u0441\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430) \u2014 Timeweb. \u041f\u043e\u0442\u043e\u043c\u0443 \u043d\u0430\u0433\u043b\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0442\u043e, \u0447\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0441\u0430\u043c \u2014\u00a0<\/strong><a href=\"https:\/\/timeweb.cloud\/?utm_source=habr&amp;utm_medium=banner&amp;utm_campaign=promo\"><strong>\u0432\u044d\u043b\u043a\u0430\u043c<\/strong><\/a><strong>:<\/strong><\/p>\n<blockquote>\n<p><a href=\"https:\/\/t.me\/timewebru\"><strong>\u041d\u043e\u0432\u043e\u0441\u0442\u0438, \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b\u00a0<\/strong><\/a><a href=\"http:\/\/Timeweb.Cloud\"><strong>Timeweb.Cloud<\/strong><\/a><a href=\"https:\/\/t.me\/timewebru\"><strong>\u00a0\u2014 \u0432 \u043d\u0430\u0448\u0435\u043c Telegram-\u043a\u0430\u043d\u0430\u043b\u0435<\/strong><\/a>\u00a0<strong>\u21a9<\/strong><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e94\/5e8\/3a6\/e945e83a6b2d72ceda80b1647f48eb4f.png\" alt=\"\u041e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u21a9\" title=\"\u041e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u21a9\" width=\"1560\" height=\"564\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e94\/5e8\/3a6\/e945e83a6b2d72ceda80b1647f48eb4f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e94\/5e8\/3a6\/e945e83a6b2d72ceda80b1647f48eb4f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><a href=\"https:\/\/timeweb.cloud\/?utm_source=habr&amp;utm_medium=banner&amp;utm_campaign=promo\"><strong><em>\u041e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/em><\/strong><\/a><strong><em> \u21a9<\/em><\/strong><\/figcaption><\/div>\n<\/figure>\n<p><strong>\u041f\u0435\u0440\u0435\u0434 \u043e\u043f\u043b\u0430\u0442\u043e\u0439 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0411\u043e\u043d\u0443\u0441\u044b \u0438 \u043f\u0440\u043e\u043c\u043e\u043a\u043e\u0434\u044b\u00bb \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u043c\u043e\u043a\u043e\u0434 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043a\u044d\u0448\u0431\u044d\u043a \u043d\u0430 \u0431\u0430\u043b\u0430\u043d\u0441.<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/timeweb\/articles\/906158\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0427\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">62.89% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u043e\u0440\u043c\u0430\u0441 \u0442\u0435\u043c\u0430. \u041c\u0443\u0436\u0438\u043a \u0441\u043a\u0430\u0437\u0430\u043b \u2014 \u043c\u0443\u0436\u0438\u043a \u0441\u0434\u0435\u043b\u0430\u043b, \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u041e\u0421 \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b!<\/span><span class=\"tm-article-poll__answer-votes\">61<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 62.89%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">13.4% <\/span><span class=\"tm-article-poll__answer-label\">\u042d\u0442\u043e \u2014 \u0447\u0438\u0442\u0435\u0440\u0441\u0442\u0432\u043e! \u0422\u0430\u043a \u043d\u0435\u0447\u0435\u0441\u0442\u043d\u043e!!! \u0412\u043e\u0442 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u044b \u0432\u0441\u0442\u0440\u043e\u0438\u0448\u044c \u0432 \u0432\u0438\u043d\u0434\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u043b\u044c\u0444\u043e\u0432 \u043f\u043e\u043c\u0438\u043c\u043e PE \u0438 \u0431\u0443\u0434\u0435\u0448\u044c \u0431\u0440\u0430\u043d\u0447\u0438\u0442\u044c \u043a\u043e\u0434 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 startup.s \u2014 \u0442\u0430\u043a \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c!<\/span><span class=\"tm-article-poll__answer-votes\">13<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 13.4%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">2.06% <\/span><span class=\"tm-article-poll__answer-label\">\u042d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0443\u0444\u0442\u0430!<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 2.06%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">3.09% <\/span><span class=\"tm-article-poll__answer-label\">\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435 \u0447\u0442\u043e \u043d\u0435 \u0432 \u0442\u0435\u043c\u0443, \u043d\u043e Mach-O &gt; Elf &gt; PE<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 3.09%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">4.12% <\/span><span class=\"tm-article-poll__answer-label\">\u0412\u043e, bodyawm \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0441 Xtensa. \u0422\u0430\u043a\u0438 \u0430\u0441\u0438\u043b\u0438\u043b ELF!<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 4.12%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">8.25% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u043e \u043d\u0438\u0430\u0441\u0438\u043b\u0438\u043b \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438!<\/span><span class=\"tm-article-poll__answer-votes\">8<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 8.25%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">6.19% <\/span><span class=\"tm-article-poll__answer-label\">\u0418 \u0447\u0442\u043e, \u0434\u0430\u0436\u0435 APCS \u043d\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432\u0430\u043b \u0441 AAPCS \u0438 APCS-CE? \u041d\u0435 \u0432\u0435\u0440\u044e<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 6.19%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 97 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 24 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/timeweb\/articles\/906158\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0427\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u043e \u0441\u0442\u0430\u0442\u044c\u0435?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">88.62% <\/span><span class=\"tm-article-poll__answer-label\">\u042d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0442\u043e\u0440\u0442. \u0422\u0430\u043a\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043d\u0443\u0436\u043d\u044b \u0425\u0430\u0431\u0440\u0443!<\/span><span class=\"tm-article-poll__answer-votes\">109<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 88.62%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0.81% <\/span><span class=\"tm-article-poll__answer-label\">\u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u0440\u0442!!! \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u0443\u0447\u043f\u043e\u043f\u0430 \u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0433\u043e \u0440\u044f\u0434\u043e\u0432\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e!!!<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0.81%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">4.07% <\/span><span class=\"tm-article-poll__answer-label\">\u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u0440\u0442!!! \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043d\u0443\u0436\u043d\u044b \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0438\u0442\u0430!<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 4.07%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">6.5% <\/span><span class=\"tm-article-poll__answer-label\">\u0413\u0434\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u043c\u043e\u0434\u0434\u0438\u043d\u0433\u043e\u043c \u0412\u0410\u0417 2110?!<\/span><span class=\"tm-article-poll__answer-votes\">8<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 6.5%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 123 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.    \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 22 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/906158\/\"> https:\/\/habr.com\/ru\/articles\/906158\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0435\u0442, \u044d\u0442\u043e <strong>\u043d\u0435 <\/strong>\u0448\u0443\u0442\u043a\u0430 \u0438 \u043d\u0435 \u043a\u043b\u0438\u043a\u0431\u0435\u0439\u0442. \u0422\u0430\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e &#8212; \u043f\u0440\u0430\u0432\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0445\u0430\u043a.<\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0437\u0430\u0434\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u044f ARM \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 4-\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 <strong>\u0431\u0435\u0437 <\/strong>\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0438 ABI. \u041c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0435 <strong>\u044d\u043b\u044c\u0444\u044b <\/strong>\u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0438\u0437 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439. \u041f\u043e\u0433\u0440\u0443\u0437\u0438\u0432\u0448\u0438\u0441\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b, \u044f \u043f\u0440\u0438\u0448\u0451\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u0430 &#8212; \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u0441\u043c\u043e\u0433 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u0435\u0437 \u0447\u0438\u0442\u0435\u0440\u0441\u0442\u0432\u0430 \u043f\u043e \u0442\u0438\u043f\u0443 VM! \u0412\u0441\u0435\u0445 \u0433\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u043f\u043e\u0434 \u043a\u0430\u0442!<\/p>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ol>\n<li>\n<p><a href=\"#1\">\u0417\u0430\u0447\u0435\u043c \u0438 \u043f\u043e\u0447\u0435\u043c\u0443?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#2\">\u0424\u043e\u0440\u043c\u0430\u0442 ELF, ABI ARM \u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#3\">\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 Windows Mobile (CE)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#4\">\u041f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430 MRP\/MRE<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#5\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ol>\n<h2>\u276f\u00a0\u0417\u0430\u0447\u0435\u043c \u0438 \u043f\u043e\u0447\u0435\u043c\u0443?<\/h2>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<p>\u0414\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e, \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u043c 2001 \u0433\u043e\u0434\u0443, \u043c\u0438\u0440 \u0443\u0432\u0438\u0434\u0435\u043b \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u044b\u0439 \u044f\u043f\u043e\u043d\u0441\u043a\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d &#8212; Sony CMD-J70. \u0415\u0449\u0451 \u0434\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441 Ericsson, Sony \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0432\u0430\u0439\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u044f\u0434\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u043e \u0438 \u043c\u043e\u0434\u0434\u0435\u0440\u043e\u0432 \u0432\u0441\u0435\u0445 \u043c\u0430\u0441\u0442\u0435\u0439. \u0423\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043b\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c \u043f\u043b\u0430\u043d\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043a\u043e\u043f\u0430\u043b\u0438 \u0432\u0441\u0435 \u043a\u043e\u043c\u0443 \u043d\u0435 \u043b\u0435\u043d\u044c: \u043a\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u043b \u0433\u0440\u0430\u0444\u0438\u043a\u0443, \u043a\u0442\u043e-\u0442\u043e \u043f\u0438\u0441\u0430\u043b <strong>\u043f\u0430\u0442\u0447\u0438<\/strong>, \u0430 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0434\u0430\u0436\u0435 <strong>PRGLoader &#8212; <\/strong>\u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0432\u043d\u0435\u0448\u043d\u0438\u0445 &#171;\u044d\u043a\u0437\u0435\u0448\u043d\u0438\u043a\u043e\u0432&#187;, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0448\u0438\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 <strong>\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 <\/strong>\u0441\u043e\u0444\u0442, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435!<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u043b\u043e\u0436\u043d\u043e \u0441\u0435\u0431\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043d\u043e \u0432 \u0442\u0435 \u0433\u043e\u0434\u044b \u044d\u0442\u043e \u0431\u044b\u043b \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0430\u043b \u0431\u0430\u0448\u043a\u0438: \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e Java\/Mophun-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043b\u0430\u0434\u0430\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c \u0438 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u043b\u0435\u0437\u0442\u044c \u0432 \u0434\u0435\u0431\u0440\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0430 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c \u0432\u0441\u0451 \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0448\u044c: \u0441\u0432\u0435\u0442\u043e\u043c\u0443\u0437\u044b\u043a\u0443 \u0438\u0437 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0438\u0433\u0440\u044b, \u043e\u0431\u043e\u0438 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d&#8230; \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0440\u043e\u0433\u0438\u0445 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430\u0445 \u0441 Symbian \u0438 Windows Mobile \u043d\u0430 \u0431\u043e\u0440\u0442\u0443!<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u0441 \u0432\u0430\u043c\u0438 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u043e \u043b\u0435\u0433\u0435\u043d\u0434\u0430\u0440\u043d\u043e\u043c Siemens M55 \u0438 \u0443\u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0434\u0438\u043a\u043e\u0432\u0438\u043d\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 Infineon C166, \u0434\u0430\u0436\u0435 \u043f\u043e\u0434 \u044d\u0442\u043e\u0442 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0434\u0435\u043b\u0430\u043b\u0438\u0441\u044c \u043f\u0430\u0442\u0447\u0438 \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u0438\u0433\u0440\u0430. \u041d\u043e \u0440\u0430\u0441\u0441\u0432\u0435\u0442 \u043c\u043e\u0434\u0434\u0438\u043d\u0433-\u0441\u0446\u0435\u043d\u044b Siemens \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0451\u043b \u0441 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b S-Gold \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 ARM926EJ-S, \u043a\u043e\u0433\u0434\u0430 \u0432 ~2004 \u0433\u043e\u0434\u0443 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0437\u043b\u043e\u043c\u0430\u043b\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 BootKEY \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 2006 \u0433\u043e\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 <strong>\u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 C \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0430\u043c\u044b\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c ADS. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0431\u0438\u043d\u043b\u043e\u0430\u0434\u0435\u0440\u0430 \u0434\u043b\u044f CMD-J70, &#171;\u044d\u043b\u044c\u0444\u044f\u0442\u043d\u0438\u043a&#187; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0443\u0433\u043e\u043d\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 RTOS \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u043b \u0432 \u0431\u044e\u0434\u0436\u0435\u0442\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e <strong>\u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0443\u044e <\/strong>\u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u043e\u0439\u043c\u0443\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438&#8230;<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u0440\u0430\u0441\u043a\u0430\u043f\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u0438\u0437\u0443\u0447\u0430\u043b\u0438 \u0435\u0451 \u0438 \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0435\u0451 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e\u0447\u0442\u044b \u0441 \u043f\u0440\u0435\u0434\u043a\u043e\u043c \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439, \u0430\u0441\u044c\u043a\u0438 (NatICQ), \u043f\u043e\u0440\u0442\u044b \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0440\u0435\u0442\u0440\u043e-\u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 \u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 MP3 \u0432 \u0442\u0435\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445, \u0433\u0434\u0435 \u0435\u0451 \u043e\u0442\u0440\u043e\u0434\u044f\u0441\u044c \u043d\u0435 \u0431\u044b\u043b\u043e! \u0418 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438\u043b\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Card Explorer&#8217;\u0435! \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u044d\u043b\u044c\u0444\u043e\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u044b\u043b \u0425\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0438\u043d @Ilya_ZX<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0447\u0442\u043e \u043e\u0434\u043d\u0438\u043c\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c\u0438 Siemens \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u044b \u0431\u044b\u043b\u0438 \u0435\u0434\u0438\u043d\u044b, \u0442\u043e \u0432\u044b \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0435\u0441\u044c &#8212; \u0432\u0435\u0434\u044c \u043a\u0440\u0443\u0447\u0435 \u0431\u044b\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e &#171;\u043c\u043e\u0442\u043e\u0440\u043e\u043b\u043a\u0438&#187;! \u0412 2004-\u0433\u043e\u0434\u0443, \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u0430\u044f Motorola E398 \u0441 \u0434\u0432\u0443\u043c\u044f \u0433\u0440\u043e\u043c\u043a\u0438\u043c\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430\u043c\u0438, \u0441\u0432\u0435\u0442\u043e\u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 MicroSD-\u0444\u043b\u044d\u0448\u0435\u043a, \u0441\u0442\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c \u0431\u0435\u0441\u0442\u0441\u0435\u043b\u043b\u0435\u0440\u043e\u043c \u0438 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u043a \u0441\u0435\u0431\u0435 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432, \u0447\u0435\u043c Siemens. \u0420\u0435\u0431\u044f\u0442\u0430 \u0441\u043f\u043b\u043e\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 MotoFan, \u043d\u0430\u0448\u043b\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0435 \u0438 \u0445\u0430\u043a\u043d\u0443\u043b\u0438 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e RSA-\u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0443 \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c Seem&#8217;\u044b (\u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430 EEPROM), \u043d\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 &#8212; <strong>\u043c\u043e\u043d\u0441\u0442\u0440\u043f\u0430\u043a\u0438<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u043b\u0438 \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u043c \u0442\u0438\u0445\u0438\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430\u043c \u0438 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445 \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, @Andy51 \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440 (EP1) \u0434\u043b\u044f E398, \u0440\u0430\u0441\u043a\u043e\u043f\u0430\u043b\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430, \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043d\u0430 Linux-\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b \u043e\u0442 Motorola&#8230;<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u044e\u0442 \u043c\u043e\u043b &#171;\u0431\u044b\u043b\u043e \u0438 \u0431\u044b\u043b\u043e, \u043c\u043e\u0439 \u0430\u0439\u0444\u043e\u043d\/\u0441\u044f\u043e\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0444\u0442 \u0438 \u044d\u0442\u0438 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u044f \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b&#8230;&#187;. \u041d\u043e \u043a\u0430\u043a \u0431\u044b \u043d\u0435 \u0442\u0430\u043a: \u043f\u0440\u043e \u043c\u043e\u0442\u043e\u0440\u043e\u043b\u043a\u0438 \u0438 \u0441\u0438\u043c\u0435\u043d\u0441\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0451 \u0447\u0430\u0449\u0435 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442, \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043c\u043e\u0434\u0434\u0435\u0440\u0441\u043a\u043e\u0435 \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u043f\u0438\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0441\u043e\u0444\u0442 \u0438 \u0434\u0430\u043b\u0435\u0435 \u043a\u043e\u043b\u0443\u043f\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443. \u0412\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 @EXL \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043a\u0440\u0443\u0442\u043e\u0439 \u0441\u043e\u0444\u0442\u0440\u0435\u043d\u0434\u0435\u0440 \u0434\u043b\u044f E398 \u0438 \u0432 2025 \u0433\u043e\u0434\u0443 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0432\u0437\u043b\u043e\u043c\u0430\u043b C350, @Azq2 \u043f\u0438\u043b\u0438\u0442 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 Infineon S-Gold \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 \u043c\u043e\u0434\u0434\u0438\u043d\u0433 \u0441\u0446\u0435\u043d\u0443 \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c\u043d\u044b\u0445, \u043d\u043e \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432!<\/p>\n<figure class=\"\"><\/figure>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u043b\u044c\u0444\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u0438\u0439: \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043a\u0440\u043e\u043c\u0435 printf, \u043b\u044e\u0431\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0437\u0430\u0432\u0438\u0441\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0440\u0435\u0431\u0443\u0442\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 (\u043d\u0430 \u0441\u0438\u043c\u0435\u043d\u0441\u0430\u0445 \u0441 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u043c &#171;\u043f\u0438\u043a&#187;), \u0430 API \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u043c &#8212; \u043d\u0438 \u043e \u043a\u0430\u043a\u0438\u0445 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u044b\u0445 \u044d\u043b\u044c\u0444\u0430\u0445 \u0438 \u0440\u0435\u0447\u0438 \u043d\u0435 \u0438\u0434\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043d\u0435 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e: \u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430 \u0441\u0432\u043e\u0438\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043d\u0430\u0447\u0438\u043d\u043a\u043e\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u043d\u0430 \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0430\u0442\u0447\u0435\u0439 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439? \u041f\u0440\u0438\u043d\u044f\u0432\u0448\u0438\u0441\u044c \u0437\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 ABI ARM \u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 Elf, \u044f \u043d\u0430\u0447\u0430\u043b \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b&#8230;<\/p>\n<figure class=\"\"><\/figure>\n<h2>\u276f\u00a0\u0424\u043e\u0440\u043c\u0430\u0442 ELF, ABI ARM \u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d<\/h2>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u044d\u0442\u0438 \u0441\u0430\u043c\u044b\u0435 \u044d\u043b\u044c\u0444\u044b? Elf &#8212; \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u0432 \u043c\u0438\u0440\u0435 Unix-\u0441\u0438\u0441\u0442\u0435\u043c, \u0442\u0430\u043a \u0438 \u0432 embedded-\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0421\u0430\u043c\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u044b &#8212; GCC \u0438 clang\/llvm, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 .exe (PE) \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 Windows. \u041f\u043e\u043c\u0438\u043c\u043e \u043a\u043e\u0434\u0430, Elf \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0446\u0438\u0439 \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0431\u043a\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445: \u043e\u0442 x86, \u0434\u043e risc-v.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 &#8212; \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u043a\u043e\u0434\u0430, \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0435\u0451 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c. \u0421\u0440\u0435\u0434\u0438 \u0441\u0435\u043a\u0446\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445: <\/p>\n<p><strong>.text<\/strong> &#8212; \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 MMU R X (\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435)<\/p>\n<p><strong>.data<\/strong> &#8212; \u043f\u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u043c\u0435\u0435\u0442 \u0444\u043b\u0430\u0433\u0438 R W (\u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 C:<\/p>\n<pre><code class=\"cpp\">int a[] = { 1, 2, 3 };<\/code><\/pre>\n<p><strong>.bss<\/strong> &#8212; \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u0431\u0438\u0442\u044b \u043d\u0443\u043b\u044f\u043c\u0438. \u0418\u043c\u0435\u0435\u0442 \u0442\u0435 \u0436\u0435 \u0444\u043b\u0430\u0433\u0438, \u0447\u0442\u043e \u0438 .data.<\/p>\n<p><strong>.rodata<\/strong> &#8212; \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b: \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435, const-\u043f\u0440\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0442.\u043f, \u0438\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0430\u0433 R \u0438 \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0441 MMU \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u044d\u0442\u0443 \u0441\u0435\u043a\u0446\u0438\u044e \u043f\u043e\u0432\u043b\u0435\u0447\u0435\u0442 SIGSEGV.<\/p>\n<p>\u0417\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a Elf \u0432 \u044f\u0434\u0440\u0435 \u041e\u0421. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (.so, \u0430\u043d\u0430\u043b\u043e\u0433 \u0432 Windows &#8212; .dll). \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0430\u0434\u0440\u0435\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 ABI \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 <strong>\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043a\u043e\u0434 <\/strong>(PIC \u0438 \u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0435 &#8212; PIE), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043e\u0442\u0442\u0443\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f PIC \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0442\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <strong>\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439<\/strong> (GOT) \u0438 <strong>\u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439<\/strong>. \u0420\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 &#8212; \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Elf, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u0443\u0442\u0451\u043c <strong>\u043f\u0430\u0442\u0447\u0438\u043d\u0433\u0430 <\/strong>\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 .got &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187;: \u0438\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0441\u0430\u043c \u043a\u043e\u0434 (.text) \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c (\u0434\u0430\u0431\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432) \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a GOT \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e PC, \u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u043c GOT (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043c\u0430\u0441\u0441\u0438\u0432 void* addresses[]) \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x0. \u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043b\u0438\u043d\u043a\u0435\u0440\u0430 &#8212; \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 GOT: \u0432 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e <strong>got[address] += baseAddress<\/strong>.<br \/>\u0420\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 literal pools \u0432 \u043e\u0431\u0445\u043e\u0434 GOT, \u0435\u0441\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0435.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 BattDump \u0434\u043b\u044f Motorola<\/figcaption><\/div>\n<\/figure>\n<p>\u0420\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0435\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f <strong>\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a\u0435\u0440<\/strong> \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0432 \u043c\u0438\u0440\u0435 Unix (\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 <strong>ld.so<\/strong>, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e &#171;not found&#187; \ud83d\ude42 ), \u0430 \u0441\u0430\u043c\u0438\u0445 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0412 ARM \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f <strong>R_ARM_REL32<\/strong><\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443 0x0 &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0435\u0437 PIC, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0441\u0438\u043c \u043b\u0438\u043d\u043a\u0435\u0440 (&#8212;emit-relocs) \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0435\u0445 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u0445 \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0432\u0441\u0451 \u0442\u0435\u0445 \u0436\u0435 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u0412\u043c\u0435\u0441\u0442\u043e <strong>R_ARM_REL32<\/strong>, \u043b\u0438\u043d\u043a\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0438 <strong>R_ARM_ABS32<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c.<br \/>\u0421 \u0442\u0430\u043a\u0438\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043a\u0440\u0430\u0442\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f GOT \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0451\u0445 LDR \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0432\u0430 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430: \u0438\u0437 Literal pool \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 \u0437\u0430\u0442\u0435\u043c \u0438\u0437 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 NES<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<li>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u0435\u0437\u0434\u0435, \u043d\u043e \u0432 ARM \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 embedded-\u0441\u0440\u0435\u0434\u0435: \u043a\u043e\u0434 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 \/rwpi \u0438 \/ropi \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0438 \u043e\u0442 GOT, \u043d\u0438 \u0438\u043c\u0435\u0435\u0442 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u0440\u0435\u043b\u043e\u043a\u0430\u0446\u0438\u0439. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 R9, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u043a\u0443\u0434\u0430 \u043e\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 (mov r9, textSectionBase). \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c GOT, \u043d\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438\u0437-\u0437\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441 PC \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u0444\u0435\u0442\u0447\u0435\u043c \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 MMU \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u044d\u043b\u044c\u0444\u043b\u043e\u0430\u0434\u0435\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e \u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u0447\u0442\u043e \u0438\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-459287","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/459287","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=459287"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/459287\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=459287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=459287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=459287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}