{"id":327232,"date":"2022-01-10T08:48:45","date_gmt":"2022-01-10T08:48:45","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327232"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327232","title":{"rendered":"<span>\u0423\u043c\u0435\u0449\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0443\u044e 16-\u0431\u0438\u0442\u043d\u0443\u044e VM \u0432 125 \u0441\u0442\u0440\u043e\u043a \u0421\u0438<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/597925\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ga\/xj\/hv\/gaxjhv9crzfooyrxl9ptda6jpjw.png\"\/><\/div>\n<p><\/a><br \/>  \u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0421\u0438 \u0438 \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u041a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0442\u044c\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 ASM, \u043f\u043b\u044e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<a name=\"habracut\"><\/a><\/p>\n<p>  \u041a\u043e\u0434 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u042111, \u0438 \u043e\u043d \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/nomemory\/lc3-vm\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0441\u0430\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <code><a href=\"https:\/\/github.com\/nomemory\/lc3-vm\/blob\/main\/vm.c\">vm.c<\/a><\/code>:<\/p>\n<pre><code class=\"bash\">git clone git@github.com:nomemory\/lc3-vm.git<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u0421\u0438-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c, \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043d\u0435 \u043d\u043e\u0432\u044b, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u044f \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432\u0430\u043c \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430. <\/p>\n<p>  \u0422\u0435\u043c \u0436\u0435, \u043a\u0442\u043e \u0433\u043e\u0442\u043e\u0432 \u043f\u043e\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u0421\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>fwrite <\/code>\u0438 <code>fread<\/code>).<\/p>\n<p>  \u0411\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u0447\u0435\u0441\u0442\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0431\u0435\u0437 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0441\u0442\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0442\u0435\u043c\u044b. \u041b\u0443\u0447\u0448\u0438\u043c \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u044f \u043d\u0430\u0445\u043e\u0436\u0443 <i><a href=\"https:\/\/justinmeiners.github.io\/lc3-vm\/\">Write your own Virtual Machine<\/a><\/i> <a href=\"https:\/\/github.com\/justinmeiners\">\u0414\u0436\u0430\u0441\u0442\u0438\u043d\u0430 \u041c\u0435\u0439\u0435\u0440\u0441\u0430<\/a> \u0438 <a href=\"https:\/\/github.com\/rpendleton\">\u0420\u0430\u0439\u0430\u043d\u0430 \u041f\u0435\u043d\u0434\u043b\u0442\u043e\u043d\u0430<\/a>. \u0418\u0445 \u043a\u043e\u0434 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u0415\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0441 \u0438\u0445, \u0442\u043e \u043e\u043d\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435, \u0438 \u043a\u043e\u0434 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c.<\/p>\n<h2><font color=\"#3AC1EF\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/font><\/h2>\n<p>  <\/p>\n<ul>\n<li>\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b<\/li>\n<li>\u041c\u043e\u0434\u0435\u043b\u044c \u0444\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430 <\/li>\n<li>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b:<br \/> \n<ul>\n<li>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/li>\n<li>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b<\/li>\n<li>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438:<br \/> \n<ul>\n<li>add \u2013 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/li>\n<li>and \u2013 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u0418\u00bb<\/li>\n<li>ld \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 RPC + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/li>\n<li>ldi \u2013 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/li>\n<li>ldr \u2013 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0431\u0430\u0437\u0443 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/li>\n<li>lea \u2013 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430<\/li>\n<li>not \u2013 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/li>\n<li>st \u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/li>\n<li>sti \u2013 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/li>\n<li>str \u2013 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u0431\u0430\u0437\u0443 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/li>\n<li>jmp \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434<\/li>\n<li>jsr \u2013 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c<\/li>\n<li>br \u2013 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435<\/li>\n<li>trap:<br \/> \n<ul>\n<li>tgetc<\/li>\n<li>toutc<\/li>\n<li>tputs<\/li>\n<li>tin<\/li>\n<li>thalt<\/li>\n<li>tinu16<\/li>\n<li>toutu16<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>   \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c:  <\/p>\n<ul>\n<li>\u041d\u0430\u0448\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/li>\n<\/ul>\n<\/li>\n<li>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/li>\n<li>\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430<\/li>\n<\/ul>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b<\/font><\/h2>\n<p>  \u0412 \u043c\u0438\u0440\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0442\u0435\u0440\u043c\u0438\u043d VM (\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430) \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442\/\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443\/\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. <\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0432 \u043e\u0431\u0449\u0435\u043c, \u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438:  <\/p>\n<ul>\n<li><i>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b. \u041e\u043d\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0431\u0449\u0438\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u043d\u0435 \u043c\u0435\u0448\u0430\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434. <\/li>\n<li><i>\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043d\u044b\u0435<\/i>. \u0422\u0430\u043a\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0449\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u0431\u0435\u0437\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u043a \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0441\u0440\u0435\u0434\u0435. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_virtual_machine\">JVM<\/a>.<\/li>\n<\/ul>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b.\u041e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Little_Computer_3\">\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 LC-3<\/a> \u0438 \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u0432\u0438\u0434 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 LC3. <\/p>\n<blockquote><p>LC-3, \u043e\u043d \u0436\u0435 Little Computer 3, \u044d\u0442\u043e \u0432\u0438\u0434 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430. \u041e\u043d \u0441\u043d\u0430\u0431\u0436\u0435\u043d \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0421\u0438.   <\/p><\/blockquote>\n<p>  \u042d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u0436\u0435\u043d, \u0447\u0435\u043c x86 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043d\u043e \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043f\u0435\u0440\u0435\u043a\u043b\u0438\u043a\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0441 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u044f\u0437\u044b\u043a\u0430\u043c\u0438. \u042d\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0435\u0433\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043e\u043d \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u043c\u0438.<\/p>\n<p>  \u0421 \u0446\u0435\u043b\u044c\u044e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043c\u044b \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u043b\u0438 \u043d\u0430\u0448\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e LC-3 \u043e\u0442: \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 (<code>PSR<\/code>), \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439, \u0441\u0442\u0435\u043a\u0430 \u0441\u0443\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430. \u041c\u044b \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u043e\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0431\u0443\u0434\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c (<code>stdin<\/code>, <code>stdout<\/code>) \u0447\u0435\u0440\u0435\u0437 <code>traps<\/code>.<\/p>\n<h2><font color=\"#3AC1EF\">\u041c\u043e\u0434\u0435\u043b\u044c \u0444\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430<\/font><\/h2>\n<p>  \u041e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430\u0448\u0430 VM, \u043a\u0430\u043a \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Von_Neumann_architecture\"> \u043c\u043e\u0434\u0435\u043b\u0438 \u0444\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430<\/a> \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: \u0426\u041f\u0423, \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/-j\/-a\/h2\/-j-ah2kug642si5hgivrjtjcwvk.png\"\/><\/div>\n<p>  \u0426\u041f\u0423, \u0438\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u00ab\u0441\u0445\u0435\u043c\u043e\u0439, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0439 \u0437\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u043c\u0438\u00bb. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0426\u041f\u0423 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0442\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f: \u0410\u041b\u0423, \u0423\u0423 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b.  <\/p>\n<ul>\n<li><b>\u0410\u041b\u0423<\/b> \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u043e-\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0445\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 <code>ADD<\/code>, <code>XOR<\/code>, \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438 \u0442.\u0434.).<\/li>\n<li><b>\u0423\u0423<\/b>, \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0426\u041f\u0423. <\/li>\n<li><b>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b <\/b>\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u043e\u0442\u0430\u043c\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0426\u041f\u0423. \u0410\u041b\u0423 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e (\u0445\u043e\u0442\u044f \u044d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u0426\u041f\u0423 \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<\/ul>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u044c.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0439 \u00ab\u043c\u0430\u0441\u0441\u0438\u0432\u00bb <code>w <\/code>\u0441\u043b\u043e\u0432 \u0438\u0437 <code>N<\/code>\u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u043e\u0435. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435. \u041a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438\u0431\u043e \u043e\u0434\u043d\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043b\u0438\u0431\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0438\u0441\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0435 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f).<\/p>\n<p>  \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c.<\/p>\n<h2><font color=\"#3AC1EF\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f VM<\/font><\/h2>\n<p>  \u041d\u0430\u0448\u0430 VM \u0431\u0443\u0434\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c;<\/li>\n<li>\u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <code>RPC <\/code>\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c;<\/li>\n<li>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 (\u043f\u0435\u0440\u0432\u044b\u0435 4 \u0431\u0438\u0442\u0430) \u0438\u0437 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043d\u0435\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b;<\/li>\n<li>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043c\u0435\u0442\u043e\u0434, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0439 \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439;<\/li>\n<li>\u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c <code>RPC <\/code>\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ga\/xj\/hv\/gaxjhv9crzfooyrxl9ptda6jpjw.png\"\/><\/div>\n<h3><font color=\"#3AC1EF\">\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c<\/font><\/h3>\n<p>  \u0423 \u043d\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u044b <code>W=UINT16_MAX<\/code> \u0441\u043b\u043e\u0432, \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 <code>N=16<\/code> \u0431\u0438\u0442. \u0421 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0421\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">uint16_t PC_START = 0x3000; uint16_t mem[UINT16_MAX] = {0};<\/code><\/pre>\n<p>  <code>UINT16_MAX<\/code> \u2013 \u044d\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 <code>uint16_t<\/code> (16-\u0431\u0438\u0442\u043d\u043e\u0435 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0446\u0435\u043b\u043e\u0435), <code>UINT16_MAX=65535<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435, \u0442\u043e \u043d\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\/\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0431\u043e\u043b\u0435\u0435, \u0447\u0435\u043c 65535 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438. \u041f\u043e\u043d\u0438\u043c\u0430\u044e, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u044b\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d \u044d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e, \u043d\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0434\u0430\u043b\u0435\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0431\u044b\u043b\u0438 \u043a\u0443\u0434\u0430 \u0441\u043a\u0440\u043e\u043c\u043d\u0435\u0435. \u0422\u0430\u043a \u0447\u0442\u043e, 65535 \u2013 \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435, \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 ASCII \u0438\u0433\u0440\u0443\u0448\u0435\u043a \u0438 \u0438\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u041f\u043e \u043e\u0431\u0449\u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u043d\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 <code>0\u04453000<\/code>. \u0421\u043b\u043e\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0440\u0435\u0437\u0435\u0440\u0432\u0435 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u043e\u0439 \u041e\u0421. \u041d\u043e \u0443 \u043a\u043e\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0432\u0441\u0435 \u044d\u0442\u043e?<\/p>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0430\u0440\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f <code>(mr(...))<\/code> \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 <code>(mw(...))<\/code> \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c:<\/p>\n<pre><code class=\"bash\">static inline uint16_t mr(uint16_t address) { return mem[address];  } static inline void mw(uint16_t address, uint16_t val) { mem[address] = val; }<\/code><\/pre>\n<p>  \u0414\u0430\u0436\u0435, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f mr \u0438 mw \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0437\u043b\u0438\u0448\u043d\u0435\u0439 (\u0432\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e), \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u043b\u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439.<\/p>\n<h3><font color=\"#3AC1EF\">\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u044b<\/font><\/h3>\n<p>  \u0412\u0441\u0435\u0433\u043e \u0443 \u043d\u0430\u0448\u0435\u0439 VM 10 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043f\u043e 16 \u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439:<\/p>\n<ul>\n<li><code>R0 <\/code>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f\/\u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\/\u0432 <code>stdin<\/code>\/<code>stdout<\/code>;<\/li>\n<li><code>R1, R2,..R7<\/code> \u0442\u043e\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f;<\/li>\n<li><code>RPC <\/code>\u2013 \u044d\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c.<\/li>\n<li><code>RCND <\/code>\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c. \u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u0444\u043b\u0430\u0433 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0432 \u0426\u041f\u0423 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0410\u041b\u0423.<\/li>\n<\/ul>\n<p>  \u0412 \u043a\u043e\u0434\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">enum regist { R0 = 0, R1, R2, R3, R4, R5, R6, R7, RPC, RCND, RCNT }; uint16_t reg[RCNT] = {0};<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>reg[R3]=...<\/code>.<\/p>\n<h3><font color=\"#3AC1EF\">\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/font><\/h3>\n<p>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u0442\u0434\u0430\u0435\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435.<br \/>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0438\u0445 \u043c\u044b \u043f\u0440\u043e\u0441\u0438\u043c \u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0443\u044e (\u0438 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e) \u0437\u0430\u0434\u0430\u0447\u0443: \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b, \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 \u00ab\u0418\u00bb \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0438 \u0442.\u0434.<\/p>\n<p>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0442\u043e \u0435\u0441\u0442\u044c 16 \u0431\u0438\u0442. \u042d\u0442\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440, \u0432\u0435\u0434\u044c \u043c\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c. \u0417\u043d\u0430\u0447\u0438\u0442, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0421\u0438, \u043e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0446\u0435\u043b\u044b\u043c\u0438 <code>uint16_t<\/code>.<\/p>\n<p>  \u041d\u0430\u0448\u0430 VM \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u0438\u0448\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439: 16 (\u043d\u0430 \u0434\u0435\u043b\u0435 \u0434\u0430\u0436\u0435 14, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 LC-3 \u0441\u043c\u044b\u0441\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u044b\u043b\u043e).<\/p>\n<p>  \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u0430\u043a (\u0432\u043d\u0443\u0442\u0440\u0438 <code>uint16_<\/code>t):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/iq\/ka\/l4\/iqkal4enskhd1flo0fc04ixy_om.png\"\/><\/div>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0435 4 \u0431\u0438\u0442\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u043f\u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u0417\u0430\u0442\u0435\u043c, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0438\u0434\u0443\u0442 1, 2, 3, \u2026 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f 12 \u0431\u0438\u0442\u0430\u0445.<\/p>\n<p>  \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u043f\u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u00ab\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u00bb\/\u00ab\u0438\u0437\u0432\u043b\u0435\u0447\u044c\u00bb \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 <code>uint16_t<\/code>.<\/p>\n<p>  \u0414\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u043f\u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:<\/p>\n<pre><code class=\"bash\">#define OPC(i) ((i)>>12)<\/code><\/pre>\n<p>  \u041c\u044b \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u043c 12 \u0431\u0438\u0442 \u0432\u043f\u0440\u0430\u0432\u043e (<code>i>>12<\/code>), \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 4 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0431\u0438\u0442\u0430 \u0441 \u043e\u043f\u043a\u043e\u0434\u043e\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/h-\/hg\/1z\/h-hg1zqol5ozv2aqknvzcgrqfx4.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043f\u043a\u043e\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 4 \u0431\u0438\u0442\u0430\u0445, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 16 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (<code>2^4=16<\/code>).<\/p>\n<p>  \u0412 \u0421\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0442\u0440\u044e\u043a (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445) \u2013 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0421\u0438) \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435. \u0415\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u043a\u043e\u0434 (\u0432\u0435\u0434\u044c \u043e\u043f\u043a\u043e\u0434\u044b \u2013 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u0430 \u043e\u0442 0 \u0434\u043e 16), \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0421\u0438.<\/p>\n<pre><code class=\"bash\">#define NOPS (16) \/\/ \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 typedef void (*op_ex_f)(uint16_t instruction); \/\/ \/\/ ... \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \/\/ static inline void add(uint16_t i)  { \/* \u043a\u043e\u0434 *\/ } static inline void and(uint16_t i)  { \/* \u043a\u043e\u0434 *\/ } \/\/ \/\/ ... \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \/\/ op_ex_f op_ex[NOPS] = {      br, add, ld, st, jsr, and, ldr, str, rti, not, ldi, sti, jmp, res, lea, trap  };<\/code><\/pre>\n<p>  <code>typedef void (*op_ex_f)(uint16_t i);<\/code> \u2014 \u044d\u0442\u043e <code>typedef <\/code>\u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>void <\/code>\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e <code>uint16_t instruction<\/code>.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043e\u043f\u043a\u043e\u0434, \u0442\u043e \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438:  <\/p>\n<pre><code class=\"bash\">uint16_t instr = ...; op_ex[OP(instr)](instr); \/\/ \u044d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0443\u044e \u0441 OP(instr)                           \/\/ \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 OP(instr)==0b0001, \u0442\u043e \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c add(instr)                          \/\/             \u0435\u0441\u043b\u0438 \u0436\u0435 OP(instr)==0b0010, \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c ld(instr)                          \/\/             (\u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435)<\/code><\/pre>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0435\u043c\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f <code>switch <\/code>\u0441 16(+1) <code>cases<\/code>.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0430 VM. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0438\u0447\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 ASM, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 LC-3.<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<td>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <\/td>\n<td>Hex-\u043e\u043f\u043a\u043e\u0434<\/td>\n<td>\u0414\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u043a\u043e\u0434<\/td>\n<td>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0421\u0438<\/td>\n<td>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>br<\/td>\n<td>0x0<\/td>\n<td>0b0000<\/td>\n<td>void br(uint16_t i)<\/td>\n<td>\u0423\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>add<\/td>\n<td>0x1<\/td>\n<td>0b0001<\/td>\n<td>void add(uint16_t i)<\/td>\n<td>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/td>\n<\/tr>\n<tr>\n<td>ld<\/td>\n<td>0x2<\/td>\n<td>0b0010<\/td>\n<td>void ld(uint16_t i)<\/td>\n<td>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 RPC + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>st<\/td>\n<td>0x3<\/td>\n<td>0b0011<\/td>\n<td>void st(uint16_t i)<\/td>\n<td>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>jsr<\/td>\n<td>0x4<\/td>\n<td>0b0100<\/td>\n<td>void jsr(uint16_t i)<\/td>\n<td>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435<\/td>\n<\/tr>\n<tr>\n<td>and<\/td>\n<td>0x5<\/td>\n<td>0b0101<\/td>\n<td>void and(uint16_t i)<\/td>\n<td>\u041f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u0418\u00bb<\/td>\n<\/tr>\n<tr>\n<td>ldr<\/td>\n<td>0x6<\/td>\n<td>0b0110<\/td>\n<td>void ldr(uint16_t i)<\/td>\n<td>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u044b + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>str<\/td>\n<td>0x7<\/td>\n<td>0b0111<\/td>\n<td>void str(uint16_t i)<\/td>\n<td>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>rti<\/td>\n<td>0x8<\/td>\n<td>0b1000<\/td>\n<td>void rti(uint16_t i)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f (\u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e)<\/td>\n<\/tr>\n<tr>\n<td>not<\/td>\n<td>0x9<\/td>\n<td>0b1001<\/td>\n<td>void not(uint16_t i)<\/td>\n<td>\u041f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>ldi<\/td>\n<td>0xA<\/td>\n<td>0b1010<\/td>\n<td>void ldi(uint16_t i)<\/td>\n<td>\u041a\u043e\u0441\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/td>\n<\/tr>\n<tr>\n<td>sti<\/td>\n<td>0xB<\/td>\n<td>0b1011<\/td>\n<td>void sti(uint16_t i)<\/td>\n<td>\u041a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td>jmp<\/td>\n<td>0xC<\/td>\n<td>0b1100<\/td>\n<td>void jmp(uint16_t i)<\/td>\n<td>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a\/\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0438\u0437 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>0xD<\/td>\n<td>0b1101<\/td>\n<td><\/td>\n<td>\u041d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043e\u043f\u043a\u043e\u0434<\/td>\n<\/tr>\n<tr>\n<td>lea<\/td>\n<td>0xE<\/td>\n<td>0b1110<\/td>\n<td>void lea(uint16_t i)<\/td>\n<td>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430<\/td>\n<\/tr>\n<tr>\n<td>trap<\/td>\n<td>0xF<\/td>\n<td>0b1111<\/td>\n<td>void trap(uint16_t i) <\/td>\n<td>\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435\/\u0432\u044b\u0437\u043e\u0432<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u042d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e 4 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u044f\u0441\u044c \u043d\u0430 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/p>\n<ul>\n<li><code>br<\/code>, <code>jmp<\/code>, <code>jsr <\/code>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c: \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 (\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>go to<\/code>) \u0438\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 (\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e <code>if<\/code>);<\/li>\n<li><code>ld<\/code>, <code>ldr<\/code>, <code>ldi<\/code>, <code>lea <\/code>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b;<\/li>\n<li><code>st<\/code>, <code>str<\/code>, <code>sti <\/code>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c;<\/li>\n<li><code>add<\/code>, <code>and<\/code>, <code>not <\/code>\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 (\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435) \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445.<\/li>\n<\/ul>\n<p>  <code>trap <\/code>\u2013 \u044d\u0442\u043e \u043e\u0441\u043e\u0431\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 (\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b) \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 <code>stdout<\/code>.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u043d\u0430\u0448\u0430 VM \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u0433\u0430\u0442\u0430 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u043b\u0430\u043d\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043d\u0435\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 <code>XOR<\/code>, \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f. \u0425\u043e\u0440\u043e\u0448\u043e \u0432 \u044d\u0442\u043e\u043c \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0448\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c ASM. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439.<\/p>\n<p>  \u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u00ab\u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b\u00bb.<\/p>\n<p>  <code>RCND<\/code>, \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u043a\u0430\u043a \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0444\u043b\u0430\u0433\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u00ab\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f\u00bb \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u0412 \u043d\u0430\u0448\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u0442\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li><code>1&lt;&lt;0 <\/code>(P) \u2013 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043b\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442;<\/li>\n<li><code>1&lt;&lt;1 <\/code>(Z) \u2013 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043b\u0430 0;<\/li>\n<li><code>1&lt;&lt;2 <\/code>(N) \u2013 \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0434\u0430\u043b\u0430 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/li>\n<\/ul>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>RCND <\/code>\u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0431\u043e\u043b\u044c\u0448\u0435 \u043b\u0438 \u0447\u0438\u0441\u043b\u043e <code>a<\/code> \u0447\u0438\u0441\u043b\u0430 <code>b<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0445 \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u044c, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u0442\u043e <code>RCND <\/code>\u0431\u0443\u0434\u0435\u0442 <code>1&lt;&lt;2<\/code>. \u0417\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>br <\/code>\u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e <code>IF <\/code>\u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445. <\/p>\n<p>  \u0412 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432 \u0421\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">enum flags { FP = 1 &lt;&lt; 0, FZ = 1 &lt;&lt; 1, FN = 1 &lt;&lt; 2 };  static inline void uf(enum regist r) {     if (reg[r]==0) reg[RCND] = FZ;       \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 r \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e     else if (reg[r]>>15) reg[RCND] = FN; \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 r \u2013 \u044d\u0442\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e     else reg[RCND] = FP;                 \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 r \u2013 \u044d\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e }<\/code><\/pre>\n<p>  \u041c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c <code>uf(r)<\/code> \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0438\u043c\u0435\u044e\u0449\u0435\u0439 \u00ab\u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b\u00bb, \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0437\u0430 \u043c\u0430\u0433\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442: <code>else if (reg[r]>>15)<\/code>.<\/p>\n<p>  \u041d\u0430\u0448\u0430 VM \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 (\u043f\u0443\u0441\u0442\u044c \u0432\u0430\u0441 \u043d\u0435 \u0441\u0431\u0438\u0432\u0430\u0435\u0442 \u0441 \u0442\u043e\u043b\u043a\u0443 \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <code>uint16_t<\/code>). \u041f\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0431\u0438\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (\u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 15) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d 1.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/kv\/nh\/3b\/kvnh3bqrsnz7oj9-1aenjjes_fo.png\"\/><\/div>\n<p>  <font color=\"#3AC1EF\">add \u2014 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<\/font><br \/>  \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0447\u0438\u0441\u0435\u043b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u043d\u0430\u043c\u0438 VM \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e. \u0414\u043b\u044f \u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0434\u0432\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>add<\/code>. \u041e\u043d\u0438 \u043e\u0431\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043e\u043f\u043a\u043e\u0434, \u043d\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. <code>bit[5]<\/code> \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c, \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>add <\/code>\u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u0430\u044f (<code>add1<\/code>) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0432\u0443\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e <code>SR1<\/code>, <code>SR2 <\/code>\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 <code>DR1<\/code>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ys\/7r\/d1\/ys7rd12gnunhxmgom6drin_7ocm.png\"\/><\/div>\n<p>  \u0412\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, <code>add2<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u00ab\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0433\u043e\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (<code>IMM5<\/code>) \u0441 <code>SR1 <\/code>\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 <code>DR1<\/code>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/iz\/bm\/7i\/izbm7icsgtfrpwrleknils-ome8.png\"\/><\/div>\n<p>  <\/p>\n<blockquote><p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: <code>DR <\/code>\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <i>Destination Register<\/i> (\u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440), <code>SR<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <i>Source Register<\/i> (\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440).<\/p><\/blockquote>\n<p>  <code>IMM5<\/code> \u2013 \u044d\u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438\u043b\u0438 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u0437 5 \u0431\u0438\u0442, \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c. \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044d\u0442\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0443\u044e \u0437\u043d\u0430\u043a, \u0434\u0435\u043b\u0430\u044f \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c \u0441 16-\u0431\u0438\u0442\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c.<\/p>\n<pre><code class=\"bash\">#define SEXTIMM(i) sext(IMM(i),5) static inline uint16_t sext(uint16_t n, int b) {      return ((n>>(b-1))&amp;1) ?         \/\/ \u0435\u0441\u043b\u0438 b-\u0439 \u0431\u0438\u0442 n \u0440\u0430\u0432\u0435\u043d 1 (\u0447\u0438\u0441\u043b\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e),         (n|(0xFFFF &lt;&lt; b)) : n;      \/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f 15 \u0431\u0438\u0442 1-\u043c\u0438.                                     \/\/ \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u043a\u0430\u043a \u0435\u0441\u0442\u044c }<\/code><\/pre>\n<p>  \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f <code>SEXTIMM(i)<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a (\u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/-u\/bj\/jv\/-ubjjvlogeqdmbikd1up53vx0ns.png\"\/><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u0436\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043d\u0430\u0434 \u043d\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0432\u044b\u0434\u0430\u0441\u0442 \u0432\u0435\u0440\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<pre><code class=\"bash\">uint16_t a = 0x16;          \/\/ 5-\u0439 \u0431\u0438\u0442 \u0440\u0430\u0432\u0435\u043d 1                             \/\/ \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0447\u0438\u0441\u043b\u043e, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435\u0441\u044f \u0432 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f 5 \u0431\u0438\u0442\u0430\u0445 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e                             \/\/ \u0417\u043d\u0430\u0447\u0438\u0442, \u0432\u0430\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0442\u0438\u043f\u0435 uint16_t                              \/\/ \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c SEXTIMM(a)  fprintf_binary(stdout, a); fprintf(stdout, \"\\n\");  fprintf_binary(stdout, SEXTIMM(a)); fprintf(stdout, \"\\n\");  \/\/ \u0412\u044b\u0432\u043e\u0434 \/\/ \/\/  0000 0000 0001 0110 &lt;--- a \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \/\/  1111 1111 1111 0110 &lt;--- SEXTIMM(a) \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c <code>add<\/code>.<\/p>\n<p>  \u0412 \u0421\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0435\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 <code>bit[5]<\/code> 0 \u0438\u043b\u0438 1, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.<\/p>\n<p>  \u0415\u0441\u043b\u0438 <code>bit[5]<\/code> \u0440\u0430\u0432\u0435\u043d 0, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c <code>add1<\/code>. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>add2<\/code>.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f 5-\u0433\u043e \u0431\u0438\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043c\u0430\u043a\u0440\u043e\u0441:<\/p>\n<pre><code class=\"bash\">\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c 5-\u0439 \u0431\u0438\u0442 i \/\/ \u0421\u0434\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0432\u043f\u0440\u0430\u0432\u043e \u043d\u0430 5 \u0431\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u0438\u0442 \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 #define FIMM(i) ((i>>5)&amp;1) <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e, \u0442\u043e <code>FIMM <\/code>\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442 <code>i<\/code> \u0432\u043f\u0440\u0430\u0432\u043e \u043d\u0430 5 \u0431\u0438\u0442;<\/li>\n<li>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u0438\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>&amp;1<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/sy\/gd\/ep\/sygdepfp3xgcgszlaqyqcqsn1ou.png\"\/><\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u00ab\u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f\u00bb <code>SR1<\/code>, <code>SR2<\/code>, <code>DR1 <\/code>\u0438 <code>IMM5<\/code>:<\/p>\n<pre><code class=\"bash\">#define DR(i) (((i)>>9)&amp;0x7) #define SR1(i) (((i)>>6)&amp;0x7) #define SR2(i) ((i)&amp;0x7) #define IMM(i) ((i)&amp;0x1F)<\/code><\/pre>\n<p>  \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0447\u0442\u0435\u0442\u0435 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0443\u0440\u043e\u043a, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u043d\u0438 \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a <code>FIMM<\/code>. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043b\u0438\u0448\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u0430\u0441\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 3 \u0431\u0438\u0442 \u0432\u043c\u0435\u0441\u0442\u043e 1.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u043d\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>add <\/code>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"bash\">static inline void add(uint16_t i)  {      reg[DR(i)] = reg[SR1(i)] +          (FIMM(i) ?                  \/\/ \u0415\u0441\u043b\u0438 5\u0439 \u0431\u0438\u0442 \u0440\u0430\u0432\u0435\u043d 1,             SEXTIMM(i) :            \/\/ \u043c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u0437\u043d\u0430\u043a IMM5 \u0438 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u043a SR1 (add2)             reg[SR2(i)]);           \/\/ \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a SR1 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 SR2 (add1)      uf(DR(i)); \/\/ !! \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f DR1 }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">and \u2013 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u0418\u00bb<\/font><br \/>  \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 <code>add <\/code>\u0438 \u0432\u044b\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0434\u0432\u0443\u0445 \u0444\u043e\u0440\u043c\u0430\u0445. <\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 (<code>and1<\/code>) \u043e\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 <code>&amp;<\/code> \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0434\u0432\u0443\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432: <code>SR1 <\/code>\u0438 <code>SR2<\/code>, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 <code>DR1<\/code>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/g8\/e3\/c_\/g8e3c_wjmgncorvsaaay13dui6w.png\"\/><\/div>\n<p>  \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 (<code>and2<\/code>) \u043e\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u044f\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 <code>&amp; <\/code>\u0434\u043b\u044f <code>SR1 <\/code>\u0438 <code>IMM5<\/code>, \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 <code>DR1<\/code>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/iz\/bm\/7i\/izbm7icsgtfrpwrleknils-ome8.png\"\/><\/div>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f, \u0447\u0442\u043e \u0438 \u043f\u0440\u0435\u0436\u0434\u0435. \u041c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code>bit[5<\/code>], \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u0444\u043e\u0440\u043c\u0443 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c.<\/p>\n<p>  \u0412 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 \u043c\u0430\u043a\u0440\u043e\u0441. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0441 <code>+<\/code> \u043d\u0430 <code>&amp;<\/code>:<\/p>\n<pre><code class=\"bash\">static inline void and(uint16_t i)  {      reg[DR(i)] = reg[SR1(i)] &amp;               (FIMM(i) ?                  \/\/ \u0415\u0441\u043b\u0438 5-\u0439 \u0431\u0438\u0442 \u0440\u0430\u0432\u0435\u043d 1,             SEXTIMM(i) :            \/\/ \u043c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c IMM5 \u0438 &amp; \u0435\u0433\u043e \u0441 SR1 (and1)             reg[SR2(i)]);           \/\/ \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b &amp; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 SR2 \u0441 SR1     uf(DR(i));  \/\/ \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">ld \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 RPC + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/font><br \/>  ld \u2013 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, <code>DR1<\/code>. \u041e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443 <code>RPC <\/code>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f. \u0412\u044b\u0437\u043e\u0432 <code>ld <\/code>\u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 <code>RPC<\/code>, \u044d\u0442\u043e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u0430\u043a \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/xn\/ae\/vw\/xnaevwgvzpg_pzzfztqhb0ew8ry.png\"\/><\/div>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e RPC \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043c\u044f\u0442\u0438 <code>0\u04453002<\/code>. \u0415\u0441\u043b\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0430 100, \u0442\u043e \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 <code>0x3002+100==0x3066<\/code> \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c \u0438\u0445 \u0432 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>R4<\/code>, \u043d\u043e \u0438\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u043e\u0439).<\/p>\n<p>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0442\u0430\u043a:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/kx\/bf\/ln\/kxbflnmm44k4qtf0s9y_nfppri0.png\"\/><\/div>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0421\u0438 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"bash\">#define POFF9(i) sext((i)&amp;0x1FF, 9) static inline void ld(uint16_t i) {      reg[DR(i)] = mr(reg[RPC] + POFF9(i));      uf(DR(i));  }<\/code><\/pre>\n<p>  \u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 9 \u0431\u0438\u0442\u0430\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <code>2^9-1=512-1=511<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 (\u0438 \u043a\u0430\u043a) \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>ld <\/code>\u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/xd\/q5\/wd\/xdq5wdjaejc906o14cqqzpnwklc.png\"\/><\/div>\n<p>  \u0412 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 512 \u2013 \u044d\u0442\u043e <code>0b1000000000<\/code>. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0434\u043b\u044f \u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e 10 \u0431\u0438\u0442. \u0412\u043e\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 511. \u0412 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u043e\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>0b111111111 <\/code>(9 \u0431\u0438\u0442).<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 <code>ld<\/code>, \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0443\u044e <code>ldi<\/code>.<\/p>\n<p>  <font color=\"#3AC1EF\">ldi \u2013 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430<\/font><br \/>  \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c \u00ab\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445\u00bb \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/df\/w2\/gu\/dfw2gusqlwo4e_r6rujhuum3o9c.png\"\/><\/div>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e <code>RPC <\/code>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 <code>0\u04453002<\/code>. \u041a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c 9-\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0434\u0440\u0443\u0433\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (<code>RPC + offset<\/code>). \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <code>offset=100<\/code>, \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 <code>0x3066<\/code>.<\/p>\n<p>  \u041d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 <code>DR <\/code>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e <code>0x3066<\/code> \u043c\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>0\u0445320<\/code>4 \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0435\u0433\u043e \u0432 <code>DR<\/code>.<\/p>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code>ldi <\/code>\u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 9-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043f\u0440\u0438\u0441\u0443\u0449\u0435\u0433\u043e <code>ld<\/code>.<\/p>\n<p>  \u0425\u043e\u0442\u044f \u044d\u0442\u043e \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e <code>ldi <\/code>\u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c <code>ld<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0432\u0430. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u043d \u0441\u043b\u0443\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u043e\u0439 \u0446\u0435\u043b\u0438.<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d <code>ld<\/code>, \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u043a\u043e\u0434:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/dq\/xq\/yf\/dqxqyfngadmnec9gttnhaxrtnm8.png\"\/><\/div>\n<p>  \u0412 \u0421\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">static inline void ldi(uint16_t i)  {      reg[DR(i)] = mr(mr(reg[RPC]+POFF9(i))); \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0434\u0432\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438     uf(DR(i));  }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">ldr \u2013 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u044b + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/font><br \/>  \u042d\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0435\u0435 \u0441 <code>ld<\/code>, \u0433\u0434\u0435 \u043c\u044b \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u043e\u0442 <code>RPC<\/code>, \u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0431\u0435\u0440\u0435\u043c \u0434\u0440\u0443\u0433\u0443\u044e <code>base <\/code>(\u043f\u043e\u0434 <code>base <\/code> (\u043e\u0441\u043d\u043e\u0432\u043e\u0439) \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043c\u044f\u0442\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435).<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0443 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/k7\/ty\/ob\/k7tyob99628n6uj63im8n2yv5fm.png\"\/><\/div>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u0437 \u043d\u0435\u0435 <code>BASER <\/code>\u043c\u043e\u0436\u043d\u043e \u0441\u043d\u043e\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441, \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u0434\u043b\u044f <code>ld<\/code>(<code>SR1(i)<\/code>), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u043e\u0435 \u0436\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f <code>OFFSET6 <\/code>\u0438\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u043a\u0440\u043e\u0441:<\/p>\n<pre><code class=\"bash\">#define POFF(i) sext((i)&amp;0x3F, 6)<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 <code>ld <\/code>\u0441 \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c. \u0412\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <code>reg[RPC]<\/code> \u043c\u044b \u0441\u043c\u0435\u0449\u0430\u0435\u043c\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e <code>BASER<\/code>.<\/p>\n<pre><code class=\"bash\">static inline void ld(uint16_t i) {      reg[DR(i)] = mr(reg[RPC] + POFF9(i));      uf(DR(i));  }  \/\/ \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441  static inline void ldr(uint16_t i) {      reg[DR(i)] = mr(reg[SR1(i)] + POFF(i));      uf(DR(i));  }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">lea \u2013 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430<\/font><br \/>  \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>ld<\/code>, <code>ldi <\/code>\u0438 <code>ldr <\/code>\u043e\u043d\u0430 \u0432\u043d\u043e\u0441\u0438\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0443 <code>lea <\/code>\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/zh\/dz\/ot\/zhdzotktzfhqxiuk29j1qdersfs.png\"\/><\/div>\n<p>  \u0412 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d\u0430 \u0442\u0430\u043a: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/wp\/yb\/y_\/wpyby_c9heelyq6ecctc1so5tyw.png\"\/><\/div>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e <code>RPC <\/code>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 <code>0x3002<\/code>. \u041f\u0440\u0438 <code>offset9=100<\/code> \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>DR <\/code>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 <code>0x3002+100=0x3066<\/code>.<\/p>\n<p>  \u0412 \u043a\u043e\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">static inline void lea(uint16_t i) {      reg[DR(i)] =reg[RPC] + POFF9(i);      uf(DR(i));  }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">not \u2013 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/font><br \/>  \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 <code>~<\/code> \u0434\u043b\u044f <code>SR1<\/code> \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 <code>DR1<\/code>.<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0443 \u043d\u0435\u0435 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/nc\/me\/op\/ncmeopneozimvfzp4srxnqovn-k.png\"\/><\/div>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0421\u0438:<\/p>\n<pre><code class=\"bash\">static inline void not(uint16_t i) {      reg[DR(i)]=~(SR1(i));      uf(DR(i));  }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">st \u2014 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/font><br \/>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>st <\/code>\u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438. <\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/eg\/vh\/vd\/egvhvdn5q5hbus8de8r6dqvsnto.png\"\/><\/div>\n<p>  \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/_5\/6j\/dj\/_56jdjtrfxbjar-gmjy8ikddksi.png\"\/><\/div>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e <code>RPC <\/code>\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 <code>0x3002<\/code>, \u0430 <code>SR <\/code>\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a <code>R1=0x0001<\/code>. \u0422\u043e\u0433\u0434\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>st <\/code>\u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u0432 <code>RPC+offset<\/code> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>R1 <\/code>. <\/p>\n<p>  \u041a\u043e\u0434 \u0421\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0441\u0442:<\/p>\n<pre><code class=\"bash\">static inline void st(uint16_t i)  {      mw(reg[RPC] + POFF9(i), reg[DR(i)]); \/\/ \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 DR(i) \u0432 \u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043c\u044f\u0442\u0438  }<\/code><\/pre>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0444\u043b\u0430\u0433\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043c\u044b \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 <code>ld<\/code>, \u0443 <code>st <\/code>\u0442\u0430 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u043c\u044b \u0432\u0432\u043e\u0434\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, <code>sti<\/code>.<\/p>\n<p>  <font color=\"#3AC1EF\">sti \u2013 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/font><br \/>  \u0424\u043e\u0440\u043c\u0430\u0442 \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u0435\u043d <code>st<\/code>, \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u043a\u043e\u0434:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/9k\/fj\/_c\/9kfj_cwfz9ys9yqfcy_enpbcuki.png\"\/><\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 <code>(mw(\u2026))<\/code> \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u042d\u0442\u043e\u0442 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u0443\u0434\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ay\/vg\/wt\/ayvgwtm29co6bwayzoztrakaxzm.png\"\/><\/div>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>R1=0x0001<\/code> (<code>SR<\/code>) \u0432 <code>0x3204<\/code>, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 <code>RPC+offsest = 0x3204<\/code>. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0430\u0439\u0434\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u043a\u0443\u0434\u0430 \u0438 \u0445\u043e\u0442\u0438\u043c \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u044c: <code>3204<\/code>.<\/p>\n<p>  \u0412 \u043a\u043e\u0434\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f <code>sti<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439:<\/p>\n<pre><code class=\"bash\">static inline void sti(uint16_t i)  {      mw(mr(reg[RPC] + POFF9(i)), reg[DR(i)]);  }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">str \u2013 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u0443 + \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 <\/font><br \/>  \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 <code>st<\/code> \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435\u043c. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043e\u0442 <code>RPC<\/code>, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u043f\u043e\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u043e\u0441\u043d\u043e\u0432\u0443 (<code>BASER<\/code>), \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 (<code>OFFSET6<\/code>).<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/e6\/i2\/p8\/e6i2p8gel-ttsrgxbfmj2ke7_vy.png\"\/><\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u0438 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"bash\">static inline void st(uint16_t i)   {      mw(reg[RPC] + POFF9(i), reg[DR(i)]);  }  \/\/ \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441   static inline void str(uint16_t i)  {      mw(reg[SR1(i)] + POFF(i), reg[DR(i)]);  }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">jmp \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434<\/font><br \/>  \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>RPC <\/code>\u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <code>jmp<\/code> \u2013 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443 <code>RPC <\/code>\u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c <code>BASER<\/code> (\u0431\u0430\u0437\u043e\u0432\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c).<\/p>\n<p>  \u0424\u043e\u0440\u043c\u0430\u0442 \u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/pd\/sk\/xg\/pdskxgwidb8cqowjdjlevaw499s.png\"\/><\/div>\n<p>  \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043e\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/_i\/aw\/tv\/_iawtvvyiixlp7r5qkhngeissba.png\"\/><\/div>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e <code>RPC=0x3002<\/code>, \u0430 <code>R2=0x3066<\/code> (\u044d\u0442\u043e <code>BASER<\/code>). \u041f\u0440\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>jmp <\/code>\u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>RPC <\/code>\u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0430\u0434\u0440\u0435\u0441\u0443 \u043f\u0430\u043c\u044f\u0442\u0438, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 <code>BASER <\/code>(<code>R2=0x3066<\/code>), \u0438 \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0441\u044f.<\/p>\n<p>  \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 <code>jmp <\/code>\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>go to<\/code>.<\/p>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0421\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">static inline void jmp(uint16_t i)  {      reg[RPC] = reg[BR(i)]; }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">jsr \u2013 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c<\/font><br \/>  jsr \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u043f\u043e\u0442\u043e\u043a\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u041f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 (\u043d\u0430\u0448\u0435\u043c) ASM \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0438\u0437 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0441\u0435\u0440\u0438\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0438 \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a. \u0423 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0432\u0445\u043e\u0434 (\u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432) \u0438 \u0432\u044b\u0445\u043e\u0434 (\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u043d\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440).<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c <code>jsr <\/code>\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0435 \u0444\u043e\u0440\u043c\u044b:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/to\/zy\/sj\/tozysjhrhvirenyylxvy1mciweq.png\"\/><\/div>\n<p>  \u041f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<ol>\n<li>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c <code>RPC <\/code>\u0432 <code>R7 <\/code>(\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435).<\/li>\n<li>\u0415\u0441\u043b\u0438 <code>bit[11]<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 0, \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <code>RPC = BASER<\/code>.<\/li>\n<li>\u0415\u0441\u043b\u0438 <code>bit[11]<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 1, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <code>RPC = RPC + OFFSET11<\/code>.<\/li>\n<\/ol>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0421\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"bash\">static inline void jsr(uint16_t i) {      reg[R7] = reg[RPC];              reg[RPC] = (FL(i)) ?            \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 bit[11]         reg[RPC] + POFF11(i) :      \/\/ rpc + offset         BR(i);                      \/\/ \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 }<\/code><\/pre>\n<p>  \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/eq\/1o\/9n\/eq1o9n3vv8lflrmrbvsarfl7re4.png\"\/><\/div>\n<p>  \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435 <code>RPC <\/code>\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043a\u0430\u043a <code>3002<\/code>. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>jsr<\/code>. \u041c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c <code>RPC <\/code>\u0432 <code>R7<\/code>, \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044f \u0442\u043e\u0447\u043a\u0443, \u043e\u0442\u043a\u0443\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435. \u0414\u0430\u043b\u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>offset=100<\/code> \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>0x3066<\/code> \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c <code>RPC <\/code>\u043d\u0430 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  <font color=\"#3AC1EF\">br \u2013 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435<\/font><br \/>  \u042d\u0442\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <code>jsr<\/code>, \u043d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u2013 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/p9\/xl\/cf\/p9xlcfhw6izsg4zftj2xorkoor8.png\"\/><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u0431\u0438\u0442\u044b <code>NZP <\/code>\u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a. \u041e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>uf(\u2026)<\/code> \u043d\u0430\u0434 <code>RCND<\/code>:<\/p>\n<pre><code class=\"bash\">enum flags { FP = 1 &lt;&lt; 0, FZ = 1 &lt;&lt; 1, FN = 1 &lt;&lt; 2 }; static inline void uf(enum regist r) {     if (reg[r]==0) reg[RCND] = FZ;       \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 r \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u043b\u044e     else if (reg[r]>>15) reg[RCND] = FN; \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 r \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e     else reg[RCND] = FP;                 \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 r \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e }<\/code><\/pre>\n<p>  \u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>RCND <\/code>\u2013 \u044d\u0442\u043e <code>FP=001<\/code>, <code>FZ=010<\/code> \u0438\u043b\u0438 <code>FN=100<\/code>. \u041f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0434\u043b\u044f <code>br <\/code>\u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043b\u0435\u0433\u043a\u043e \u044d\u0442\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 <code>NZP <\/code>\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441 <code>RCND<\/code>:<\/p>\n<pre><code class=\"bash\">#define FCND(i) (((i)>>9)&amp;0x7) static inline void br(uint16_t i)   {      if (reg[RCND] &amp; FCND(i)) {          \/\/ \u0415\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f,          reg[RPC] += POFF9(i);           \/\/ \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043d\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435     }  } <\/code><\/pre>\n<p>  <\/p>\n<h3><font color=\"#3AC1EF\">trap<\/font><\/h3>\n<p>  \u042d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u0432\u043e\u0434\u043e\u043c\/\u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0438, \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/s9\/p0\/o8\/s9p0o8kmbmdycbnrkiwluiexdt4.png\"\/><\/div>\n<p>  \u0412 <code>TRAPVECT <\/code>\u043c\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 stdin \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 <code>stdout<\/code>.<\/p>\n<p>  \u041a\u0430\u0436\u0434\u0430\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0430 (trap) \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 <code>trp_ex<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0421\u0438. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0442\u043e\u0439 \u0436\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438, \u0447\u0442\u043e \u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438, \u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e, \u0442\u043e \u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 ASM, \u0430 \u0441 \u043d\u0438\u043c\u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 <code>stdout<\/code>.<\/p>\n<p>  \u041a\u0430\u043a \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"bash\">#define TRP(i) ((i)&amp;0xFF)  static inline void tgetc()  { \/* code *\/ } static inline void tout()   { \/* code *\/ } static inline void tputs()  { \/* code *\/ } static inline void tin()    { \/* code *\/ } static inline void tputsp() { \/* code *\/ } static inline void thalt()  { \/* code *\/ }  static inline void tinu16() { \/* code *\/ } static inline void toutu16() { \/* code *\/ }  enum { trp_offset = 0x20 }; typedef void (*trp_ex_f)(); trp_ex_f trp_ex[8] = { tgetc, tout, tputs, tin, tputsp, thalt, tinu16, toutu16 };  static inline void trap(uint16_t i) {      trp_ex[TRP(i)-trp_offset]();  }<\/code><\/pre>\n<p>  \u0412\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 8 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043b\u043e\u0432\u0443\u0448\u0435\u043a:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<td>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0438<\/td>\n<td>TRAPVECT<\/td>\n<td>\u0418\u043d\u0434\u0435\u043a\u0441 trp_ex[]<\/td>\n<td>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>tgetc<\/td>\n<td>0x20<\/td>\n<td>0<\/td>\n<td>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0441\u0438\u043c\u0432\u043e\u043b (char), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 R0.<\/td>\n<\/tr>\n<tr>\n<td>tout<\/td>\n<td>0x21<\/td>\n<td>1<\/td>\n<td>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b (char) \u0438\u0437 R0 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c..<\/td>\n<\/tr>\n<tr>\n<td>tputs<\/td>\n<td>0x22<\/td>\n<td>2<\/td>\n<td>\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 R0. \u041f\u0440\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0435 0x0000 \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f.<\/td>\n<\/tr>\n<tr>\n<td>tin<\/td>\n<td>0x23<\/td>\n<td>3<\/td>\n<td>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b (char) \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 R0.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c.<\/td>\n<\/tr>\n<tr>\n<td>tputsp<\/td>\n<td>0x24<\/td>\n<td>4<\/td>\n<td>\u041d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u042d\u0442\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435 1, \u0430 2 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a tputs. \u041e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0435\u0435 \u0432\u0430\u043c \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u044f.<\/td>\n<\/tr>\n<tr>\n<td>thalt<\/td>\n<td>0x25<\/td>\n<td>5<\/td>\n<td>\u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. VM \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f..<\/td>\n<\/tr>\n<tr>\n<td>tinu16<\/td>\n<td>0x26<\/td>\n<td>6<\/td>\n<td>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b uint16_t \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u0432 R0.  <\/td>\n<\/tr>\n<tr>\n<td>toutu16<\/td>\n<td>0x27<\/td>\n<td>7<\/td>\n<td>\u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0439 uint16_t \u0438\u0437 R0.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n<p>  <font color=\"#3AC1EF\">tgetc<\/font><br \/>  \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>getchar()<\/code> \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 <code>R0<\/code>:<\/p>\n<pre><code class=\"bash\">static inline void tgetc() { reg[R0] = getchar(); }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">toutc<\/font><br \/>  \u0412\u044b\u0432\u043e\u0434\u0438\u043c <code>R0<\/code> \u0432 <code>stdout<\/code>:<\/p>\n<pre><code class=\"bash\">static inline void tout() { fprintf(stdout, \"%c\", (char)reg[R0]); }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">tputs<\/font><br \/>  \u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>R0<\/code>, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c <code>0x0000<\/code>, \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443:<\/p>\n<pre><code class=\"bash\">static inline void tputs() {     uint16_t *p = mem + reg[R0];     while(*p) {         fprintf(stdout, \"%c\", (char)*p);         p++;     } }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">tin<\/font><br \/>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u0435\u043d <code>tgetc <\/code>\u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435\u043c \u2013 \u043c\u044b \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432 <code>R0<\/code>:<\/p>\n<pre><code class=\"bash\">static inline void tin() { reg[R0] = getchar(); fprintf(stdout, \"%c\", reg[R0]); }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">thalt<\/font><br \/>  \u0414\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 VM \u043c\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>running<\/code>. \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 <code>thalt<\/code>, <code>running <\/code>\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <code>false<\/code>, \u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">static inline void thalt() { running = false; } <\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">tinu16<\/font><br \/>  \u041c\u044b \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c <code>uint16_t<\/code> \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0432 <code>R0<\/code>:<\/p>\n<pre><code class=\"bash\">static inline void tinu16() { fscanf(stdin, \"%hu\", &amp;reg[R0]); }<\/code><\/pre>\n<p>  <font color=\"#3AC1EF\">toutu16<\/font><br \/>  \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>uint16_t<\/code> \u0438\u0437 <code>R0 <\/code>\u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c:<\/p>\n<pre><code class=\"bash\">static inline void toutu16() { fprintf(stdout, \"%hu\\n\", reg[R0]); }<\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c<\/font><\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e \u0445\u043e\u0434\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 \u043a\u043e\u0434\u043e\u043c, \u0442\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0435 \u043c\u043e\u0438 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f! \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443 \u0432\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u0430\u044f VM, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 ASM.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0443\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439: \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u043d\u0430\u0448\u0435\u0439 VM \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">bool running=true; uint16_t PC_START = 0x3000; void start(uint16_t offset) {      reg[RPC] = PC_START + offset; \/\/ RPC \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d     while(running) {         uint16_t i = mr(reg[RPC]++); \/\/ \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0430\u043c\u044f\u0442\u0438,                                      \/\/ \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 RPC                                                 \/\/ \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c RPC                op_ex[OPC(i)](i);            \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e     } }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043d\u0430\u0448\u0443 VM, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <code>ld_img<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c:<\/p>\n<pre><code class=\"bash\">void ld_img(char *fname, uint16_t offset) {     \/\/ \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c (\u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439) \u0444\u0430\u0439\u043b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 VM     FILE *in = fopen(fname, \"rb\");       if (NULL==in) {         fprintf(stderr, \"Cannot open file %s.\\n\", fname);         exit(1);         }     \/\/ \u041f\u043e\u0437\u0438\u0446\u0438\u044f, \u043e\u0442\u043a\u0443\u0434\u0430 \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c     uint16_t *p = mem + PC_START + offset;     \/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c     fread(p, sizeof(uint16_t), (UINT16_MAX-PC_START), in);     \/\/ \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a \u0444\u0430\u0439\u043b\u0430     fclose(in); }<\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>void <\/code>\u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430:<\/p>\n<ul>\n<li>\u043f\u0443\u0442\u044c \u043a \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439;<\/li>\n<li>\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043e\u0442\u043a\u0443\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c.<\/li>\n<\/ul>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0448\u0435\u0439 VM \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">int main(int argc, char **argv) {     ld_img(argv[1], 0x0);     start(0x0);     return 0; }<\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u041d\u0430\u0448\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/font><\/h2>\n<p>  \u041d\u0430\u0448\u0438\u043c \u043f\u0435\u0440\u0432\u0435\u043d\u0446\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u0430\u044f <i>Hello, world!<\/i>, \u0430 \u043d\u0435\u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0435\u0435: \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0430\u044f \u0438\u0445 \u0441\u0443\u043c\u043c\u0443 \u0432 <code>stdout<\/code>.<\/p>\n<p>  \u041b\u0430\u0434\u043d\u043e, \u0448\u0443\u0442\u043a\u0438 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u0412\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">0xF026    \/\/  1111 0000 0010 0110  TRAP tinu16      ;read an uint16_t in R0 0x1220    \/\/  0001 0010 0010 0000  ADD R1,R0,x0     ;add contents of R0 to R1 0xF026    \/\/  1111 0000 0010 0110  TRAP tinu16      ;read an uint16_t in R0 0x1240    \/\/  0001 0010 0010 0000  ADD R1,R1,R0     ;add contents of R0 to R1 0x1060    \/\/  0001 0000 0110 0000  ADD R0,R1,x0     ;add contents of R1 to R0 0xF027    \/\/  1111 0000 0010 0111  TRAP toutu16     ;show the contents of R0 to stdout 0xF025    \/\/  1111 0000 0010 0101  HALT             ;halt<\/code><\/pre>\n<p>  \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u043d\u044f\u0442\u043d\u044b\u0439, \u043f\u0440\u0430\u0432\u0434\u0430? \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u2013 \u044d\u0442\u043e \u0441\u0435\u0440\u0438\u044f \u0447\u0438\u0441\u0435\u043b: <code>0xF026<\/code> <code>0x1220<\/code> <code>0xF026<\/code> <code>0x1240<\/code> <code>0x1060<\/code> <code>0xF027<\/code> <code>0xF025<\/code>. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435, \u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u0438\u0445 \u0447\u0438\u0441\u043b\u0430\u0445 \u043c\u044b \u0438 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 ASM.<\/p>\n<p>  \u0412\u043e\u0437\u044c\u043c\u0435\u043c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, <code>0xF026<\/code>. \u0415\u0433\u043e \u0434\u0432\u043e\u0438\u0447\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430 \u2013 \u044d\u0442\u043e <code>1111 0000 0010 0110<\/code>. \u041b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e <code>1111 <\/code>\u2013 \u044d\u0442\u043e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0434\u043b\u044f <code>trap<\/code>, \u0430 \u0435\u0433\u043e <code>TRAPVECT<\/code>, <code>100111<\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>tinu16<\/code>. <\/p>\n<p>  \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c <code>0x1220<\/code>:<\/p>\n<pre><code class=\"bash\">0x1220 ->  0001   001 000 1  00000  ADD    R1  R0     IMM5=0 <\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/font><\/h2>\n<p>  \u041f\u043b\u043e\u0445\u0438\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u2013 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0442 \u0440\u0443\u043a\u0438, \u0432\u0437\u044f\u0432 \u0440\u0443\u0447\u043a\u0443 \u0438 \u0431\u0443\u043c\u0430\u0433\u0443 (\u043a\u0430\u043a \u043f\u0438\u043e\u043d\u0435\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f).<\/p>\n<p>  \u0425\u043e\u0440\u043e\u0448\u0438\u0435 \u0436\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0430 VM \u2013 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0421\u0438.<\/p>\n<p>  \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0434\u0435\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 (<code>uint16_t program[]<\/code>) \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 <code>fwrite()<\/code> \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>ld_img()<\/code>.<\/p>\n<pre><code class=\"bash\">#include &lt;stdio.h> #include &lt;stdlib.h>  uint16_t program[] = {     \/*mem[0x3000]=*\/    0xF026,    \/\/  1111 0000 0010 0110             TRAP trp_in_u16  ;\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 uint16_t \u0438\u0437 stdin \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 R0     \/*mem[0x3002]=*\/    0x1220,    \/\/  0001 0010 0010 0000             ADD R1,R0,x0     ;\u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 R0 \u043a R1     \/*mem[0x3003]=*\/    0xF026,    \/\/  1111 0000 0010 0110             TRAP trp_in_u16  ;\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 uint16_t \u0438\u0437 stdin \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 R0     \/*mem[0x3004]=*\/    0x1240,    \/\/  0001 0010 0010 0000             ADD R1,R1,R0     ;\u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 R0 \u043a R1     \/*mem[0x3006]=*\/    0x1060,    \/\/  0001 0000 0110 0000             ADD R0,R1,x0     ;\u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 R1 \u043a R0     \/*mem[0x3007]=*\/    0xF027,    \/\/  1111 0000 0010 0111             TRAP trp_out_u16;\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 R0 \u0432 stdout     \/*mem[0x3006]=*\/    0xF025,    \/\/  1111 0000 0010 0101             HALT             ;\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 };  int main(int argc, char** argv) {     char *outf = \"sum.obj\";     FILE *f = fopen(outf, \"wb\");     if (NULL==f) {         fprintf(stderr, \"Cannot write to file %s\\n\", outf);     }     size_t writ = fwrite(program, sizeof(uint16_t), sizeof(program), f);     fprintf(stdout, \"Written size_t=%lu to file %s\\n\", writ, outf);     fclose(f);     return 0; }<\/code><\/pre>\n<p>  \u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0432 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043c\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <code>sum.obj<\/code>.<\/p>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0443 VM \u0434\u043b\u044f \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/xl\/-a\/xh\/xl-axhro-k_nohlu2jdlqy0-m1c.gif\"\/><\/div>\n<p>  \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043b\u0435\u0436\u0438\u0442 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430: <code><a href=\"https:\/\/github.com\/nomemory\/lc3-vm\/blob\/main\/simple_program.c\">simple_program.c<\/a><\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h2><font color=\"#3AC1EF\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u0438 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e \u0442\u0435\u0445, \u043a\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e VM.<\/p>\n<p>  \u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u00ab\u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u0443\u044e\u00bb \u043c\u0430\u0448\u0438\u043d\u0443 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0432\u043e\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0443\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u043a\u0443\u0434\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043d\u0435\u0436\u0435\u043b\u0438 \u043c\u044b \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u043b\u0438.<\/p>\n<p>  \u0411\u044b\u0442\u044c \u043c\u043e\u0436\u0435\u0442, \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Stack_machine\">\u0441\u0442\u0435\u043a\u043e\u0432\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443<\/a> \u0438\u043b\u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0433\u0438\u0431\u0440\u0438\u0434 \u0438\u0437 \u043d\u0435\u0435 \u0438 \u043d\u0430\u0448\u0435\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\u0445 (\u043e\u0442\u043a\u043b\u0438\u043a, \u043a\u0441\u0442\u0430\u0442\u0438, \u0431\u044b\u043b \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0439) \u043b\u044e\u0434\u0438 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043d\u0435\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0443\u043c\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f: \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438, \u043a\u043e\u0434 \u0438\u0437\u043b\u0438\u0448\u043d\u0435 \u0441\u0436\u0430\u0442 \u0438 \u0442.\u0434.<\/p>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e \u044f \u043d\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043c\u0438\u0440 ASM (\u0433\u0434\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438\u043c\u0435\u043d\u0443\u044e\u0442\u0441\u044f \u0432\u0440\u0430\u0437\u0440\u0435\u0437 \u0441 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c\u0438 \u043d\u043e\u0440\u043c\u0430\u043c\u0438), \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a. <\/p>\n<p>  \u0412\u043e\u043e\u0431\u0449\u0435, \u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u043d\u0435 \u0443\u0434\u0435\u043b\u0438\u043b \u0435\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<h2><font color=\"#3AC1EF\">\u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430<\/font><\/h2>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/news.ycombinator.com\/item?id=29492183\">hackernews <\/a><\/li>\n<li><a href=\"https:\/\/www.reddit.com\/r\/programming\/comments\/rc4eho\/writing_a_simple_16_bit_vm_in_less_than_125_lines\/\">reddit\/r\/programming<\/a><\/li>\n<li><a href=\"https:\/\/www.reddit.com\/r\/C_Programming\/comments\/rc3qus\/writing_a_simple_16_bit_vm_in_less_than_125_lines\/\">reddit\/c_programming<\/a><\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/ruvds.com\/ru-rub\/news\/read\/151?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=Bright_Translate&amp;utm_content=umeshhaem_prostuyu_16-bitnuyu_vm_v_125_strok_si\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/kg\/hq\/9z\/kghq9za934md5ceo14bxovinlgy.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/kg\/hq\/9z\/kghq9za934md5ceo14bxovinlgy.jpeg\" data-blurred=\"true\"\/><\/a><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \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\/company\/ruvds\/blog\/597925\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/597925\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/597925\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ga\/xj\/hv\/gaxjhv9crzfooyrxl9ptda6jpjw.png\"\/><\/div>\n<p><\/a><br \/>  \u042d\u0442\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0421\u0438 \u0438 \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u041a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0442\u044c\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 ASM, \u043f\u043b\u044e\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\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-327232","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327232","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=327232"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327232\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}