{"id":318255,"date":"2021-02-18T21:01:17","date_gmt":"2021-02-18T21:01:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=318255"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=318255","title":{"rendered":"\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 200 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 Rust"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<h1 id=\"obyasnenie-legkovesnyh-potokov-v-200-strok-na-rust\">\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 200 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 Rust<\/h1>\n<p>  <\/p>\n<p>\u041b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 (ligthweight threads, coroutines, \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b, green threads) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 Carl Fredrik Samson \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0434\u043b\u044f \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0420\u0430\u0441\u0442, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044f, \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b &quot;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&quot;.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0441\u0443\u043f\u0435\u0440\u0441\u0432\u0435\u0436\u0430\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u043e\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0420\u0430\u0441\u0442, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/github.com\/cfsamson\/example-greenthreads\" rel=\"nofollow noopener noreferrer\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u0434\u0430<\/a> \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<blockquote><p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u044c\u044e. \u041e\u0431\u043e \u0432\u0441\u0435\u0445 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043f\u0438\u0448\u0438\u0442\u0435 \u2014 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044e. \u0421\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0435\u0433\u0447\u0435 \u0438 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435.<\/p><\/blockquote>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"green-threads\">Green Threads<\/h2>\n<p>  <\/p>\n<p>\u0413\u0440\u0438\u043d \u0442\u0440\u0435\u0434\u044b \u0440\u0435\u0448\u0430\u044e\u0442 \u043e\u0431\u0449\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u2014 \u0432\u0430\u043c \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u0448 \u043a\u043e\u0434 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0440\u0430\u0441\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b. \u0420\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043a\u043e\u0434\u0430, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u043e\u0439, \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043c\u0435\u0436\u0434\u0443 &quot;\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438&quot;.<\/p>\n<p>  <\/p>\n<p>\u041b\u0435\u0433\u043a\u043e \u0441\u043f\u0443\u0442\u0430\u0442\u044c \u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c\u043e\u043c, \u043d\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0433\u043e \u2014 \u044d\u0442\u043e \u0434\u0432\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438. \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0437\u043c \u2014 \u044d\u0442\u043e \u043a\u0430\u043a \u0437\u0430\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438. \u0413\u0440\u0438\u043d \u0442\u0440\u0435\u0434\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0443\u043c\u043d\u0435\u0435 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435, \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b.<\/p>\n<p>  <\/p>\n<p>\u0414\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c<\/li>\n<li>\u043d\u0435\u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f (\u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f) \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c<\/li>\n<\/ul>\n<p>  <\/p>\n<h3 id=\"vytesnyayuschaya-mnogozadachnost\">\u0412\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u2014 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f &quot;\u0447\u0435\u043c-\u0442\u043e&quot; \u0435\u0449\u0451 (\u0447\u0430\u0441\u0442\u043e \u043a\u0430\u043a\u0438\u043c-\u043b\u0438\u0431\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u043c). \u042f\u0434\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u0442\u043e \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0432 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0432\u0430\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c UI (User Interface \u2014 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f) \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u0426\u041f\u0423 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0442\u0438\u043f\u0435 \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u043f\u043e\u043d\u044f\u0432 \u043e\u0434\u043d\u0443 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443, \u0432\u044b \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u043f\u043e\u0439\u043c\u0451\u0442\u0435 \u0438 \u0432\u0442\u043e\u0440\u0443\u044e.<\/p>\n<p>  <\/p>\n<h3 id=\"nevytesnyayuschaya-mnogozadachnost\">\u041d\u0435\u0432\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p>  <\/p>\n<p>\u041e \u043d\u0435\u0439 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f. \u0417\u0430\u0434\u0430\u0447\u0430 \u0441\u0430\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u043b\u0443\u0447\u0448\u0435 \u0431\u044b \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u0435\u0449\u0451 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0436\u0434\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f (<code>yielding<\/code> control) \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443. \u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u044e\u0437-\u043a\u0435\u0439\u0441\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f, \u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430. \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0443\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u043e\u0442\u043e\u0432\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<h2 id=\"predvaritelnaya-informaciya\">\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u043f\u0440\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u043a\u0432\u043e\u0437\u044c \u0435\u0451 \u0434\u0435\u0431\u0440\u0438. \u041e\u0431\u0435\u0449\u0430\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u043e \u0434\u0435\u043b\u0443, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043a\u043e\u0434\u0443.<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e-\u043d\u0430\u043f\u0435\u0440\u0432\u043e, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e. \u042d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e, \u0442.\u043a. \u0432\u0438\u0434\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0446\u0435\u043b\u0430\u044f \u043f\u0440\u043e\u0440\u0432\u0430. \u0418\u0434\u0435\u044f \u0432\u0441\u0451 \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f, \u043d\u043e \u043c\u0435\u043b\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0448\u0438\u0440\u043e\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u2014 x86-64. \u0412 \u044d\u0442\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u043d\u0430\u0431\u0436\u0451\u043d \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0438\u0437 16 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uw\/ew\/p2\/uwewp2spgvwfeicha1-2n68imow.png\"><\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/hjl-tools\/x86-psABI\/wiki\/X86-psABI\" rel=\"nofollow noopener noreferrer\">\u0437\u0434\u0435\u0441\u044c<\/a><\/p>\n<p>  <\/p>\n<p>\u0412\u043d\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a &quot;callee saved&quot;. \u042d\u0442\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u2014 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0430\u0437\u0443, \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0432\u0435\u0440\u0445\u0443\u0448\u043a\u0443 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0442.\u0434. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0445 \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0435\u043b\u0430. \u0412\u043e\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">mov %rsp, %rax<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"superbystroe-vvedenie-v-assembler\">\u0421\u0443\u043f\u0435\u0440\u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440<\/h3>\n<p>  <\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u042f\u0437\u044b\u043a \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u044b\u0439. \u041a\u0430\u0436\u0434\u044b\u0439 \u0426\u041f\u0423 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 (\u043d\u0430\u0431\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u043c\u0438 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430: AT&amp;T \u0438 \u0418\u043d\u0442\u0435\u043b.<\/p>\n<p>  <\/p>\n<p>\u0414\u0438\u0430\u043b\u0435\u043a\u0442 AT&amp;T \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u043d\u0430 Rust. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043e\u0442 \u0418\u043d\u0442\u0435\u043b, \u0443\u043a\u0430\u0437\u0430\u0432 \u043d\u0430 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0420\u0430\u0441\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u043c\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430\u043c\u0438 \u043d\u0430 LLVM. \u0414\u043b\u044f LLVM \u043e\u043d \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u0421\u0438, \u043d\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043b\u0435\u043a\u0442 AT&amp;T.<\/p>\n<p>  <\/p>\n<p>\u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0438\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438. \u0412\u043e\u0442 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u0434\u0440\u0435\u0441\u0443\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>%rax<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">%rax    # 64 \u0431\u0438\u0442\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 (8 \u0431\u0430\u0439\u0442) %eax    # \u043c\u043b\u0430\u0434\u0448\u044b\u0435 32 \u0431\u0438\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 &quot;rax&quot; %ax     # \u043c\u043b\u0430\u0434\u0448\u0438\u0435 16 \u0431\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 &quot;rax&quot; %ah     # \u0441\u0442\u0430\u0440\u0448\u0438\u0435 8 \u0431\u0438\u0442 \u0447\u0430\u0441\u0442\u0438 &quot;ax&quot; \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 &quot;rax&quot; %al     # \u043c\u043b\u0430\u0434\u0448\u0438\u0435 8 \u0431\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 &quot;rax&quot;<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">+-----------------------------------------------------------------------+ |76543210 76543210 76543210 76543210 76543210 76543210 76543210 76543210| +--------+--------+--------+--------+--------+--------+--------+--------+ |        |        |        |        |        |        |   %ah  |   %al  | +--------+--------+--------+--------+--------+--------+--------+--------+ |        |        |        |        |        |        |       %ax       | +--------+--------+--------+--------+--------+--------+-----------------+ |        |        |        |        |               %eax                | +--------+--------+--------+--------+-----------------------------------+ |                                 %rax                                  | +-----------------------------------------------------------------------+<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. \u0422\u0430\u043a \u043a\u0430\u043a \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0441\u0435\u0439\u0447\u0430\u0441 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f 64\u0431\u0438\u0442\u043d\u044b\u043c\u0438, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 64\u0431\u0438\u0442\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b.<\/p>\n<p>  <\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0432 &quot;\u0441\u043b\u043e\u0432\u0430\u0445&quot; \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c\u0438. \u041e\u043d\u043e \u043f\u043e\u0448\u043b\u043e \u0438\u0437 \u0442\u0435\u0445 \u0432\u0440\u0435\u043c\u0451\u043d, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0431\u044b\u043b\u0438 \u0448\u0438\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 16 \u0431\u0438\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u043b\u043e\u0432\u0430 \u0440\u0430\u0432\u0435\u043d 16 \u0431\u0438\u0442\u0430\u043c. \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0442.\u043a. \u0432 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0435 AT&amp;T \u0431\u0443\u0434\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c <code>q<\/code> (quad-word \u2014 \u0447\u0435\u0442\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e) \u0438\u043b\u0438 <code>l<\/code> (long-word \u2014 \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e). \u0422\u0430\u043a \u0447\u0442\u043e <code>movq<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 4 * 16 \u0431\u0438\u0442 = 64 \u0431\u0438\u0442.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0430 <code>mov<\/code> \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c. \u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0435 AT&amp;T.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442 \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 x86-64. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>  <\/p>\n<h2 id=\"primer-kotoryy-my-budem-sobirat\">\u041f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c<\/h2>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u0442\u0435\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438.<\/p>\n<p>  <\/p>\n<h3 id=\"podgotovka-proekta\">\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c &quot;green_threads&quot;. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">cargo init<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0447\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0420\u0430\u0441\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">rustup override set nightly<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 <code>main.rs<\/code> \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u043b\u0430\u0433\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u043a\u0440\u043e\u0441 <code>llvm_asm!<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#![feature(llvm_asm)]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430, \u0442\u043e\u043b\u044c\u043a\u043e 48 \u0431\u0430\u0439\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u044c \u043f\u043e\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0434\u0430 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">const SSIZE: isize = 48;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0443\u044e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430. \u0412\u0441\u0451, \u0447\u0442\u043e \u0442\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0443\u0436\u043d\u043e, \u0442\u0430\u043a \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a, \u0442\u0430\u043a \u0447\u0442\u043e \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u0442.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#[derive(Debug, Default)] #[repr(C)] struct ThreadContext {     rsp: u64, }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a &quot;callee saved&quot; \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0430 \u0431\u044b\u043b\u0430 \u0440\u0430\u043d\u0435\u0435. \u042d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 ABI x86-64. \u041d\u043e \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0431\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0438\u043c, \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u0442\u0435\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u0437-\u0437\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>#[repr(C)]<\/code>. \u0423 \u0420\u0430\u0441\u0442\u0430 \u043d\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e ABI, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0435\u0442 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>rsp<\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0435 8 \u0431\u0430\u0439\u0442. \u0423 \u0421\u0438 \u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 ABI, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn hello() -&gt; ! {     println!(&quot;I LOVE WAKING UP ON A NEW STACK!&quot;);      loop {} }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b.<\/p>\n<p>  <\/p>\n<p>\u0410 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u0438\u0448\u0435\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0430\u0441 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">unsafe fn gt_switch(new: *const ThreadContext) {     llvm_asm!(&quot;         mov     0x00($0), %rsp         ret     &quot;     :     : &quot;r&quot;(new)     :     : &quot;alignstack&quot; \/\/ \u043f\u043e\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e, \u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435     ); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0440\u044e\u043a. \u041c\u044b \u043f\u0438\u0448\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043d\u043e\u0432\u043e\u043c \u0441\u0442\u0435\u043a\u0435. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430, \u0433\u0434\u0435 \u043c\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>rsp<\/code> (\u0430\u0434\u0440\u0435\u0441 \u0432 <code>new.rsp<\/code> \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u0442\u0435\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u0434\u0451\u0442 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435). \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c?<\/p>\n<p>  <\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>ret<\/code> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u0441\u0442\u0435\u043a\u0430. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>%rsp<\/code> \u043d\u0430\u0448 \u0430\u0434\u0440\u0435\u0441, \u043c\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0438\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0439 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>ret<\/code>, \u043c\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0441\u0442\u0435\u043a\u0435.<\/p>\n<p>  <\/p>\n<p>\u0418 \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0447\u0438\u0442\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0435\u0451.<\/p>\n<p>  <\/p>\n<h3 id=\"kratkoe-vvedenie-v-makros-dlya-assemblernyh-vstavok\">\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u043a\u0440\u043e\u0441 \u0434\u043b\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a<\/h3>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0447\u0443\u0436\u0435\u0440\u043e\u0434\u043d\u044b\u043c. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041e\u0431\u044a\u044f\u0441\u043d\u044e, \u0447\u0442\u043e \u0442\u0443\u0442 \u0438 \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0439:<\/p>\n<p>  <\/p>\n<p><code>unsafe<\/code> \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0438\u0448\u0435\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0442\u043e \u044d\u0442\u043e \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e.<\/p>\n<p>  <\/p>\n<p><code>gt_switch(new: *const ThreadContext)<\/code> \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>ThreadContext<\/code>, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435.<\/p>\n<p>  <\/p>\n<p><code>llvm_asm!(&quot;<\/code> \u2014 \u043c\u0430\u043a\u0440\u043e\u0441 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0420\u0430\u0441\u0442\u0430. \u041e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0435\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 AT&amp;T (\u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u2014 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u2014 <code>mov 0x00($0), %rsp<\/code>. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0445\u0440\u0430\u043d\u044f\u0449\u0435\u0435\u0441\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0x00 (\u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435; \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0435) \u043e\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 $0 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>rsp<\/code>. \u0420\u0435\u0433\u0438\u0441\u0442\u0440 <code>rsp<\/code> \u0445\u0440\u0430\u043d\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u043a\u0435. \u041c\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043d\u0430 \u0432\u0435\u0440\u0445\u0443\u0448\u043a\u0443 \u0441\u0442\u0435\u043a\u0443, \u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0432\u044b \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0435 <code>$0<\/code>. \u042d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0442\u0441\u044f, \u043a\u0430\u043a 0, 1, 2 \u0438 \u0442.\u0434., \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 <code>output<\/code> \u0438 \u0434\u0432\u0438\u0433\u0430\u044f\u0441\u044c \u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c <code>input<\/code>. \u0423 \u043d\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <code>$0<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b <code>$<\/code> \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435, \u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043e\u043d \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443), \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0430\u043a (\u0434\u0430, \u0441\u0438\u043c\u0432\u043e\u043b \u0434\u043e\u043b\u043b\u0430\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u044d\u0442\u043e x86 \u0438\u043b\u0438 x86-64).<\/p>\n<p>  <\/p>\n<p><code>ret<\/code> \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0435 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0438 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u043d\u0435\u043c\u0443. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043c\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0435\u0433\u043e \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u0442\u0435\u043a\u0443.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">output :<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430. \u0412 \u043d\u0438\u0445 \u0447\u0435\u0442\u044b\u0440\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043f\u043e\u0441\u043b\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430. \u041f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>output<\/code>, \u0438 \u0432 \u043d\u0451\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">input : &quot;r&quot;(new)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 \u044d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>input<\/code>. \u041b\u0438\u0442\u0435\u0440\u0430\u043b <code>&quot;r&quot;<\/code> \u2014 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c (<code>constraint<\/code>). \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0438\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438). <code>&quot;r&quot;<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0432 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043a\u0430\u0445 \u2014 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u0448\u0438\u0440\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435, \u043d\u043e, \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u043d\u0430\u043c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">clobber list :<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u043f\u0446\u0438\u044f \u2014 <code>clobber list<\/code> \u2014 \u0441\u043f\u0438\u0441\u043e\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0442\u0440\u043e\u0433\u0430\u0442\u044c, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u043c\u0443 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438 \u0432 \u0441\u0432\u043e\u0451\u043c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u043a\u043e\u0434\u0435. \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u0432 \u043a\u0430\u043a\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0438. \u041d\u0443 \u0430 \u0442.\u043a. \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u0441\u0442\u0435\u043a\u0443, \u0442\u043e \u0442\u0443\u0442 \u043d\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">options : &quot;alignstack&quot;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 \u044d\u0442\u043e \u043e\u043f\u0446\u0438\u0438. \u0414\u043b\u044f \u0420\u0430\u0441\u0442\u0430 \u043e\u043d\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u0440\u0438: <code>alignstack<\/code>, <code>volatile<\/code> \u0438 <code>intel<\/code>. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e, \u0433\u0434\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u0438\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0434 Windows \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u043f\u0446\u0438\u044e <code>alignstack<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"zapusk-primera\">\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0430<\/h3>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut ctx = ThreadContext::default();     let mut stack = vec![0_u8; SSIZE as usize];      unsafe {         let stack_bottom = stack.as_mut_ptr().offset(SSIZE);         let sb_aligned = (stack_bottom as usize &amp; !15) as *mut u8;         std::ptr::write(sb_aligned.offset(-16) as *mut u64, hello as u64);         ctx.rsp = sb_aligned.offset(-16) as u64;         gt_switch(&amp;mut ctx);     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430. <code>hello<\/code> \u0443\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c (\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e), \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u0441\u0442\u0443\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 <code>u64<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 64\u0445\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0438\u043c\u0435\u044e\u0442 \u0442\u0430\u043a\u0443\u044e \u0434\u043b\u0438\u043d\u0443, \u0430 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u0435\u043a.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0427\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e \u0441\u0442\u0435\u043a \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0432\u0435\u0449\u044c \u2014 \u0441\u0442\u0435\u043a \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043d\u0438\u0437 (\u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043c\u043b\u0430\u0434\u0448\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432). \u0415\u0441\u043b\u0438 48\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 <em>0<\/em> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <em>47<\/em>, \u0438\u043d\u0434\u0435\u043a\u0441 <em>32<\/em> \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 16 \u0431\u0430\u0439\u0442 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430\/\u0431\u0430\u0437\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430.<\/p><\/blockquote>\n<p>  <\/p>\n<pre><code class=\"plaintext\">|0          1           2          3           4       |4  5 |0123456789 012345|6789 0123456789 01|23456789 01234567|89 0123456789 |                 |                  |XXXXXXXX         | |                 |                  |                 stack bottom |0th byte         |16th byte         |32nd byte<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 16 \u0431\u0430\u0439\u0442 \u043e\u0442 \u0431\u0430\u0437\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430 (\u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u044f \u043f\u0438\u0441\u0430\u043b \u043f\u0440\u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442?)<\/p>\n<p>  <\/p>\n<blockquote><p>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0430 <code>let sb_aligned = (stack_bottom as usize &amp; !15) as *mut u8;<\/code>? \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 <code>Vec&lt;u8&gt;<\/code>, \u043d\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438, \u0447\u0442\u043e \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0440\u0430\u0432\u043d\u0435\u043d\u0430 \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442. \u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e, \u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e 16 \u0431\u0430\u0439\u0442\u0430\u043c. \u0415\u0441\u043b\u0438 \u043e\u043d \u0443\u0436\u0435 \u043a\u0440\u0430\u0442\u0435\u043d, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p><\/blockquote>\n<p>\u041c\u044b \u043a\u0430\u0441\u0442\u0443\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043d\u0430 \u0442\u0438\u043f <code>u64<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>u8<\/code>. \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0448\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>u64<\/code> \u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 32-39, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 8 \u0431\u0430\u0439\u0442 \u043c\u0435\u0441\u0442\u0430 \u043f\u043e\u0434 \u043d\u0435\u0433\u043e. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0448\u0435 <code>u64<\/code>-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u044e 32, \u0430 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>rsp<\/code> (Stack Pointer \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a) \u043c\u044b \u043a\u043b\u0430\u0434\u0451\u043c <em>\u0430\u0434\u0440\u0435\u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 32 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u0442\u0435\u043a\u0435<\/em>. \u041c\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0441\u0430\u043c\u043e <code>u64<\/code>-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0442\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0431\u0430\u0439\u0442 \u044d\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>cargo run<\/code>, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">dau@dau-work-pc:~\/Projects\/rust-programming-book\/green_threads\/green_threads$ cargo run    Compiling green_threads v0.1.0 (\/home\/dau\/Projects\/rust-programming-book\/green_threads\/green_threads)     Finished dev [unoptimized + debuginfo] target(s) in 0.44s      Running `target\/debug\/green_threads` I LOVE WAKING UP ON A NEW STACK!<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442? \u041c\u044b \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>hello<\/code> \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435, \u043d\u043e \u043e\u043d\u0430 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u043c\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043d\u0430\u0448\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0435\u043a\u043e\u043c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u0434. \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<p>  <\/p>\n<h2 id=\"stek\">\u0421\u0442\u0435\u043a<\/h2>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c. \u0423 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043c\u044f\u0442\u044c. \u041d\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 &quot;\u0441\u0442\u0435\u043a\u043e\u0432\u043e\u0439&quot; \u0438\u043b\u0438 &quot;\u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u043a\u0443\u0447\u0438&quot; \u2014 \u044d\u0442\u043e \u0432\u0441\u0451 \u0447\u0430\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0421\u0442\u0435\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043d\u0438\u044f (push\/pop) \u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u043c. \u041f\u0430\u043c\u044f\u0442\u044c \u0432 \u043a\u0443\u0447\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u0430.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0435\u043a\u043e\u043c \u0438 \u043a\u0443\u0447\u0435\u0439 \u2014 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0435\u0439, \u0433\u0434\u0435 \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <a href=\"https:\/\/doc.rust-lang.org\/stable\/book\/ch04-01-what-is-ownership.html#the-stack-and-the-heap\" rel=\"nofollow noopener noreferrer\">\u0433\u043b\u0430\u0432\u0443 \u0432 Rust Programming Language<\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"kak-vyglyadit-stek\">\u041a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0442\u0435\u043a<\/h3>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430. 64\u0431\u0438\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b \u0447\u0438\u0442\u0430\u044e\u0442 \u043f\u043e 8 \u0431\u0430\u0439\u0442 \u0437\u0430 \u0440\u0430\u0437. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435, \u0434\u0430\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u0441\u0442\u0435\u043a \u0432 \u0432\u0438\u0434\u0435 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u0430<code>u8<\/code>, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 <code>000<\/code>, <code>0008<\/code> \u0438\u043b\u0438 <code>0016<\/code>.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uc\/8t\/xr\/uc8txryet7wehytsqhgufiqichw.png\"><\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0435\u043a \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043d\u0438\u0437, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0432\u0435\u0440\u0445\u0443 \u0438 \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u043d\u0438\u0436\u0435.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432 <code>stack pointer<\/code> \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a, \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442, \u043c\u044b \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u043c\u0438, \u0447\u0442\u043e \u0430\u0434\u0440\u0435\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, <em>\u043a\u0440\u0430\u0442\u0435\u043d 16<\/em> (\u0441\u0447\u0438\u0442\u0430\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0435\u043a\u0430 \u2014 \u043f\u0440\u0438\u043c). \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0448\u0435, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 <code>0008<\/code> (\u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0441\u0442\u0435\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u0445\u0443).<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c (\u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>gt_switch<\/code>), \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c: \u043a\u043e\u0434 \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432\u044b\u0432\u043e\u0434 \u0430\u0434\u0440\u0435\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>hello<\/code>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445 \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432\u044b\u0432\u043e\u0434 \u043f\u0443\u0441\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0443\u0434\u043e\u0431\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">print!(     &quot;hello func address: 0x{addr:016X} ({addr})\\n\\n&quot;,     addr = hello as usize );  for i in (0..SSIZE).rev() {     print!(         &quot;mem: {}, value: 0x{:02X}\\n{}&quot;,         stack.as_ptr().offset(i as isize) as usize,         *stack.as_ptr().offset(i as isize),         if i % 8 == 0 { &quot;\\n&quot; } else { &quot;&quot; }     ); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">hello func address: 0x0000560CD80B50B0 (94613164216496)  mem: 94613168839439, value: 0x00 mem: 94613168839438, value: 0x00 mem: 94613168839437, value: 0x00 mem: 94613168839436, value: 0x00 mem: 94613168839435, value: 0x00 mem: 94613168839434, value: 0x00 mem: 94613168839433, value: 0x00 mem: 94613168839432, value: 0x00  mem: 94613168839431, value: 0x00 mem: 94613168839430, value: 0x00 mem: 94613168839429, value: 0x56 mem: 94613168839428, value: 0x0C mem: 94613168839427, value: 0xD8 mem: 94613168839426, value: 0x0B mem: 94613168839425, value: 0x50 mem: 94613168839424, value: 0xB0  mem: 94613168839423, value: 0x00 mem: 94613168839422, value: 0x00 mem: 94613168839421, value: 0x00 mem: 94613168839420, value: 0x00 mem: 94613168839419, value: 0x00 mem: 94613168839418, value: 0x00 mem: 94613168839417, value: 0x00 mem: 94613168839416, value: 0x00  mem: 94613168839415, value: 0x00 mem: 94613168839414, value: 0x00 mem: 94613168839413, value: 0x00 mem: 94613168839412, value: 0x00 mem: 94613168839411, value: 0x00 mem: 94613168839410, value: 0x00 mem: 94613168839409, value: 0x00 mem: 94613168839408, value: 0x00  mem: 94613168839407, value: 0x00 mem: 94613168839406, value: 0x00 mem: 94613168839405, value: 0x00 mem: 94613168839404, value: 0x00 mem: 94613168839403, value: 0x00 mem: 94613168839402, value: 0x00 mem: 94613168839401, value: 0x00 mem: 94613168839400, value: 0x00  mem: 94613168839399, value: 0x00 mem: 94613168839398, value: 0x00 mem: 94613168839397, value: 0x00 mem: 94613168839396, value: 0x00 mem: 94613168839395, value: 0x00 mem: 94613168839394, value: 0x00 mem: 94613168839393, value: 0x00 mem: 94613168839392, value: 0x00  I LOVE WAKING UP ON A NEW STACK!<\/code><\/pre>\n<p>  <\/p>\n<p>\u042f \u0432\u044b\u0432\u0435\u043b \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>u64<\/code>, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0432 \u043d\u0438\u0445 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f (\u0447\u0442\u043e \u0432\u0440\u044f\u0434 \u043b\u0438 \u2014 \u043f\u0440\u0438\u043c.).<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0442\u0430\u043a \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 <code>94613168839392<\/code> \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u043c <code>94613168839439<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0410\u0434\u0440\u0435\u0441\u0430 \u0441 <code>94613168839424<\/code> \u043f\u043e <code>94613168839431<\/code> \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043b\u044f \u043d\u0430\u0441 \u043e\u0441\u043e\u0431\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441. \u041f\u0435\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0448\u0435\u0433\u043e <code>stack pointer<\/code>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>%rsp%<\/code>. \u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0432 \u0441\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c. (\u043f\u0440\u0438\u043c \u2014 \u043a\u043e\u0440\u044f\u0432\u043e \u0438 \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e!!!)<\/p>\n<p>  <\/p>\n<p>\u041d\u0443 \u0430 \u0441\u0430\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>0xB0, 0x50, 0x0B, 0xD8, 0x0C, 0x56, 0x00, 0x00<\/code> \u2014 \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c (\u0430\u0434\u0440\u0435\u0441 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438) \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>hello()<\/code>, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <code>u8<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u043c\u0435\u0440\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043a\u0443\u0434\u043d\u043e\u0433\u043e 48\u0431\u0430\u0439\u0442\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0441\u043a\u043e\u0440\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0445\u0432\u0430\u0442\u0430\u0442\u044c, \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435, \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f, \u0430 \u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0437\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c \u0438 \u0432\u044b\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  <\/p>\n<h3 id=\"razmery-steka\">\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0441\u0442\u0435\u043a\u0430<\/h3>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 8 \u041c\u0431, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440. \u042d\u0442\u043e\u0433\u043e \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043d\u043e \u043d\u0430 \u043f\u043b\u0435\u0447\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0435\u0441\u0442\u044c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043f\u0440\u0435\u0441\u043b\u043e\u0432\u0443\u0442\u043e\u0433\u043e &quot;\u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430&quot; (stack overflow), \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0430\u0441 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0441\u0430\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0435\u043a\u0430\u043c\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440. 8 \u041c\u0431 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0432 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0435\u043a\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u043c\u044b \u043e\u0447\u0435\u043d\u044c \u0441\u043a\u043e\u0440\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u043c\u0441\u044f \u0441 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<h3 id=\"rasshiryaemye-steki\">\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0435 \u0441\u0442\u0435\u043a\u0438<\/h3>\n<p>  <\/p>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0435 (growable \u2014 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0435 \u0440\u0430\u0441\u0442\u0438) \u0441\u0442\u0435\u043a\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0437\u0430\u0434\u0430\u0447. \u041d\u043e \u043f\u0440\u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u0445\u043e\u0434\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043a\u0430, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u0439 \u0441\u0442\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432\u0441\u0451 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0433\u043e, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u044f\u0437\u044b\u043a\u0435 Go. \u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432 8 \u041a\u0431, \u0438 \u043a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0451\u043c \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0435\u043a \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435. \u041a\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b, \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b, \u0430 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430. \u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u0442\u043e, \u043a\u0430\u043a GO \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0442\u0435\u043a\u043e\u043c (\u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430), \u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0441 \u043a \u044d\u0442\u043e\u0439 <a href=\"https:\/\/blog.cloudflare.com\/how-stacks-are-handled-in-go\/\" rel=\"nofollow noopener noreferrer\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u0432\u0435\u0449\u044c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0430\u0436\u043d\u0430 \u043f\u043e\u0437\u0436\u0435: \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 (<code>Vec&lt;u8&gt;<\/code>) \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u041e\u043d \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u0435\u043d, \u043d\u043e \u0441 \u043d\u0438\u043c \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u043d\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438, \u0447\u0442\u043e \u043e\u043d \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0435\u0436\u043d\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<br \/>  \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u0435\u0441\u043b\u0438 \u0441\u0442\u0435\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0451\u043d \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0441\u0442\u0430\u043d\u0443\u0442 \u043d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438. \u0427\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435, \u043a\u0430\u043a \u0432\u044b\u0437\u043e\u0432 <code>push()<\/code> \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430 (\u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 \u0432\u0435\u043a\u0442\u043e\u0440 \u2014 \u043f\u0440\u0438\u043c.) \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u0410 \u043a\u043e\u0433\u0434\u0430 \u0432\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f, \u0442\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043a\u0443\u0441\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p><\/blockquote>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u044b \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0435\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0438\u0445 \u0433\u0440\u0438\u043d \u0442\u0440\u0435\u0434\u043e\u0432. \u0412\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0431\u0435\u0449\u0430\u044e \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<h3 id=\"kak-nastroit-stek\">\u041a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0435\u043a<\/h3>\n<p>  <\/p>\n<p>Windows x86-64 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442 \u0441\u0442\u0435\u043a \u0447\u0443\u0442\u044c \u0438\u043d\u0430\u0447\u0435, \u0447\u0435\u043c \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u043c \u0432\u044b\u0437\u043e\u0432\u043e\u0432 <a href=\"https:\/\/gitlab.com\/x86-psABIs\/x86-64-ABI\/-\/wikis\/uploads\/fc4752d690a71a9a478cbcfd6b6ec0b9\/x86-64-psABI-2020-10-07.pdf\" rel=\"nofollow noopener noreferrer\">x86-64 psABI<\/a>. \u042f \u0443\u0434\u0435\u043b\u044e \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0442\u0435\u043a\u0443 Windows \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043d\u0435 \u0442\u0430\u043a\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0435 \u0441\u0442\u0435\u043a \u043f\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0447\u0442\u043e \u043c\u044b \u0438 \u0434\u0435\u043b\u0430\u0435\u043c.<\/p>\n<p>  <\/p>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0435\u043a\u0430 \u0432 psABI \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/7z\/u_\/d1\/7zu_d1i1okboirgfozfbvugfptc.png\"><\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, <code>%rsp<\/code> \u2014 \u044d\u0442\u043e \u043d\u0430\u0448 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a. \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u0430\u043a \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043e\u0442 base pointer, \u043a\u0440\u0430\u0442\u043d\u0443\u044e 16. \u0410\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 8 \u0431\u0430\u0439\u0442\u0430\u0445, \u0438, \u043a\u0430\u043a \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, \u0432\u044b\u0448\u0435 \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 \u0443\u043c\u0435, \u043a\u043e\u0433\u0434\u0430 \u0445\u043e\u0442\u0438\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435.<\/p>\n<p>  <\/p>\n<p>\u0412\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>stack_ptr + SSIZE - 16<\/code> \u0431\u0435\u0437 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a. \u041f\u043e-\u043b\u044e\u0431\u043e\u043c\u0443 <code>SSIZE<\/code> \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445.<\/p>\n<p>  <\/p>\n<p>\u0414\u0443\u043c\u0430\u0439\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e) \u0440\u0430\u0432\u0435\u043d 8 \u0431\u0430\u0439\u0442\u0430\u043c. \u041c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e <code>rsp<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c ABI.<\/p>\n<p>  <\/p>\n<p>\u0423 \u043d\u0430\u0441 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430-\u0442\u043e \u043d\u0435\u0442, \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>stack_ptr + SSIZE - 16<\/code>. \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0431\u0430\u0439\u0442\u044b \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u043e\u0442 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u043a \u0441\u0442\u0430\u0440\u0448\u0435\u043c\u0443:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>stack_ptr + SSIZE<\/code> (\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439 16 \u0431\u0430\u0439\u0442), \u0442.\u043a. \u043c\u044b \u0432\u044b\u0439\u0434\u0435\u043c \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e.<\/li>\n<li>\u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u043c, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 <code>stack_ptr + SSIZE - 8<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043d\u043e \u043d\u0435 \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d\u044b \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e <code>stack_ptr + SSIZE - 16<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043c\u044b \u043f\u0438\u0448\u0435\u043c 8 \u0431\u0430\u0439\u0442 \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>-16, -15, -14, ..., -9<\/code> \u043e\u0442 <em>\u0441\u0442\u0430\u0440\u0448\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430<\/em> \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043a\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0437\u0430\u043f\u0443\u0442\u044b\u0432\u0430\u044f, \u0447\u0430\u0441\u0442\u043e \u0437\u043e\u0432\u0451\u0442\u0441\u044f <em>bottom of stack<\/em>, \u0442.\u043a. \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043c\u043b\u0430\u0434\u0448\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 (\u043f\u0440\u0438\u043c \u2014 \u0435\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u0432\u0432\u0435\u0440\u0445\u0443 \u0431\u0443\u0434\u0443\u0442 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u0430 \u0432\u043d\u0438\u0437\u0443 \u2014 \u0441\u0442\u0430\u0440\u0448\u0438\u0435, \u0442\u043e \u0434\u043d\u043e \u0441\u0442\u0435\u043a\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0438\u0437\u0443)).<\/p>\n<p>  <\/p>\n<h3 id=\"bonusnyy-material\">\u0411\u043e\u043d\u0443\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b<\/h3>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u044e\u0431\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e.<\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u0432\u0435\u0442 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u043a\u043e\u0434 \u043d\u0430 \u0420\u0430\u0441\u0442\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u0442\u0435\u043a\u0443 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0435\u0433\u043e, \u043a\u0430\u043a \u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0435\u043a.<\/p>\n<p>  <\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u0442\u043e, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 \u0434\u043e 1024 \u0431\u0430\u0439\u0442, \u0447\u0442\u043e\u0431\u044b \u0432 \u043d\u0451\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448 \u043a\u043e\u0434 \u0441\u043c\u043e\u0433 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0443\u0442 \u0432\u044b\u0432\u043e\u0434 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<h4 id=\"vzglyanem-na-stek\">\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0441\u0442\u0435\u043a<\/h4>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0434\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430: <code>BEFORE.txt<\/code> (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0435\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043d\u0435\u0433\u043e) \u0438 <code>AFTER.txt<\/code> (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u0442\u0435\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f). \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0432\u043e\u0438\u043c\u0438 \u0433\u043b\u0430\u0437\u0430\u043c\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0436\u0438\u0432\u0451\u0442 \u0441\u0442\u0435\u043a \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0438\u043c \u043a\u043e\u0434\u043e\u043c.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0435 \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435, \u0442\u043e \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u044c\u0442\u0435\u0441\u044c \u2014 \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0435\u0442\u0430\u043b\u0438.<\/p><\/blockquote>\n<p>  <\/p>\n<pre><code class=\"rust\">#![feature(llvm_asm)] #![feature(naked_functions)]  use std::io::Write;  const SSIZE: isize = 1024; static mut S_PTR: *const u8 = 0 as *const u8;  #[derive(Debug, Default)] #[repr(C)] struct ThreadContext {     rsp: u64,     r15: u64,     r14: u64,     r13: u64,     r12: u64,     rbx: u64,     rbp: u64, }  fn print_stack(filename: &amp;str) {     let mut f = std::fs::File::create(filename).unwrap();     unsafe {         for i in (0..SSIZE).rev() {             writeln!(                 f,                 &quot;mem: {}, val: {}&quot;,                 S_PTR.offset(i as isize) as usize,                 *S_PTR.offset( i as isize)             )             .expect(&quot;Error writing to file.&quot;);         }     } }  fn hello() {     println!(&quot;I LOVE WAKING UP ON A NEW STACK!&quot;);     print_stack(&quot;AFTER.txt&quot;);      loop {} }  unsafe fn gt_switch(new: *const ThreadContext) {     llvm_asm!(&quot;         mov     0x00($0), %rsp         ret         &quot;         :         : &quot;r&quot;(new)         :         : &quot;alignstack&quot;     ); }  fn main() {      let mut ctx = ThreadContext::default();     let mut stack = vec![0_u8; SSIZE as usize];     let stack_ptr = stack.as_mut_ptr();      unsafe {         S_PTR = stack_ptr;         std::ptr::write(stack_ptr.offset(SSIZE - 16) as *mut u64, hello as u64);         print_stack(&quot;BEFORE.txt&quot;);         ctx.rsp = stack_ptr.offset(SSIZE - 16) as u64;         gt_switch(&amp;mut ctx);     } }<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"realizaciya-grin-tredov\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0433\u0440\u0438\u043d \u0442\u0440\u0435\u0434\u043e\u0432<\/h2>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435, \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c, \u0437\u0430\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c, \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 &quot;\u043b\u0443\u0447\u0448\u0438\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c&quot; (best practicies) \u0432 \u0420\u0430\u0441\u0442\u0435. \u042f \u0445\u043e\u0447\u0443 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0431\u0435\u0437 \u0441\u0432\u0435\u0440\u0445\u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430, \u0442\u043e \u043f\u0440\u0438\u0437\u044b\u0432\u0430\u044e \u0442\u0435\u0431\u044f, \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 PR \u0432 <a href=\"https:\/\/github.com\/cfsamson\/example-greenthreads\" rel=\"nofollow noopener noreferrer\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"pristupim\">\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c<\/h3>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u2014 \u0443\u0434\u0430\u043b\u0438\u043c \u043d\u0430\u0448 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>main.rs<\/code>, \u043d\u0430\u0447\u0430\u0432 \u0432\u0441\u0451 \u0441 \u043d\u0443\u043b\u044f, \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#![feature(llvm_asm)] #![feature(naked_functions)]  use std::ptr;  const DEFAULT_STACK_SIZE: usize = 1024 * 1024 * 2; const MAX_THREADS: usize = 4;  static mut RUNTIME: usize = 0;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0434\u0432\u0435 \u0444\u0438\u0447\u0438: \u0440\u0430\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u0443\u044e <code>asm<\/code> \u0438 \u0444\u0438\u0447\u0443 <code>naked_functions<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0438.<\/p>\n<p>  <\/p>\n<h4 id=\"naked_functions\"><code>naked_functions<\/code><\/h4>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0420\u0430\u0441\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043e\u043d \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043a \u043d\u0435\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 &quot;\u043f\u0440\u043e\u043b\u043e\u0433&quot; \u0438 &quot;\u044d\u043f\u0438\u043b\u043e\u0433&quot;, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0441\u0442\u0435\u043a \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d\u043d\u044b\u043c. \u0425\u043e\u0442\u044f \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0441\u0442\u0435\u043a, \u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 <code>#[naked]<\/code> \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u043b\u043e\u0433\u0430 \u0438 \u044d\u043f\u0438\u043b\u043e\u0433\u0430 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0413\u043b\u0430\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u043c\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0442\u043e \u043f\u0440\u043e <code>naked_functions<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/rust-lang\/rfcs\/blob\/master\/text\/1201-naked-fns.md\" rel=\"nofollow noopener noreferrer\">RFC #1201<\/a>.<\/p>\n<p>  Naked-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b, \u0432 \u0441\u0442\u0435\u043a \u0437\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430, \u0441\u0442\u0435\u043a \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0442.\u043f. \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 naked-\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u0415\u0441\u043b\u0438 \u0441\u043b\u0435\u043f\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>ret<\/code> \u0432 naked-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u043a\u0430\u043a \u0432 \u043f\u0440\u043e\u043b\u043e\u0433\u0435 \u0438 \u044d\u043f\u0438\u043b\u043e\u0433\u0435, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 ABI), \u0442\u043e \u043f\u043e\u043f\u0430\u0434\u0451\u0442\u0435 \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u044e \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0412 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0435 \u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435 \u0441 \u043c\u0443\u0441\u043e\u0440\u043e\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445.<\/p><\/blockquote>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0435\u043a\u0430 <code>DEFAULT_STACK_SIZE<\/code> \u0437\u0430\u0434\u0430\u043d \u0432 2 \u041c\u0411, \u0447\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435, \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u043d\u0443\u0436\u0434. \u0422\u0430\u043a \u0436\u0435 \u0437\u0430\u0434\u0430\u0451\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0435\u0434\u043e\u0432 (<code>MAX_THREADS<\/code>) \u0440\u0430\u0432\u043d\u044b\u043c 4, \u0442.\u043a. \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u2014 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 <code>RUNTIME<\/code> \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0434\u0430, \u044f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u043e, \u043e\u043d\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0434\u0430\u043b\u044c\u0448\u0435, \u0430 \u0437\u0430\u0434\u0430\u0451\u043c \u0434\u043b\u044f \u043d\u0435\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438).<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043e\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0435-\u0447\u0442\u043e \u0441\u0432\u0435\u0436\u0435\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">pub struct Runtime {     threads: Vec&lt;Thread&gt;,     current: usize, }  #[derive(Debug, Eq, PartialEq)] enum State {     Available,     Running,     Ready, }  struct Thread {     id: usize,     stack: Vec&lt;u8&gt;,     ctx: ThreadContext,     state: State, }  #[derive(Debug, Default)] #[repr(C)] struct ThreadContext {     rps: u64,     r15: u64,     r14, u64,     r13: u64,     r12: u64,     rbx: u64,     rbp: u64, }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>Runtime<\/code>. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 <code>Thread<\/code> \u0438 \u043f\u043e\u043b\u0435 <code>current<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442.<\/p>\n<p>  <\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <code>Thread<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0442\u043e\u043a\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 <code>id<\/code>. \u041f\u043e\u043b\u0435 <code>stack<\/code> \u0442\u0430\u043a\u043e\u0435 \u0436\u0435, \u043a\u0430\u043a\u043e\u0435 \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0440\u0430\u043d\u0435\u0435. \u041f\u043e\u043b\u0435 <code>ctx<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0442\u043e\u043a\u0430 \u0441 \u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u043e\u043d \u043f\u043e\u043a\u0438\u043d\u0443\u043b \u0441\u0442\u0435\u043a. \u041f\u043e\u043b\u0435 <code>state<\/code> \u2014 \u044d\u0442\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<p>  <\/p>\n<p><code>State<\/code> \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>Available<\/code> \u2014 \u043f\u043e\u0442\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438 \u0433\u043e\u0442\u043e\u0432 \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e.<\/li>\n<li><code>Running<\/code> \u2014 \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f<\/li>\n<li><code>Ready<\/code> \u2014 \u043f\u043e\u0442\u043e\u043a \u0433\u043e\u0442\u043e\u0432 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0438 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><code>ThreadContext<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u0434\u043b\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0435\u043a\u0435.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0430\u043c\u044f\u0442\u043e\u0432\u0430\u043b\u0438, \u0442\u043e \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043a \u0447\u0430\u0441\u0442\u0438 &quot;\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f&quot; \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445. \u0412 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b x86-64 \u042d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u043a\u0430\u043a &quot;callee saved&quot;.<\/p><\/blockquote>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">impl Thread {     fn new(id: usize) -&gt; Self {         Thread {             id,             stack: vec![0_u8; DEFAULT_STACK_SIZE],             ctx: ThreadContext::default(),             state: State::Available,         }     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Available<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d \u0433\u043e\u0442\u043e\u0432 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u0442\u0435\u043a. \u042d\u0442\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0438 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0442.\u043a. \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041d\u043e \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0412\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0435\u043a \u0432\u044b\u0434\u0435\u043b\u0435\u043d, \u043e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <code>push()<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438. \u041b\u0443\u0447\u0448\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0435\u043c, \u0447\u0442\u043e \u0443 <code>Vec&lt;T&gt;<\/code> \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>into_boxed_slice()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>Box&lt;[T]&gt;<\/code> \u2014 \u0441\u0440\u0435\u0437, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043a\u0443\u0447\u0435. \u0421\u0440\u0435\u0437\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438.<\/p><\/blockquote>\n<p>  <\/p>\n<h3 id=\"realizaciya-rantayma\">\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430<\/h3>\n<p>  <\/p>\n<p>\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043b\u043e\u043a\u0430 <code>impl Runtime<\/code>, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0438\u043c\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">impl Runtime {      pub fn new() -&gt; Self {         let base_thread = Thread {             id: 0,             stack: vec![0_u8; DEFAULT_STACK_SIZE],             ctx: ThreadContext::default(),             state: State::Running,         };          let mut threads = vec![base_thread];         let mut available_threads: Vec&lt;Thread&gt; = (1..MAX_THREADS).map(|i| Thread::new(i)).collect();         threads.append(&amp;mut available_threads);          Runtime {             threads,             current: 0,         }     }      \/\/ code of other methods is here     \/\/ ... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>Runtime<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Running<\/code>. \u041e\u043d \u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u044b. \u041f\u043e\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438, \u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c <code>0<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">\/\/ \u0427\u0438\u0442\u0435\u0440\u0441\u0442\u0432\u043e, \u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 Runtime \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 yield \/\/ \u0431\u0435\u0437 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. \/\/ \u043f\u043e \u0441\u0443\u0442\u0438 \u043c\u044b \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u0442\u0438\u0445\u043e\u043c\u043e\u043b\u043a\u0443 \u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 pub fn init(&amp;self) {     unsafe {         let r_ptr: *const Runtime = self;         RUNTIME = r_ptr as usize;     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u043c \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e. \u041a\u0430\u043a \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>yield<\/code> \u043f\u043e\u0437\u0436\u0435. \u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e, \u043d\u043e \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0436\u0438\u0442\u044c, \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">pub fn run(&amp;mut self) -&gt; ! {     while self.t_yield() {};     std::process::exit(0); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u044d\u0442\u043e \u0442\u043e \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0448 \u0440\u0430\u043d\u0442\u0430\u0439\u043c. \u041e\u043d \u0431\u0435\u0441\u043f\u0440\u0435\u0441\u0442\u0430\u043d\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>t_yield()<\/code>, \u043f\u043e\u043a\u0430 \u0442\u043e\u0442 \u043d\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>false<\/code>, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0437\u0430\u0434\u0430\u0447 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442, \u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn t_return(&amp;mut self) {     if self.current != 0 {         std.threads[self.current].state = State::Available;         self.t_yield();     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041c\u044b \u043d\u0430\u0437\u0432\u0430\u043b\u0438 \u0435\u0451 <code>t_return<\/code>, \u0442.\u043a. \u0441\u043b\u043e\u0432\u043e <code>return<\/code> \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445. \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e <em>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c<\/em> \u043d\u0430\u0448\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u2014 \u043c\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0441\u0442\u0435\u043a \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0442\u043e\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u043c, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c. \u041d\u0430\u0448 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>yield<\/code> \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u043f\u043e\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u043e\u0433\u043e (spawned) \u043f\u043e\u0442\u043e\u043a\u0430, \u043c\u044b \u0443\u0437\u043d\u0430\u0451\u043c, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f, \u0442.\u043a. \u0443 \u0432\u0441\u0435\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u0438\u0445 \u0441\u0442\u0435\u043a\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>guard<\/code> (\u0435\u0451 \u043e\u0431\u044a\u044f\u0441\u043d\u044e \u043f\u043e\u0437\u0436\u0435). \u0422\u0430\u043a \u0447\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 <code>t_return<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u2014 \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>guard<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041c\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u043e\u0442\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 <code>Available<\/code>, \u0441\u043e\u043e\u0431\u0449\u0430\u044f \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0443, \u0447\u0442\u043e \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 (task), \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c <code>t_yield<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0451\u0440\u0433\u0430\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>yield<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">fn t_yield(&amp;mut self) -&gt; bool {     let mut post = self.current;     while self.threads[pos].state != State::Ready {         pos += 1;         if pos == self.threads.len() {             pos = 0;         }         if pos == self.current {             return false;         }     }      if self.threads[self.current].state != State::Available {         self.threads[self.current].state = State::Ready;     }      self.threads[pos].state = State::Running;     let old_pos = self.current;     self.current = pos;      unsafe {         let old: *mut ThreadContext = &amp;mut self.threads[old_pos].ctx;         let new: *const ThreadContext = &amp;self.threads[pos].ctx;          llvm_asm!(             &quot;             mov $0, %rdi             mov $1, %rsi             call switch             &quot;             :             : &quot;r&quot;(old), &quot;r&quot;(new)             :             :         );     }      self.threads.len() &gt; 0 }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0441\u0435\u0440\u0434\u0446\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u043c\u044f <code>t_yield<\/code>, \u0442.\u043a. <code>yield<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c (\u043f\u0440\u0438\u043c. \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b).<\/p>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u0442\u0440\u0435\u0434\u044b \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0435\u0441\u0442\u044c \u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u043d\u0438\u0445 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Ready<\/code>, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0433\u043e\u0442\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u0431\u044b \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0435\u0440\u043d\u0443\u043b\u043e \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Ready<\/code> \u043d\u0435\u0442, \u0442\u043e \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b. \u042d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 (round-robin). \u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439.<\/p>\n<p>  <\/p>\n<blockquote><p>\u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u0427\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0434 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 (\u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Ready<\/code>) \u0438 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0447\u0435\u0433\u043e-\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u0432\u0435\u0442\u0430 \u043e\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445?<\/p>\n<p>  \u041d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a \u0433\u043e\u0442\u043e\u0432, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c (poll) \u0435\u0433\u043e \u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>IsReady<\/code>, \u0435\u0441\u043b\u0438 \u043e\u043d \u0434\u0435\u0439\u0441\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043e\u0442\u043e\u0432 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0439, \u0438\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c <code>Pending<\/code>, \u0435\u0441\u043b\u0438 \u043e\u043d \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Ready<\/code>, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435. \u0417\u0432\u0443\u0447\u0438\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u043e? \u0415\u0441\u043b\u0438 \u0447\u0438\u0442\u0430\u043b\u0438 \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 <a href=\"https:\/\/rust-lang-nursery.github.io\/futures-api-docs\/0.3.0-alpha.16\/futures\/task\/enum.Poll.html#variant.Pending\" rel=\"nofollow noopener noreferrer\">\u0424\u0443\u0442\u0443\u0440\u044b<\/a>, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0443 \u0432\u0430\u0441 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u0441\u0451 \u0441\u043e\u0441\u0442\u044b\u043a\u0443\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435.<\/p><\/blockquote>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435, \u043c\u044b \u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u0441 <code>Running<\/code> \u043d\u0430 <code>Ready<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>switch<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u041d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043d\u043e\u0432\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439, \u043b\u0438\u0431\u043e \u0432\u0441\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.<\/p>\n<p>  <\/p>\n<blockquote>\n<h4 id=\"neudobnaya-pravda-o-naked-funkciyah\">\u041d\u0435\u0443\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u0434\u0430 \u043e naked \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445<\/h4>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 naked \u043d\u0435 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u044b\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0431\u044b\u0447\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 \u0434\u0432\u0443\u043c\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044e \u043e \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u041a\u043e\u0433\u0434\u0430 \u0436\u0435 \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u0443\u044e \u043a\u0430\u043a <code>#[naked]<\/code>, \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0448\u0438\u0445 &quot;\u043d\u043e\u0432\u043e\u0439&quot; \u0438 &quot;\u0441\u0442\u0430\u0440\u043e\u0439&quot; \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 <code>ThreadContext<\/code>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440. \u0412 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0438 \u043e \u0432\u044b\u0437\u043e\u0432\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Linux \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u0441\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>%rdi<\/code>, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>%rsi<\/code>.<\/p><\/blockquote>\n<p>\u0427\u0430\u0441\u0442\u044c <code>self.threads.len() &gt; 0<\/code> \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e. \u0423 \u043c\u0435\u043d\u044f \u0442\u0430\u043a\u043e\u0435 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u043b\u043e\u0441\u044c \u043d\u0430 Windows, \u043d\u043e \u043d\u0435 \u043d\u0430 Linux, \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u0422\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>std::hint::black_box<\/code> \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c \u043a\u043e\u0434, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u044f \u0448\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u0442\u044c, \u0430 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u043e\u043a. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0434 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u044d\u0442\u0443 \u0442\u043e\u0447\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u0421\u043b\u0435\u0434\u043e\u043c \u0438\u0434\u0451\u0442 \u043d\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>spawn()<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">pub fn spawn(&amp;mut self, f: fn()) {     let available = self         .threads         .iter_mut()         .find(|t| t.state == State::Available)         .expect(&quot;no available thread.&quot;);      let size == available.stack.len();      unsafe {         let s_ptr = available.stack.as_mut_ptr().offset(size as isize);         let s_ptr = (s_ptr as usize &amp; !15) as *mut u8;         std::ptr::write(s_ptr.offset(-16) as *mut u64, guard as u64);         std::ptr::write(s_ptr.offset(-24) as *mut u64, skip as u64);         std::ptr::write(s_ptr.offset(-32) as *mut u64, f as u64);         available.ctx.rsp = s_ptr.offset(-32) as u64;     }     available.state = State::Ready; }  \/\/ \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u043a\u043e\u0431\u043a\u0443 \u0431\u043b\u043e\u043a\u0430 `impl Runtime`<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a <code>t_yield<\/code> \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0432 \u043f\u043b\u0430\u043d\u0435 \u043b\u043e\u0433\u0438\u043a\u0438, \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043b\u0430\u043d\u0435 \u0444\u0443\u043a\u043d\u0446\u0438\u044f <code>spawn<\/code> \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0442\u043e, \u0433\u0434\u0435 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0435\u043a \u0442\u0430\u043a, \u043a\u0430\u043a \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435, \u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 <a href=\"https:\/\/cfsamson.gitbook.io\/green-threads-explained-in-200-lines-of-rust\/the-stack#how-to-set-up-the-stack\" rel=\"nofollow noopener noreferrer\">psABI<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438, \u0441\u043f\u0435\u0440\u0432\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a (\u0442.\u0435. \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 <code>Available<\/code>). \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0435\u0442, \u0442\u043e \u043f\u0430\u043d\u0438\u043a\u0443\u0435\u043c, \u0445\u043e\u0442\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0448\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043d\u0430\u0448\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u0441\u0442\u0435\u043a (\u0432 \u0432\u0438\u0434\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 <code>u8<\/code>) \u0438 \u0435\u0433\u043e \u0434\u043b\u0438\u043d\u0443.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 unsafe-\u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0421\u043f\u0435\u0440\u0432\u0430 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>guard<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0421\u043b\u0435\u0434\u043e\u043c \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>skip<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u0430 \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>f<\/code> \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>guard<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 16 \u0431\u0430\u0439\u0442. \u0418 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u044d\u0442\u043e \u0430\u0434\u0440\u0435\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>f<\/code>.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0412\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0435\u043a. \u041c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b <code>f<\/code> \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0435\u0451 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 base pointer \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u044f. \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0437\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c \u0432 \u0441\u0442\u0435\u043a \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0444\u0443\u043a\u043d\u0446\u0438\u0438 <code>skip<\/code> \u0438 <code>guard<\/code>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u043c \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>guard<\/code> \u043f\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0435 16 \u0431\u0430\u0439\u0442, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c ABI.<\/p><\/blockquote>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0441\u0442\u0435\u043a, \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>rsp<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u044f\u043b\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0441\u0442\u0435\u043a) \u0430\u0434\u0440\u0435\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0451 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 <code>Ready<\/code>, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u0438 \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u0435\u0451 \u0434\u0435\u043b\u0430\u0442\u044c. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u043a \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e &quot;\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430&quot; \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0442\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u0432\u044b \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435, <em>\u043a\u0430\u043a<\/em> \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0442\u0430\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<h3 id=\"funkcii-guard-skip-i-switch\">\u0424\u0443\u043d\u043a\u0446\u0438\u0438 <code>guard<\/code>, <code>skip<\/code> \u0438 <code>switch<\/code><\/h3>\n<p>  <\/p>\n<pre><code class=\"rust\">fn guard() {     unsafe {         let rt_ptr = RUNTIME as *mut Runtime;         (*rt_ptr).t_return();     }; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0447\u0442\u043e \u0442\u0430\u043a \u0436\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u0432\u044b\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043c\u044b \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <code>t_return()<\/code> \u043d\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u043b\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 <code>t_return<\/code>, \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041e\u043d\u0430 \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u0442\u0440\u0435\u0434 \u043a\u0430\u043a <code>Available<\/code> (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u0440\u0435\u0434), \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>t_yield<\/code>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 \u0434\u0440\u0443\u0433\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#[naked] fn skip() { }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>skip<\/code> \u043d\u0435 \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>#[naked]<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0444\u0443\u043a\u043d\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>ret<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0442\u0435\u043a\u0430 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>guard<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">pub fn yield_thread() {     unsafe {         let rt_ptr = RUNTIME as *mut Runtime;         (*rt_ptr).t_yield();     }; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>t_yield<\/code> \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u043a\u043e\u0434\u0435. \u041e\u043d\u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u0448 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0443\u0436\u0435 \u0434\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d (\u0434\u0440\u043e\u043f\u043d\u0443\u0442), \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0435, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043d\u0435 \u0432 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0435.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0432\u0441\u0435\u043c \u0441\u043a\u043e\u0440\u043e \u043c\u044b \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u043c \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c. \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0435\u0451 \u0441\u0443\u0442\u044c \u0438 \u0431\u0435\u0437 \u043e\u0431\u0438\u043b\u0438\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432.<\/p>\n<p>  <\/p>\n<pre><code class=\"rust\">#[naked] #[inline(never)] unsafe fn switch() {     llvm_asm!(&quot;         mov     %rsp, 0x00(%rdi)         mov     %r15, 0x08(%rdi)         mov     %r14, 0x10(%rdi)         mov     %r13, 0x18(%rdi)         mov     %r12, 0x20(%rdi)         mov     %rbx, 0x28(%rdi)         mov     %rbp, 0x30(%rdi)          mov     0x00(%rsi), %rsp         mov     0x08(%rsi), %r15         mov     0x10(%rsi), %r14         mov     0x18(%rsi), %r13         mov     0x20(%rsi), %r12         mov     0x28(%rsi), %rbx         mov     0x30(%rsi), %rbp         &quot;     ); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u0430\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0430. \u041a\u0430\u043a \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0433\u0434\u0435 \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0438\u0442\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043d\u0443\u0436\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u043d\u0438\u0445 \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 &quot;\u043d\u043e\u0432\u043e\u0433\u043e&quot; \u043f\u043e\u0442\u043e\u043a\u0430.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438 \u043f\u043e\u0442\u043e\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u043c\u044b \u0441\u043d\u043e\u0432\u0430 \u0432\u0438\u0434\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <code>#[naked]<\/code>. \u041e\u0431\u044b\u0447\u043d\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u043e\u043b\u043e\u0433 \u0438 \u044d\u043f\u0438\u043b\u043e\u0433, \u0430 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0438\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438\u0437 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0438 \u043c\u044b \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u0437\u0430\u0431\u043e\u0442\u0438\u043c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u0442\u043e \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u0442\u0435\u043a\u0443.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043d\u0430\u0448\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>#[inline(never)]<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0440\u0435\u0449\u044f\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u042f \u043f\u0440\u043e\u0432\u0451\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0432\u044b\u044f\u0441\u043d\u044f\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u0434 \u0444\u0435\u0439\u043b\u0438\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <code>--release<\/code>.<\/p>\n<p>  <\/p>\n<h3 id=\"funkciya-main\">\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>main<\/code><\/h3>\n<p>  <\/p>\n<pre><code class=\"rust\">fn main() {     let mut runtime = Runtime::new();      runtime.init();      runtime.spawn(|| {         println!(&quot;THREAD 1 STARTING&quot;);         let id = 1;         for i in 1..=10 {             println!(&quot;thread: {} counter: {}&quot;, id, i);             yield_thread();         }         println!(&quot;THREAD 1 FINISHED&quot;);     });      runtime.spawn(|| {         println!(&quot;THREAD 2 STARTING&quot;);         let id = 2;         for i in 1..=15 {             println!(&quot;thread: {} counter: {}&quot;, id i);             yield_thread();         }         println!(&quot;THREAD 2 FINISHED&quot;);     });      runtime.run(); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043c\u044b \u0442\u0443\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u043c \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0442 0 \u0434\u043e 9 \u0438 \u0434\u043e 15, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043c\u0435\u0436\u0434\u0443 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 <code>cargo run<\/code>, \u0442\u043e \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0432\u043e\u0434:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">THREAD 1 STARTING thread: 1 counter: 1 THREAD 2 STARTING thread: 2 counter: 1 thread: 1 counter: 2 thread: 2 counter: 2 thread: 1 counter: 3 thread: 2 counter: 3 thread: 1 counter: 4 thread: 2 counter: 4 thread: 1 counter: 5 thread: 2 counter: 5 thread: 1 counter: 6 thread: 2 counter: 6 thread: 1 counter: 7 thread: 2 counter: 7 thread: 1 counter: 8 thread: 2 counter: 8 thread: 1 counter: 9 thread: 2 counter: 9 thread: 1 counter: 10 thread: 2 counter: 10 THREAD 1 FINISHED thread: 2 counter: 11 thread: 2 counter: 12 thread: 2 counter: 13 thread: 2 counter: 14 thread: 2 counter: 15 THREAD 2 FINISHED<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e. \u041d\u0430\u0448\u0438 \u043f\u043e\u0442\u043e\u043a\u0438 \u0441\u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0441\u0447\u0451\u0442\u0430, \u0443\u0441\u0442\u0443\u043f\u0430\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a 1 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u043f\u043e\u0442\u043e\u043a 2 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043e\u0442\u0441\u0447\u0451\u0442\u044b.<\/p>\n<p>  <\/p>\n<h2 id=\"pozdravleniya\">\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e \u043a \u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0442\u0438, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u043a\u043e \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0432\u0441\u0451, \u0442\u043e \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u0442\u0434\u044b\u0445. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0447\u0442\u0435\u043d\u0438\u0435!<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/543158\/\"> https:\/\/habr.com\/ru\/post\/543158\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<h1 id=\"obyasnenie-legkovesnyh-potokov-v-200-strok-na-rust\">\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 200 \u0441\u0442\u0440\u043e\u043a \u043d\u0430 Rust<\/h1>\n<p>  <\/p>\n<p>\u041b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0435 \u043f\u043e\u0442\u043e\u043a\u0438 (ligthweight threads, coroutines, \u043a\u043e\u0440\u0443\u0442\u0438\u043d\u044b, green threads) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u043e\u0449\u043d\u044b\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u043c \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 Carl Fredrik Samson \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0434\u043b\u044f \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043d\u0430 \u0420\u0430\u0441\u0442, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044f, \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b &quot;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&quot;.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0441\u0443\u043f\u0435\u0440\u0441\u0432\u0435\u0436\u0430\u044f, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u043e\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0420\u0430\u0441\u0442, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/github.com\/cfsamson\/example-greenthreads\" rel=\"nofollow noopener noreferrer\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043a\u043e\u0434\u0430<\/a> \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  <\/p>\n<blockquote><p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u044c\u044e. \u041e\u0431\u043e \u0432\u0441\u0435\u0445 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043f\u0438\u0448\u0438\u0442\u0435 \u2014 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044e. \u0421\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043f\u0435\u0440\u0435\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0435\u0433\u0447\u0435 \u0438 \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435.<\/p><\/blockquote>\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-318255","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318255","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=318255"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/318255\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=318255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=318255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=318255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}