{"id":456464,"date":"2025-04-18T09:00:07","date_gmt":"2025-04-18T09:00:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=456464"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=456464","title":{"rendered":"<span>WebAssembly \u0433\u043e\u043b\u044b\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/4aa\/2e9\/685\/4aa2e968593a6d538584fe66d5517418.svg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/4aa\/2e9\/685\/4aa2e968593a6d538584fe66d5517418.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/4aa\/2e9\/685\/4aa2e968593a6d538584fe66d5517418.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p> WebAssembly \u044f\u0432\u043b\u044f\u044f\u0441\u044c (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0443\u0436\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e <a href=\"https:\/\/madewithwebassembly.com\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438<\/a>. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432 \u0441\u0435\u0442\u0438 \u043f\u043e \u0442\u0435\u043c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442 WASM \u043a\u0430\u043a \u0446\u0435\u043b\u044c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0436\u0435 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0430\u043c\u0438\u043c WebAssembly \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u043c \u0432 \u0441\u0435\u0442\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e, \u0430 \u0432 \u0440\u0443\u043d\u0435\u0442\u0435 \u0438 \u043f\u043e\u0434\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u044f \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. <\/p>\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0427\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u043e\u0435 WASM \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043c \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f?<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 &#171;Web Assembly&#187; \u043e\u0431\u0430 \u0441\u043b\u043e\u0432\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0434\u0430. \u042d\u0442\u043e \u043d\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 (\u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438), \u0430 \u0441 \u0432\u0435\u0431\u043e\u043c \u0435\u0433\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f.<br \/> WASM \u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 <strong>\u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/strong>, \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0434\u043b\u044f \u043d\u0435\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430.<br \/> \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_virtual_machine\" rel=\"noopener noreferrer nofollow\">JVM<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/SECD_machine\" rel=\"noopener noreferrer nofollow\">SECD<\/a>, WASM \u043d\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439 \u043b\u0438\u0431\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u044f\u0437\u044b\u043a\u043e\u0432. \u0423\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 WebAssembly \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c <a href=\"https:\/\/github.com\/appcypher\/awesome-wasm-langs\" rel=\"noopener noreferrer nofollow\">\u0431\u043e\u043b\u0435\u0435 60 \u044f\u0437\u044b\u043a\u043e\u0432<\/a> \u043e\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043d\u0430\u0441\u043a\u0432\u043e\u0437\u044c \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e C \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0434\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0425\u0430\u0441\u043a\u0435\u043b\u0430 \u0441\u043e \u0432\u0441\u0435\u043c \u0435\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u0438 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e Ruby \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 WASM \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c.<br \/> \u041d\u0443 \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0435\u0431\u0430 \u044d\u0442\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e Solomon Hykes, \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c Docker, <a href=\"https:\/\/x.com\/solomonstre\/status\/1111004913222324225?lang=en\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0437\u044b\u0432\u0430\u043b\u0441\u044f<\/a> \u043e \u043d\u0435\u0439 \u0442\u0430\u043a:<\/p>\n<pre><code>\u0415\u0441\u043b\u0438 \u0431\u044b WASM+WASI \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 2008 \u0433\u043e\u0434\u0443, \u043d\u0430\u043c \u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c Docker. <\/code><\/pre>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0437\u0430\u0447\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e?<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0442\u043e: <a href=\"https:\/\/habr.com\/ru\/companies\/ddosguard\/articles\/877062\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u0430<\/a>, Computer Science, \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430.<\/p>\n<p>\u041a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043c\u0435\u043d\u044f \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e WebAssembly \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u0430 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432. \u0418 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0435\u043b\u0438\u043a\u0430, a \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c \u0438\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0433\u043e\u043b\u043e\u043c WASM.<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u044b, \u0442\u043e WASM \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d:<\/p>\n<ul>\n<li>\n<p>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438. WebAssembly \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435: \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435 C \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 Fortran, \u043d\u043e \u0432\u044b\u0448\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430\u043c\u0438. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043d\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b, \u043d\u043e \u0442\u0443\u0442 \u0432\u0441\u0435 \u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 if-then-else \u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b. \u0412\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043d\u044e \u0441 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043c\u0430\u0437\u043e\u0445\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0439, \u0447\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441 WASM \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443, \u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u0432, \u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f. WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f SIMD \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, a \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f WebAssembly \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<\/li>\n<li>\n<p>WAT. \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0443 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b WASM \u0435\u0441\u0442\u044c \u043f\u043e\u043c\u0438\u043c\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0435\u0449\u0435 \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#8212; WAT (Web Assembly Text format). \u041e\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/S-expression\" rel=\"noopener noreferrer nofollow\">S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445<\/a> \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e <em>\u0441\u0430\u0445\u0430\u0440\u0430<\/em> \u0432 \u043d\u0435\u043b\u0435\u0433\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0441\u0442\u044c. \u0411\u0430\u0439\u0442\u043a\u043e\u0434 WebAssembly \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u0435\u043d. \u0425\u043e\u0442\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0434\u0435\u0441\u044c 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0435, \u0434\u043b\u044f \u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/LEB128\" rel=\"noopener noreferrer nofollow\">LEB128<\/a>, \u0447\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0440\u0430\u0437\u044b. \u0410 \u044d\u0442\u043e \u043e\u0445 \u043a\u0430\u043a \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 &#8212; \u0432\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 WASM \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434 \u0432\u0441\u0435. \u0412 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e API \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u043b WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434 \u0432\u0435\u0437\u0434\u0435, \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0434\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. \u0412 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u044b \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c WASM \u043a\u043e\u0434 \u0432 \u043a\u0443\u0434\u0430 \u043c\u0435\u043d\u0435\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u0447\u0435\u043c \u0442\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u044b. WASM \u043b\u0435\u0433\u043a\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0437 \u044f\u0437\u044b\u043a\u043e\u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0445\u0430\u043a\u043e\u0432 \u0438 \u0442\u0430\u043a\u043e\u0439 \u0442\u043e \u043c\u0430\u0442\u0435\u0440\u0438, \u0430 \u0440\u044f\u0434\u043e\u043c \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c, \u0441\u043a\u0430\u0436\u0435\u043c, JS \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Read%E2%80%93eval%E2%80%93print_loop\" rel=\"noopener noreferrer nofollow\">REPL<\/a> \u043d\u0430 \u043d\u0435\u043c \u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0436\u0438\u0432\u0443\u044e \u043f\u043e \u0445\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0442\u0435\u043c \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043e\u043d \u0445\u043e\u0440\u043e\u0448 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0439 CS.<\/p>\n<p>\u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u0430 \u0432\u0430\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, a \u0432\u0441\u0435 \u0437\u043d\u0430\u043d\u0438\u044f CS \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u0431\u044b\u043b\u0438 \u043d\u0443\u0436\u043d\u044b, \u0432\u044b \u0443\u0436\u0435 \u043e\u0441\u0432\u043e\u0438\u043b\u0438, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u0447\u0435\u0433\u043e \u043b\u0438\u0431\u043e \u0432 WASM. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0442\u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0442-\u043d\u0435\u0442, \u0434\u0430 \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0435\u0437\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0432 WASM \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0430\u043c \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b rustc, go \u0438\u043b\u0438 \u043a\u0442\u043e \u0435\u0449\u0435.<\/p>\n<p>\u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0447\u0435\u043c \u0431\u044b \u0432\u0430\u0441 \u043d\u0435 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u0442\u043e\u043f\u0438\u043a, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c WASM \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043a\u043b\u0435\u0442\u043e\u0447\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <a href=\"https:\/\/playgameoflife.com\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0433\u0440\u0443 \u0436\u0438\u0437\u043d\u044c<\/a>. \u0412 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430 WASM \u043d\u0435 \u0441\u043e\u0439\u0434\u044f \u0441 \u0443\u043c\u0430, \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0434\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u043c\u043e \u043f\u043e\u0434 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fantasy_video_game_console\" rel=\"noopener noreferrer nofollow\">\u0444\u0435\u043d\u0442\u0435\u0437\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c<\/a> <a href=\"https:\/\/wasm4.org\/\" rel=\"noopener noreferrer nofollow\">wasm4<\/a>.<\/p>\n<h2>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/h2>\n<p>\u0412\u0430\u0436\u043d\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e WASM \u0432\u0441\u0435 \u0435\u0449\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f, \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u044d\u0442\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445, \u0432\u0441\u0435 \u0435\u0449\u0451 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u0441\u044e\u0434\u0430. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h2>\u0421\u0435\u0442\u0430\u043f<\/h2>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <code>wat2wasm<\/code> \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 <a href=\"https:\/\/github.com\/WebAssembly\/wabt\" rel=\"noopener noreferrer nofollow\">wabt<\/a> \u0438 \u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438 \u0438\u0437 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Read%E2%80%93eval%E2%80%93print_loop\" rel=\"noopener noreferrer nofollow\">REPL&#8217;\u0430<\/a> <a href=\"https:\/\/nodejs.org\/en\" rel=\"noopener noreferrer nofollow\">nodejs<\/a>.<br \/> \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043f\u0440\u043e JS \u043d\u0430 \u043d\u0435\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0438 \u0442\u0443\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u0447\u043a\u0438 \u0442\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 200 \u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443. \u0412\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u043e\u0434\u044b \u0432\u044b\u0448\u0435\u0434\u0448\u0430\u044f \u043d\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0430\u0440\u044b \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434, \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 <a href=\"https:\/\/github.com\/WebAssembly\/wabt\" rel=\"noopener noreferrer nofollow\">Web Assembly Binary Toolkit<\/a> \u0432 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0438 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/helpers.js\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442<\/a> \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438-\u0445\u0435\u043b\u043f\u0435\u0440\u0430\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0430 60 \u0441\u0442\u0440\u043e\u043a.<br \/> \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0442\u0441\u044e\u0434\u0430, \u0432\u0441\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<br \/> \u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0438\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u043c \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/intro\/basic-example.wat\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/a> (\u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0435\u0433\u043e \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435):<\/p>\n<pre><code class=\"lisp\">(module (func $answer (result i32) i32.const 0x2A ) (export \"theAnswer\" (func $answer)) ) <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u043c <code>node<\/code> \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 REPL.<br \/> \u041f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>.load helpers.js<\/code>.<br \/> \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430\u0448 \u043f\u0440\u0438\u043c\u0435\u0440: <code>let example = await load(\"intro\/basic-example\")<\/code>.<br \/> \u0418 \u0443\u0437\u043d\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0436\u0438\u0437\u043d\u0438, \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435: <code>example.theAnswer()<\/code>.<\/p>\n<p><a href=\"https:\/\/asciinema.org\/a\/710855\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043f\u0438\u0441\u044c \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430<\/a>: <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F710855.svg\" alt=\"asciicast\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F710855.svg 780w,&#10;       https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F710855.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>asciicast<\/figcaption><\/div>\n<\/figure>\n<p> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>load<\/code> \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0432\u0442\u0447 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>wat2wasm intro\/basic-example.wat -o intro\/basic-example.wasm<\/code>. <\/p>\n<h2>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043c\u043e\u0434\u0443\u043b\u0438<\/h2>\n<p>\u0422\u0435\u043c, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 lisp, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0433 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u043b\u0438\u0441\u043f\u0435\u0440\u044b \u0436\u0435 \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0434\u043e\u043c\u0430.<br \/> \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0435\u0440\u0435\u0434 \u0432\u0430\u043c\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/S-expression\" rel=\"noopener noreferrer nofollow\">S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a> &#8212; \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043a\u0430\u043a \u043f\u0430\u043b\u043a\u0430, \u0441\u0442\u0430\u0440\u044b\u0439, \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0441\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441. \u041a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0437\u0434\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u043c\u043b\u044f\u044e\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u0422.\u0435. <code>(a (b c))<\/code> \u0432 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0431\u0443\u0434\u0435\u0442 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043e\u043c <code>[\"a\", [\"b\", \"c\"]]<\/code> \u0438\u0437 JSON. \u041d\u0430 \u044d\u0442\u043e\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0442\u043e \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u0432.<br \/> \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0435, \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\/\u043a\u043e\u043c\u0430\u043d\u0434\u0443\/\u0444\u0443\u043d\u043a\u0446\u0438\u044e\/etc, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 &#8212; \u0435\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u0422\u0430\u043a <code>(a 1 (b 2 3))<\/code> \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <s>\u044f\u0437\u044b\u043a \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0445<\/s> \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u044b\u0439 C-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043a\u0430\u043a <code>a(1, b(2, 3))<\/code>.<\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430 WAT \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>module<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0441\u0430\u043c\u0438 WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u044f \u0431\u0443\u0434\u0443 \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>module<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 <code>$<\/code> \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b. \u041e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0430 \u043f\u0440\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u043c\u0435\u0440\u0430: \u0444\u0443\u043d\u043a\u0446\u0438\u044f-1, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f-137 \u0438\u0442\u0434.<br \/> \u0412\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u043e\u0434 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0442\u0443\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043c\u0435\u0436\u0434\u0443 WAT \u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"lisp\">;; wat2wasm intro\/basic-example.wat -o intro\/basic-example.wasm ;; wasm2wat intro\/\/basic-example.wasm (module   (type (func (result i32))) ;; type 0   (func (type 0) (result i32)  ;; func 0     i32.const 42)   (export \"theAnswer\" (func 0))) ;; \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0434\u0432\u0443\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u043e\u0447\u043a\u0438 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439. <\/code><\/pre>\n<h2>\u0424\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0432 WASM \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430 (\u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430 \u0434\u043e\u0432\u043e\u043b\u0435\u043d), \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0443\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u044f\u0437\u044b\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u0430 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0438\u0436\u0435.<br \/> \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 WebAssembly \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_(%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D1%8F_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0)\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/a> \u0442\u0443\u0442 \u043d\u0435\u0442. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a.<\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c &#171;\u0442\u0438\u043f&#187;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043b\u0435\u0436\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043f\u0440\u0438 \u0435\u0435 \u0432\u044b\u0437\u043e\u0432\u0435 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u043a\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b) \u0438 \u0447\u0442\u043e \u0442\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0431\u044f \u0441\u0442\u0435\u043a \u0440\u043e\u0432\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0438\u0445 \u0442\u0438\u043f\u0435. \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0440\u043e\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0437\u044f\u0442\u044c \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0442\u0438\u043f\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435 VM \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c. \u041d\u0443 \u0438 <code>wat2wasm<\/code> \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 WASM \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b.<br \/> \u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"lisp\">;; \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043b\u0435\u0436\u0430\u0442\u044c \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430 \u0442\u0438\u043f\u0430 i32. ;; \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430, \u043e\u0434\u043d\u043e \u0442\u0438\u043f\u0430 i64. (type $typename (param i32) (param i32) (result i64))  ;; \u042d\u0442\u043e\u0442 \u0436\u0435 \u0442\u0438\u043f \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0440\u043e\u0447\u0435. (type $typename (param i32 i32) (result i64)) <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u0442\u0438\u043f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0438, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0430\u043c\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0441\u0430\u0445\u0430\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 WAT \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0436\u0438\u0437\u043d\u0438. \u0416\u0430\u043b\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043e\u043d \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0430 \u043f\u0440\u0438 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0432\u0438\u0434\u043d\u0430 \u0438\u0437\u0432\u043d\u0435 \u043c\u043e\u0434\u0443\u043b\u044f, \u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0418\u043d\u0430\u0447\u0435 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u0440\u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 utf-8 \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432, \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u044b\u0432\u0430\u0435\u0442 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043a\u0430\u043a \u0435\u0441\u0442\u044c. \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"lisp\">(module (func $answer (export \"theAnswer\") (result i32) i32.const 0x2A ) ) <\/code><\/pre>\n<p>\u042d\u0442\u043e \u043e\u043f\u044f\u0442\u044c \u0441\u0430\u0445\u0430\u0440, \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435.<\/p>\n<p>\u0412 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0434\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0435\u0435 \u0442\u0435\u043b\u043e \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0432 WASM \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e <code>i32.const 0x2A<\/code> &#8212; \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0434\u0443\u0449\u0430\u044f \u043d\u0430 \u0441\u0442\u0435\u043a \u043e\u0434\u043d\u043e 32-\u0431\u0438\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0411\u043e\u043b\u044c\u0448\u0435 \u043e \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u0430\u0445 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043d\u0430\u0434 \u043d\u0438\u043c\u0438 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u0430 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432 WASM \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"lisp\">(module (func (export \"numbers\") (result i32 i32 i32) i32.const 1 i32.const 2 i32.const 3 ) ) <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u0435\u0435 \u0438\u0437 JS \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u043c:<\/p>\n<pre><code>[1, 2, 3] <\/code><\/pre>\n<p>\u041d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0435\u043c \u043d\u0430\u043c \u043d\u0430\u0434\u043e, \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <code>drop<\/code>, \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441 \u043d\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442.<\/p>\n<pre><code class=\"lisp\">;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1 (func (result i32) i32.const 1 i32.const 2 i32.const 3 drop drop ) <\/code><\/pre>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0438\u0437 \u0434\u0440\u0443\u0433\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f call \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0434\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c. \u042d\u0442\u043e\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043e\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u0414\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u044b \u0434\u043e\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0430\u0442\u044c\u0438 (\u0442\u0430\u043c \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e).<\/p>\n<pre><code class=\"lisp\">(func $one (result i32) i32.const 1 )  ;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1 2 (func $oneTwo (result i32 i32) call $one ;; \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 1 i32.const 2 ;; \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 1 2 ) <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0438\u043b\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f) \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u044b \u043d\u0430 \u0441\u0442\u0435\u043a \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435:<\/p>\n<pre><code class=\"lisp\">;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0436\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438 \u0447\u0438\u0441\u043b\u043e 4 (func $addFour (param i32) (result i32 i32) ;; \"\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\" \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 ;; \u041c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u0440\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 local.get 0 i32.const 4 )  (func $threeFour (result i32 i32) i32.const 3 ;; \u0417\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043e \u0441\u0442\u0435\u043a\u0430 3 ;; \u0412\u041a\u043b\u0430\u0434\u0435\u0442 3 4 call $addFour ) <\/code><\/pre>\n<p>\u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0449\u0435 \u043e\u0434\u043d\u0438\u043c \u0441\u0430\u0445\u0430\u0440\u043e\u043c, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0432 WAT. \u0424\u0443\u043d\u043a\u0446\u0438\u044e <code>threeFour<\/code> \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"lisp\">(func $threeFour (result i32 i32) (call $addFour (i32.const 3)) ) <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u0435 \u0436\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0432 \u0442\u043e\u043c \u0436\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0438 \u0434\u0430\u0436\u0435 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439. \u041d\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e (\u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439) \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u042d\u0442\u043e\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0438 \u0434\u043b\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0442\u0447 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u043e \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043a\u043e\u0434\u0435 \u0438 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e, \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<p>\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0435\u0440\u0435\u0432\u043e (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0430 \u0432 \u0446\u0435\u043b\u043e\u043c). \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 <code>(a b (c d) (e f (g))<\/code> \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code>   a b     |  +-----+  |     | c d   e f        |        g  - `c d` \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e \u0432 ` a b` - `g` \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e \u0432 `e f` - `e f` \u0432\u043b\u043e\u0436\u0435\u043d\u043e \u0432 `a b` <\/code><\/pre>\n<p>\u0420\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432\u0441\u0435 \u0432 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e \u043e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043a \u043c\u0435\u043d\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u043c:<\/p>\n<pre><code>c d g e f a b <\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0438\u0437 \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<pre><code class=\"lisp\">(local.set $next (call $another)) (local.set $row (i32.const 0)) (loop $rloop     (local.set $col (i32.const 0))     (loop $cloop         (call $setCell             (local.get $col)             (local.get $row)             (call_indirect (type $ruleType)                 (call $getCell                     (local.get $col)                     (local.get $row)                     (global.get $frame)                 )                 (call $getNeigbours (local.get $col) (local.get $row))                 (global.get $rule)             )             (local.get $next)         )         (local.set $col (i32.add (local.get $col) (i32.const 1)))         (br_if $cloop (i32.lt_s (local.get $col) (global.get $cols)))     )     (local.set $row (i32.add (local.get $row) (i32.const 1)))     (br_if $rloop (i32.lt_s (local.get $row) (global.get $rows))) ) <\/code><\/pre>\n<p>\u0440\u0430\u0441\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u0442 \u0443\u0436\u0430\u0441:<\/p>\n<pre><code class=\"lisp\">call $another local.set $next i32.const 0 local.set $row loop $rloop loop $cloop local.get $col local.get $row type $ruleType local.get $col local.get $row global.get $frame call $getCell local.get $col local.get $row call $getNeigbours global.get $rule call_indirect call $setCell local.get $col i32.const 1 i32.add local.set $col global.get $cols local.get $col i32.lt_s br_if $cloop end i32.const 1 local.get $row i32.add local.set $row global.get $rows local.get $row i32.lt_s br_if $rloop end <\/code><\/pre>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u043e\u0449\u0435, \u0438 \u0442\u0443\u0442 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0443\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c \u043c\u0430\u0448\u0438\u043d\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 WASM \u043c\u043e\u0434\u0443\u043b\u0438, \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 (\u0435\u0449\u0435 \u0438 \u0441 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445).<\/p>\n<p>\u041d\u043e \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043d\u0430\u0448\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c.<\/p>\n<p>WASM \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>start<\/code> \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main \u0438\u0437 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e C \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u043d\u0435\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u043d\u0435\u0435 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<pre><code class=\"lisp\">(module (func $initfunc ;; ... ) (start $initfunc) ) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>return<\/code>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e, <code>return<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043b\u0438\u0448\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u043e.<\/p>\n<pre><code class=\"lisp\">;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 3 (func (result i32) i32.const 1 i32.const 2 i32.const 3 return ) <\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 (\u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435) \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0412\u043e\u043e\u0431\u0449\u0435 \u0434\u043b\u044f WASM \u043a\u043e\u0434\u0430 \u0437\u0430\u043f\u0435\u0440\u0442\u043e\u0433\u043e \u0432 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435, \u0438\u043c\u043f\u043e\u0440\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u0435\u043c-\u0442\u043e \u0438\u0437 \u0432\u043d\u0435, \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043c\u0438\u0440\u043e\u043c. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u043d\u0430\u0448\u0435\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043c\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 VM.<br \/> \u041d\u0430\u0448 \u0441\u043a\u0440\u0438\u043f\u0442 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/helpers.js\" rel=\"noopener noreferrer nofollow\">helpers.js<\/a> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u044f\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<pre><code class=\"lisp\">(module ;; \u0415\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0435\u0441\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u044b \u043e\u043d\u0438 \u0432\u0441\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0434\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c. ;; \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430, \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. ;; \u041f\u0435\u0440\u0432\u0430\u044f \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0430\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. ;; \u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d (\u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435) \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 ;; \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0438\u043c\u043f\u043e\u0440\u0442. (import \"debug\" \"printI32\" (func $debugPrintI32 (param i32)))  (func (export \"printIt\") (call $debugPrintI32 (i32.const 42))) ) <\/code><\/pre>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0432\u044b\u0437\u0432\u0430\u0432 <code>printIt<\/code> \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0432 \u0446\u0435\u043b\u043e\u043c \u0432\u0441\u0435 \u0442\u043e \u0436\u0435 42. \u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043e\u0442\u0447\u0435\u0442 REPL&#8217;\u0430 \u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043d\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <code>printIt<\/code> \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 <code>debug.printI32(42)<\/code> \u043d\u0430\u0448\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u044b\u0432\u043e\u0434\u0430 \u0447\u0435\u0433\u043e \u043b\u0438\u0431\u043e \u043f\u043e\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0447\u0438\u0441\u0435\u043b \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0434\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e.<\/p>\n<h2>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0447\u0438\u0441\u043b\u0430\u0445<\/h2>\n<p>WASM \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u043c 4 \u0442\u0438\u043f\u0430 \u0447\u0438\u0441\u0435\u043b: 32x \u0438 64x \u0431\u0438\u0442\u043d\u044b\u0435 \u0446\u0435\u043b\u044b\u0435 \u0438 \u0442\u0438\u043f\u044b <code>i32<\/code> \u0438 <code>i64<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u0447\u0438\u0441\u0435\u043b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 IEEE 754: <code>f32<\/code> \u0438 <code>f64<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0414\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0438\u043f\u043e\u0432 WebAssembly \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u043b\u0430\u0441\u044c, \u043d\u043e \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0440 \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c SIMD \u0442\u0438\u043f (\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445) \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0438 \u0445\u043e\u0441\u0442\u043e\u0432\u044b\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c (\u043e \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0436\u0435).<\/p>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0443 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0442 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0438 \u0431\u0435\u0437 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u0442\u0430\u043c \u0433\u0434\u0435 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u0430, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439: \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c <code>_u<\/code> \u0434\u043b\u044f \u0431\u0435\u0437 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0438 <code>_s<\/code> \u0434\u043b\u044f \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445. \u0414\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u0430 \u043d\u0435\u0442, \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0441\u0442\u044c \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0422\u0438\u043f\u044b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0435 by design.<\/p>\n<p>\u0411\u0443\u043b\u0435\u0432\u044b\u0439 \u0442\u0438\u043f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f i32 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0433\u0434\u0435 0 &#8212; false, \u0430 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 &#8212; true.<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 8 \u0438 16 \u0431\u0438\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 i32 \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u0435 8 \u0438 16 \u0431\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 (\u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, etc) \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u044e\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0441 \u0442\u0438\u043f\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0422\u0430\u043a \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043d\u0430\u043c <code>i32.const<\/code> \u0435\u0441\u0442\u044c &#171;\u0431\u0440\u0430\u0442\u044c\u044f&#187; <code>i64.const<\/code>, <code>f32.const<\/code>, <code>f64.const<\/code>. \u0422\u043e \u0436\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0447\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e. \u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0443\u044e T \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/p>\n<ul>\n<li>\n<p>T.add &#8212; \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>T.sub &#8212; \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>T.mul &#8212; \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>T.div &#8212; \u0434\u0435\u043b\u0435\u043d\u0438\u0435 <\/p>\n<ul>\n<li>\n<p>\u0414\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432\u044b\u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0435\u043b\u0443\u044e \u0447\u0430\u0441\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0434\u0432\u0443\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445: T.div_u \u0438 T.div_s<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>T.rem_s, T.rem_u &#8212; \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043e\u0441\u0442\u0430\u0442\u043a\u0430. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445 \u0432 WASM \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Undefined Behavior \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e (aka \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441 \u0437\u0430\u0446\u0438\u043a\u043b\u0438\u0432\u0430\u043d\u0438\u0435\u043c).<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"lisp\">(module (func (export \"calculateTheAnswer\") (result i32) ;; 21\/5*10 + 8%3 (i32.add (i32.mul (i32.div_s (i32.const 21) (i32.const 5)) (i32.const 10) ) (i32.rem_s (i32.const 8) (i32.const 3)) ) ) ) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 <a href=\"https:\/\/github.com\/asciimoth\/wasm-examples\/blob\/master\/wasm\/006-type-conversions.wat\" rel=\"noopener noreferrer nofollow\">\u0446\u0435\u043b\u044b\u0439 \u0437\u043e\u043e\u043f\u0430\u0440\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/a>. \u0418 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u0435\u0441\u044c \u0442\u0443\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0432\u043e\u0434\u043d\u044b\u0445, \u0435\u0441\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e \u0434\u0432\u0435 \u0432\u0435\u0440\u0441\u0438\u0438: \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 VM \u0438 \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0438\u0445\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u043c\u0443.<\/p>\n<h2>\u041f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0418\u0437 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0443 \u043d\u0430\u0441 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/p>\n<ul>\n<li>\n<p>T.and, T.or, T.xor<\/p>\n<\/li>\n<li>\n<p>T.shl \u0434\u043b\u044f \u0441\u0434\u0432\u0438\u0433\u0430 \u0432\u043b\u0435\u0432\u043e \u0438 T.shr_u \u0441 T.shr_s \u0434\u043b\u044f \u0441\u0434\u0432\u0438\u0433\u0430 \u0432 \u043f\u0440\u0430\u0432\u043e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0437\u043d\u0430\u043a\u0430 \u0438\u043b\u0438 \u0431\u0435\u0437<\/p>\n<\/li>\n<li>\n<p>T.rotl \u0438 T.rotr \u0434\u043b\u044f \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u043b\u0435\u0432\u043e \u0438 \u043f\u0440\u0430\u0432\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>T.popcnt \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u0431\u0438\u0442 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0430<\/p>\n<\/li>\n<li>\n<p>T.clz \u0438 T.ctz \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0431\u0438\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u043a\u043e\u043d\u0446\u0435 \u0447\u0438\u0441\u043b\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u0438\u043f\u0430\u043c.<\/p>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f \u0432 WASM \u043d\u0435\u0442. \u0410\u0432\u0442\u043e\u0440\u044b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043e\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442 \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0435\u0435 \u043b\u0435\u0433\u043a\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 xor \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 (<code>OxFFFFFFFF<\/code> \u0434\u043b\u044f i32 \u0438 <code>OxFFFFFFFFFFFFFFFF<\/code> \u0434\u043b\u044f i64 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/p>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443, \u0432 WASM \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Little Endian.<\/p>\n<h2>\u0427\u0438\u0441\u043b\u0430 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439<\/h2>\n<p>\u0421\u0432\u0435\u0440\u0445 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0438, \u0434\u043b\u044f \u0444\u043b\u043e\u0430\u0442\u043e\u0432 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438<\/p>\n<ul>\n<li>\n<p>T.abs &#8212; \u043c\u043e\u0434\u0443\u043b\u044c \u0447\u0438\u0441\u043b\u0430<\/p>\n<\/li>\n<li>\n<p>T.neg &#8212; \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u043a\u0430 (+\/-)<\/p>\n<\/li>\n<li>\n<p>T.ceil &#8212; \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0432 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443<\/p>\n<\/li>\n<li>\n<p>T.floor &#8212; \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0432 \u043c\u0435\u043d\u044c\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443<\/p>\n<\/li>\n<li>\n<p>T.nearest &#8212; \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0446\u0435\u043b\u043e\u043c\u0443<\/p>\n<\/li>\n<li>\n<p>T.trunc &#8212; \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043a \u043c\u0435\u043d\u044c\u0448\u0435\u043c\u0443 \u0434\u043b\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0438 \u043a \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445<\/p>\n<\/li>\n<li>\n<p>T.sqrt &#8212; \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043d\u044f<\/p>\n<\/li>\n<li>\n<p>T.min, T.max &#8212; \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e\/\u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0438\u0441\u0435\u043b<\/p>\n<\/li>\n<li>\n<p>T.copysign &#8212; \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430, \u0432\u044b\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u0435, \u043d\u043e \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u043a\u0430\u043a \u0443 \u0432\u0442\u043e\u0440\u043e\u0433\u043e<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0440\u0438\u0433\u043e\u043d\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u0441\u043a\u0430\u0440\u043e\u0431\u043a\u0438 \u0438 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435. \u0410\u0432\u0442\u043e\u0440\u044b WASM \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0442 \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0440\u0435\u0434\u043a\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u0436\u0435\u043b\u0435\u0437\u0435 \u0438\/\u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e.<\/p>\n<h2>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0442\u0438\u043f\u043e\u0432 \u0447\u0438\u0441\u0435\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0435 1 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u0438\u043d\u044b \u0438 0 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u0436\u0438:<\/p>\n<ul>\n<li>\n<p>T.eqz &#8212; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0441 \u043d\u0443\u043b\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>T.eq &#8212; \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430 \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>T.ne &#8212; \u0442\u043e\u0436\u0435 \u0447\u0442\u043e \u0438 T.eq \u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u0443 \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u0430 \u041d\u0415 \u0440\u0430\u0432\u043d\u044b \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443<\/p>\n<\/li>\n<li>\n<p>T.gt &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0414\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b gt_s \u0438 gt_u<\/p>\n<\/li>\n<li>\n<p>T.ge &#8212; \u0442\u043e\u0436\u0435 \u0447\u0442\u043e \u0438 gt \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043b\u0438\u0431\u043e \u0440\u0430\u0432\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>T.lt, T.le &#8212; \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u043b\u0438\u0431\u043e \u0440\u0430\u0432\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u043b\u0435\u0432\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 0<\/p>\n<ul>\n<li>\n<p><code>eqz 0<\/code> &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u0443<\/p>\n<\/li>\n<li>\n<p><code>eqz 1,2,3...<\/code> &#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u043e\u0438\u0442\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 i32.<\/p>\n<h2>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435<\/h2>\n<p>WASM \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 (\u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438: \u0432\u0435\u0441\u044c \u043c\u043e\u0434\u0443\u043b\u044c) \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 (\u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438: \u043e\u0434\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f) \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<br \/> \u0421 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u044b \u0443\u0436\u0435 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0421\u0432\u043e\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u043f\u0440\u0438 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0438) \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0438\u0445 \u043e\u0442\u0442\u0443\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0438 \u043a\u043b\u0430\u0441\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 <code>local.get<\/code> \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.<br \/> \u0412\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043d\u0443\u043b\u044f.<br \/> \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b. \u0412 WASM \u043d\u0435\u043b\u044c\u0437\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e \u0435\u0435 \u043d\u043e\u043c\u0435\u0440\u0443, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435.<\/p>\n<pre><code class=\"lisp\">;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. (func $swap (param i32 i32) (result i32 i32) (local.get 1) (local.get 0) )  ;; \u0422\u043e \u0436\u0435 \u043d\u043e \u0441 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u043c\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. (func $swap (param $a i32) (param $b i32) (result i32 i32) (local.get $b) (local.get $a) ) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <code>local.set<\/code>, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u0442\u0435\u043a\u0430.<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u044f\u0432\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u0418\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0434\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043b\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<pre><code class=\"lisp\">(func (local $somename i32) (local $another i32) (local.set $somename (i32.const 42)) (local.set $another (local.get $somename)) ) <\/code><\/pre>\n<p>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438.<\/p>\n<pre><code class=\"lisp\">(module ;; \u0423 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044f\u0437\u0430\u043d\u043e \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. ;; \u0427\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0435 \u043a\u0430\u043a \u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e. (global $globName (mut i32) (i32.const 101)) ;; \u0418\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u043f\u043e \u0441\u0443\u0442\u0438, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430. (global $globName2 i32 (i32.const 314)) ;; \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0442\u0430\u043a\u0436\u0435, \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438. (global $globName3 (export \"statCode\") (mut i32) (i32.const 404)) ) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <code>global.get<\/code> \u0438 <code>global.set<\/code>.<\/p>\n<pre><code class=\"lisp\">(module (global $glob (mut i32) (i32.const 101))  (func (export \"set\") (param i32) local.get 0 global.set $glob ) (func (export \"get\") (result i32) global.get $glob ) ) <\/code><\/pre>\n<h2>\u0412\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e WASM, \u0434\u0435\u043b\u0430\u044e\u0449\u0435\u0439 \u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c, \u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c \u043e\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"lisp\">;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 42, \u0435\u0441\u043b\u0438 $cond \u0440\u0430\u0432\u0435\u043d 0 \u0438 314 \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. (func $retIf (param $cond i32) (result i32) local.get $cond ;; \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f if \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u043e\u0434\u043d\u043e i32 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 ;; \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0434\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 end ;; \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430. ;; 0 - \u043b\u043e\u0436\u044c ;; \u043d\u0435 0 - \u0438\u0441\u0442\u0438\u043d\u0430 ;; \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 i32. ;; \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e i32 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442. if i32.const 314 return end i32.const 42 )  ;; \u0423\u0441\u043b\u043e\u0432\u0438\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e. ;; S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 ;; \u0422\u0443 \u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a: (func $retIf (param $cond i32) (result i32) (if (local.get $cond) ;; \u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 ;; \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f then. (then (return (i32.const 314)) ) ) i32.const 42 )  ;; Else \u0442\u043e\u0436\u0435 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438. (func $retIf (param $cond i32) (result i32) (local $result i32) (if (local.get $cond) (then (local.set $result (i32.const 314)) ) (else (local.set $result (i32.const 42)) ) ) local.get $result ) <\/code><\/pre>\n<p>\u041d\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0432\u044b\u0448\u0435 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 <code>if-else<\/code> \u044f \u043b\u0438\u0431\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>result<\/code>, \u043b\u0438\u0431\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e \u0435\u0433\u043e \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<br \/> \u041d\u043e \u0432\u0435\u0434\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0438\u0437 if-\u0430 &#8230; \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0434\u044c?<\/p>\n<p>\u0414\u0430, \u043c\u043e\u0436\u043d\u043e. \u041d\u0435\u0442, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<br \/> \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 WASM \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c. \u0418 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043e\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 &#171;\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c\u044e&#187; \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441\u043e \u0441\u0442\u0435\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u043b\u044e\u0431\u0430\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0431\u0443\u0434\u044c \u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u043a\u043b\u0430\u0434\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u0441\u0442\u0435\u043a, \u0442\u043e \u0434\u043b\u044f \u043d\u0435\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c\u0441\u044f \u0434\u0432\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u0438\u0441\u0445\u043e\u0434\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043d\u0430 \u0441\u0442\u0435\u043a \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u0442\u0438\u043f\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0441\u0442\u0435\u043a\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 if, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043b\u0430\u0434\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0441\u0442\u0435\u043a, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0439 else \u0434\u0435\u043b\u0430\u044e\u0449\u0438\u0439 \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e if \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 \u0441\u0442\u0435\u043a.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>if-then-else<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u044d\u0442\u0438\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439.<\/p>\n<p>\u0422\u0430\u043a\u0438\u0435 \u043d\u0435 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b (\u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u044b VM):<\/p>\n<pre><code class=\"lisp\">(func $retIfWrong (param $cond i32) (result i32) ;; \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 else. (if (local.get $cond) (then i32.const 314 ) ) i32.const 42 )  (func $retIfWrong (param $cond i32) (result i32) ;; If \u0438 else \u043a\u043b\u0430\u0434\u0443\u0442 \u043d\u0430 \u0441\u0442\u0435\u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. (if (local.get $cond) (then i32.const 314 ) (else i64.const 42 ) ) )  (func $retIfWrong (param $cond i32) (result i32) ;; If \u0438 else \u043a\u043b\u0430\u0434\u0443\u0442 \u043d\u0430 \u0441\u0442\u0435\u043a \u0440\u0430\u0437\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. (if (local.get $cond) (then i32.const 314 ) (else i32.const 314 i32.const 217 ) ) )  (func $retIfWrong (param $cond i32) (result i32) ;; \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u044f\u0432\u043d\u043e. (if (local.get $cond) (then i32.const 314 ) (else i32.const 42 ) ) ) <\/code><\/pre>\n<p>\u0421\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442:<\/p>\n<pre><code class=\"lisp\">(func $retIf (param $cond i32) (result i32) (if (result i32) (local.get $cond) (then i32.const 314 ) (else i32.const 42 ) ) ) <\/code><\/pre>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432\u043c\u0435\u0441\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 <code>select<\/code>. \u041e\u043d\u0430 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u0442\u0440\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435; \u0412\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c i32<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445.<\/p>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0430 \u0441\u0442\u0435\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0438\u0441\u0442\u0438\u043d\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043b\u043e\u0436\u043d\u043e<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"lisp\">;; (call $selectI32 (i32.const 314) (i32.const 217) (i32.const 1)) \u0432\u0435\u0440\u043d\u0435\u0442 314 ;; (call $selectI32 (i32.const 314) (i32.const 217) (i32.const 0)) \u0432\u0435\u0440\u043d\u0435\u0442 217 (func $selectI32 (param $opt1 i32) (param $opt2 i32) (param $cond i32) (result i32) (select (local.get $opt1) (local.get $opt2) (local.get $cond)) ) <\/code><\/pre>\n<h2>\u041f\u0430\u043c\u044f\u0442\u044c<\/h2>\n<p>\u041f\u0430\u043c\u044f\u0442\u044c \u0432 WASM \u044d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439, \u043d\u0435 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0431\u0430\u0439\u0442 \u0441 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043e\u0442 0.<br \/> \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0442\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f i32 (i64 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 <a href=\"https:\/\/github.com\/WebAssembly\/memory64\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/a>), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 (\u043f\u043e\u043a\u0430) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0414\u043b\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439. \u0412 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0449\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442\u044c 4 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442\u0430 \u0438\u043b\u0438 \u044f\u0432\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043b\u0438\u043c\u0438\u0442.<\/p>\n<p>\u0425\u043e\u0442\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u0430, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043d\u0430 &#171;\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438&#187; \u043f\u043e 64 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u0430.<\/p>\n<pre><code class=\"lisp\">;; \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0431\u0435\u0437 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. (memory 1)  ;; \u0421 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 11 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 (704 \u043a\u0431). (memory $memname 1 11)  ;; \u041f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 (\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430). (memory $memname (export \"mem\") 1) <\/code><\/pre>\n<p>WASM (<a href=\"https:\/\/github.com\/WebAssembly\/gc\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043a\u0430 \u0447\u0442\u043e<\/a>) \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u043f\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c <a href=\"https:\/\/habr.com\/ru\/articles\/505632\/\" rel=\"noopener noreferrer nofollow\">\u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440<\/a>, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0430\u043c\u0438. \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u043c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430<\/a>, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e. \u0418 \u0442\u043e \u0438 \u0442\u043e \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>load<\/code> \u0438 <code>store<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0446\u0435\u043b\u043e\u043c, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c <code>get<\/code> \u0438 <code>set<\/code> \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041d\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043d\u0438\u0445, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>load<\/code>\/<code>store<\/code>:<\/p>\n<pre><code class=\"lisp\">;; \u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 $value \u0442\u0438\u043f\u0430 i32 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 (\u0430\u043a\u0430 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430) $offset. (func $storei32 (param $offset i32) (param $value i32) (i32.store (local.get $offset) (local.get $value)) )  ;; \u0417\u0430\u0431\u0440\u0430\u0442\u044c (\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 $value \u0442\u0438\u043f\u0430 i32 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 $offset. (func $loadi32 (param $offset i32) (result i32) (i32.load (local.get $offset)) )  ;; \u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u043e \u0434\u043b\u044f i64. (func $storei64 (param $offset i32) (param $value i64) (i64.store (local.get $offset) (local.get $value)) ) (func $loadi64 (param $offset i32) (result i64) (i64.load (local.get $offset)) ) <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043c\u0435\u043d\u044c\u0448\u0435 i32 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442, \u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 8\u043c\u0438 \u0438 16\u0438 \u0431\u0438\u0442\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e, \u0432 WASM \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \/ \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u0437 \u043d\u0435\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"lisp\">;; \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u0435 8 \u0431\u0438\u0442 \u0447\u0438\u0441\u043b\u0430. (func $store8i32 (param $offset i32) (param $value i32) (i32.store8 (local.get $offset) (local.get $value)) )  ;; \u0412\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 8\u043c\u0438 \u0431\u0438\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0438 \u043a\u043b\u0430\u0434\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u0441\u0442\u0435\u043a, \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0432 \u0434\u043e 32\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e. (func $load8i32 (param $offset i32) (result i32) ;; \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f ;; \u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0431\u0438\u0442. ;; \u0418 \u0442\u043e, \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u0438\u0442\u044b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043b\u0438 \u043c\u044b ;; \u0441 \u0447\u0438\u0441\u043b\u043e\u043c \u043a\u0430\u043a \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u0438\u043b\u0438 \u043a\u0430\u043a \u0441 \u0431\u0435\u0437 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c. ;; \u041f\u043e \u044d\u0442\u043e\u043c\u0443 i32.load8 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 _u \u0438 _s \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b. (i32.load8_u (local.get $offset)) ) <\/code><\/pre>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0435\u0435 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b &#171;data \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b&#187; \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438 \u043f\u043e \u043a\u0430\u043a\u0438\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u043b\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439.<\/p>\n<pre><code class=\"lisp\">(memory (export \"mem\") 1)  ;; \u041f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \"HelloWorld!\" \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e 0 ;; \u0442.\u0435. \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0430\u043c\u044f\u0442\u0438. ;; \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 (0x48 0x65 0x6C 0x6C 0x6F 0x20 0x57 0x6F 0x72 0x6C 0x64 0x21). ;; \u0412 data \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e ASCII \u0442\u0435\u043a\u0441\u0442. (data (i32.const 0) \"Hello World!\")  ;; \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u0439\u0442 \u0432 16\u0440\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435. (data (i32.const 100) \"\\2A\\45\") <\/code><\/pre>\n<p>Data \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c &#171;\u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u043c\u0438&#187;. \u0422\u0430\u043a\u0438\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f, \u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e, \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c.<br \/> \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>\u0423 \u043d\u0435\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u0423 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"lisp\">(memory (export \"mem\") 1)  (data $passive \"Some passive data UwU\")  ;; \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f ;; memory.init \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0439(!) \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 ;; \u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442: ;; - \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 ;; - \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c ;; - \u0440\u0430\u0437\u043c\u0435\u0440 (\u0434\u043b\u0438\u043d\u0443) \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c (func $init (param $offsetMem i32) (param $offsetData i32) (param $length i32) (memory.init $passive (local.get $offsetMem) (local.get $offsetData) (local.get $length) ) ) <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 data \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0430\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0435\u0439 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0435 \u0438\u043c \u043c\u0435\u0441\u0442\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f <code>data.drop<\/code> \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u043c ID \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<pre><code class=\"lisp\">(data.drop $passive) <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043d\u043e\u0432\u0430 \u0438\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>memory.size<\/code> \u0438 <code>memory.grow<\/code>.<\/p>\n<pre><code class=\"lisp\">;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 (func $getMemSize (result i32) memory.size )  ;; \u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 $count \u0441\u0442\u0440\u0430\u043d\u0438\u0446. ;; \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0434\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f). ;; \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 -1. (func $growMem (param $count i32) (result i32) (memory.grow (local.get $count)) ) <\/code><\/pre>\n<p>\u0412\u044b\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u043e\u043a\u0430 \u043d\u0435\u043b\u044c\u0437\u044f. \u041d\u043e <a href=\"https:\/\/github.com\/WebAssembly\/memory-control\/blob\/main\/proposals\/memory-control\/Overview.md\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430<\/a> \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u044f\u043c\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 data \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u0432 WASM \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u043e\u043f\u0438\u044f\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<br \/> \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0432\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0432 WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430.<br \/> \u0418 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u043d\u0430 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445, \u0430\u0432\u0442\u043e\u0440\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u0441\u0436\u0430\u043b\u0438\u043b\u0438\u0441\u044c \u043d\u0430\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>memory.copy<\/code> \u0438 <code>memory.fill<\/code>.<\/p>\n<pre><code class=\"lisp\">;; \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u0438\u043d\u043e\u0439 $size \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f ;; \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e $offsetSrc \u0432 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u043e $offsetDst. (func $copy (param $offsetSrc i32) (param $offsetDst i32) (param $size i32) (memory.copy (local.get $offsetDst) (local.get $offsetSrc) (local.get $size) ) )  ;; \u0417\u0430\u043f\u043e\u043b\u043e\u043d\u044f\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c $size \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e $offset ;; \u043a\u043e\u043f\u0438\u044f\u043c\u0438 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u0438\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f $value. ;; \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (call $fill (i32.const 10) (i32.const 90) (i32.const 0)) ;; \u0437\u0430\u0431\u044c\u0435\u0442 \u043d\u0443\u043b\u044f\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 10\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u043e 100\u044b\u0439. (func $fill (param $offset i32) (param $size i32) (param $value i32) (memory.fill (local.get $offset) (local.get $value) (local.get $size) ) ) <\/code><\/pre>\n<p>\u041e\u0441\u0432\u043e\u0438\u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0438\u0437 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/helpers.js\" rel=\"noopener noreferrer nofollow\">helpers.js<\/a> \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<pre><code class=\"lisp\">;; \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u0438\u043d\u043e\u0439 $length \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e $offset \u0432 \u0442\u0435\u043a\u0441\u0442 (utf-8) \u0438 ;; \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. (import \"debug\" \"print\" (func $debugPrint (param $offset i32) (param $length i32)))  ;; \u0427\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f debug.print \u043c\u043e\u0433\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438, \u044d\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u044c ;; \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430. \u041f\u0440\u0438\u0447\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c \"memory\". ;; \u042d\u0442\u043e \u043d\u0435 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u043d\u043e \u043a\u043e\u043d\u0440\u0435\u0442\u043d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430. (memory (export \"memory\") 1)  (data (i32.const 0) \"Hello World!\")  (func (export \"sayHello\") (call $debugPrint (i32.const 0) (i32.const 12)) ) <\/code><\/pre>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0432 \u043c\u043e\u0434\u0443\u043b\u044c \u0438 \u0432\u044b\u0437\u0432\u0430\u0432 <code>sayHello<\/code> \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0443\u0432\u0438\u0434\u0438\u043c <code>Hello World!<\/code> \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435.<\/p>\n<h2>\u0426\u0438\u043a\u043b\u044b<\/h2>\n<p>\u0426\u0438\u043a\u043b\u044b \u0432 WASM \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u043d\u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 \u0441 \u043f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c (while) \u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c (do-while) \u0438 \u0443\u0436 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432 for \u0438 for-each.<br \/> \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438: <code>loop<\/code> \u0438 <code>block<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 <strong>\u043c\u043e\u0436\u0435\u0442<\/strong> \u0431\u044b\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041d\u043e \u044d\u0442\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>br<\/code> \u0438 \u0440\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0435\u0439.<\/p>\n<pre><code class=\"lisp\">(import \"debug\" \"printI32\" (func $debugPrintI32 (param i32)))  ;; \u0412\u044b\u0432\u043e\u0434\u0438\u0442 $count \u0447\u0438\u0441\u0435\u043b \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 $start. (func $countup (param $start i32) (param $count i32) ;; \u0421\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0446\u0438\u043a\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b. (loop $loopname ;; \u0412\u044b\u0432\u043e\u0434\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e. (call $debugPrintI32 (local.get $start)) ;; \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u0447\u0438\u0441\u043b\u043e. (local.set $start (i32.add (local. $start))) ;; \u0414\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0438\u0441\u0435\u043b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438. (local.set $count (i32.add (local.get $count) (i32.const -1))) ;; \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0446\u0438\u043a\u043b $loopname, \u0435\u0441\u043b\u0438 $count \u0431\u043e\u043b\u044c\u0448\u0435 0. (br_if $loopname (i32.gt_s (local.get $count) (i32.const 0))) ;; \u041f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 loop, \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f br (branch) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a ;; continue, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044f \u0446\u0438\u043a\u043b \u0437\u0430\u043d\u043e\u0432\u043e. ;; br_if \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e br \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. ;; br \u0438 \u0440\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u044f\u0432\u043d\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 ;; \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0446\u0438\u043a\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438. ) )  (func $coundown (param $start i32) (param $count i32) (loop $loopname ;; block \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a loop, \u043d\u043e \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043d\u0435\u043c\u0443 br \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 ;; \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u0430\u043a break, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f \u043a \u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0443. (block $blockanme (call $debugPrintI32 (local.get $start)) (local.set $start (i32.add (local.get $start) (i32.const -1))) (local.set $count (i32.add (local.get $count) (i32.const -1))) ;; \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0431\u043b\u043e\u043a $blockanme \u0435\u0441\u043b\u0438 $count \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e. (br_if $blockanme (i32.eqz (local.get $count))) ;; \u0418\u043d\u0430\u0447\u0435 \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0446\u0438\u043a\u043b $loopname. (br $loopname) ) ) ) <\/code><\/pre>\n<h2>\u0422\u0430\u0431\u043b\u0438\u0446\u044b<\/h2>\n<p>\u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u0440\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 WASM \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0435\u0431\u0435 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0435\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u043c ID, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d.<br \/> \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043c\u0435\u0440 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%B5%D1%80%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/a>. \u0422.\u0435. \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043d\u0438\u0445) \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043b\u0430\u0441\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0442\u0434.<br \/> \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0438\u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 WASM, \u0432\u0432\u0435\u0434\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0442\u0430\u0431\u043b\u0438\u0446 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0442\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u044d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0449\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0439 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f &#171;\u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438&#187;, \u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 WASM \u0443 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435?<br \/> \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043d\u0443\u043b\u044f \u044f\u0447\u0435\u0435\u043a, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041d\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0430\u043c\u044f\u0442\u0438, \u044f\u0447\u0435\u0439\u043a\u0438 \u0437\u0434\u0435\u0441\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435, \u043d\u0435 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u0440\u043e\u0434\u0430 &#171;\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445&#187; \u0442\u0438\u043f\u043e\u0432.<br \/> \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 (\u0447\u0438\u0442\u0430\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043d\u0438\u0445) \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u044f\u0447\u0435\u0439\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>call_indirect<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043c\u0435\u0441\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0438\u043f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432\u044b\u0437\u0432\u0430\u0442\u044c. \u041d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"lisp\">(type $math (func (param i32 i32) (result i32)))  ;; \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0432 2 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. ;; \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 (\u043a\u0430\u043a \u0438 \u043e\u0434\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c), ;; \u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445. (table 2 funcref)   ;; Elem \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u043c data \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u043e \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446. ;; \u041f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 $sub \u0438 $add \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. (elem (i32.const 0) func $sub) (elem (i32.const 1) func $add)  ;; \u0421\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. (func $add (param i32 i32) (result i32) (i32.add (local.get 0) (local.get 1)) )  ;; \u0412\u044b\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. (func $sub (param i32 i32) (result i32) (i32.sub (local.get 0) (local.get 1)) )  ;; \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0442 \u043d\u0430\u0434 \u0434\u0432\u0443\u043c\u044f \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0435\u0435 \u043d\u043e\u043c\u0435\u0440\u0443. ;; (call $indirect (i32.const 0) (i32.const 5) (i32.const 2)) \u0432\u0435\u0440\u043d\u0435\u0442 3 ;; (call $indirect (i32.const 1) (i32.const 5) (i32.const 2)) \u0432\u0435\u0440\u043d\u0435\u0442 7 (func $indirect (param $func i32) (param i32 i32) (result i32) ;; \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u0438\u043f. (call_indirect (type $math) (local.get 1) (local.get 2) (local.get $func)) ) <\/code><\/pre>\n<h2>Debug \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h2>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c\u0443 \u0431\u043b\u043e\u043a\u0443 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0439 (\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439) \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u0438 \u0432\u044b\u0448\u0435, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0448\u0438\u043c \u043c\u043e\u0434\u0443\u043b\u044f\u043c \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430.<\/p>\n<pre><code class=\"lisp\">;; \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u0438\u043d\u043e\u0439 $length \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e $offset \u0432 \u0442\u0435\u043a\u0441\u0442 (utf-8) \u0438 ;; \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. (import \"debug\" \"print\" (func $debugPrint (param $offset i32) (param $length i32)))  ;; \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. ;; \u0412\u0441\u0435 \u043e\u043d\u0438 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 (signed). (import \"debug\" \"printI32\" (func $debugPrintI32 (param i32))) (import \"debug\" \"printI64\" (func $debugPrintI64 (param i64))) (import \"debug\" \"printF32\" (func $debugPrintF32 (param f32))) (import \"debug\" \"printF64\" (func $debugPrintF64 (param f64)))  ;; \u041e\u0447\u0438\u0449\u0430\u0435\u0442 \u043e\u043a\u043d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. (import \"debug\" \"clear\" (func $debugClear))  ;; \u041f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434. (import \"debug\" \"sleep\" (func $debugSleep (param i32)))  ;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0438\u043f\u0430 f64 \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0 \u0434\u043e 1. (import \"debug\" \"rand\" (func $debugRand (result f64))) <\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\" rel=\"noopener noreferrer nofollow\">debug.wat<\/a>.<\/p>\n<h2>\u0416\u0438\u0437\u043d\u044c<\/h2>\n<p>\u0421\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0433\u043e\u0441\u044f \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u0432\u0448\u0435\u0433\u043e \u043f\u0440\u043e <a href=\"https:\/\/playgameoflife.com\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0433\u0440\u0443 \u0436\u0438\u0437\u043d\u044c \u0414\u0436\u043e\u043d\u0430 \u041a\u043e\u043d\u0432\u0435\u044f<\/a>. \u041d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435.<\/p>\n<p>\u0418\u0433\u0440\u0430 \u0436\u0438\u0437\u043d\u044c \u044d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u0438\u0433\u0440\u0430 \u0434\u043b\u044f 0 \u0438\u0433\u0440\u043e\u043a\u043e\u0432. \u041c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0433\u0440\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<br \/> \u0418\u0433\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u043e\u043b\u0435 \u0438\u0437 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u043a\u043b\u0435\u0442\u043e\u043a. \u041e\u0431\u044b\u0447\u043d\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e, \u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b, \u0443 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440.<br \/> \u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u043b\u0438 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u043e\u0439.<br \/> \u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0445\u043e\u0434\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u0435\u0435 \u043a\u043b\u0435\u0442\u043e\u043a.<br \/> \u0415\u0441\u043b\u0438 \u043a\u043b\u0435\u0442\u043a\u0430 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u0430 (\u0436\u0438\u0432\u0430) \u0438 \u0443 \u043d\u0435\u0435 \u0435\u0441\u0442\u044c 2 \u0438\u043b\u0438 3 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0430, \u0442\u043e \u043e\u043d\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u043e\u0439, \u0438\u043d\u0430\u0447\u0435 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f (\u0443\u043c\u0438\u0440\u0430\u0435\u0442).<br \/> \u0415\u0441\u043b\u0438 \u043a\u043b\u0435\u0442\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u0430 (\u043c\u0435\u0440\u0442\u0432\u0430) \u0438 \u0443 \u043d\u0435\u0435 \u0440\u043e\u0432\u043d\u043e \u0442\u0440\u0438 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0430, \u043e\u043d\u0430 \u0442\u043e\u0436\u0435 \u0437\u0430\u043a\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f (\u043e\u0436\u0438\u0432\u0430\u0435\u0442), \u0438\u043d\u0430\u0447\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>\u042d\u0442\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 \u043d\u0430 \u043f\u043e\u043b\u0435 (\u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D1%82%D0%B0_%D0%BF%D0%BE_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D1%83\" rel=\"noopener noreferrer nofollow\">\u0422\u044c\u044e\u0440\u0438\u043d\u0433 \u043f\u043e\u043b\u043d\u044b\u043c\u0438<\/a>). <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/a53\/d32\/ba0\/a53d32ba03a9a54b8388da03b3659f80.gif\" alt=\"glider\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/a53\/d32\/ba0\/a53d32ba03a9a54b8388da03b3659f80.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/a53\/d32\/ba0\/a53d32ba03a9a54b8388da03b3659f80.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>glider<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/838\/a5c\/c66\/838a5cc66e0456d2c55991b92c649846.gif\" alt=\"pulsar\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/838\/a5c\/c66\/838a5cc66e0456d2c55991b92c649846.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/838\/a5c\/c66\/838a5cc66e0456d2c55991b92c649846.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>pulsar<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/a47\/0c2\/9cf\/a470c29cf6c88b820cc608831b61f545.gif\" alt=\"gun\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/a47\/0c2\/9cf\/a470c29cf6c88b820cc608831b61f545.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/\/post_images\/a47\/0c2\/9cf\/a470c29cf6c88b820cc608831b61f545.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>gun<\/figcaption><\/div>\n<\/figure>\n<p>\u0416\u0438\u0437\u043d\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u043d\u044b\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043b\u0435\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430.<br \/> \u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0416\u0438\u0437\u043d\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a <code>b3s23<\/code> (\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 3\u0445 \u0441\u043e\u0441\u0435\u0434\u044f\u0445, \u0432\u044b\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 2\u0445 \u0438\u043b\u0438 3\u0445). \u041d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432\u0435\u043b\u0438\u043a\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>b1s012345678<\/code> (\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u043c \u0441\u043e\u0441\u0435\u0434\u0435, \u0432\u044b\u0436\u0438\u0432\u0430\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438).<br \/> \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0435\u0434\u0435\u0439. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0416\u0438\u0437\u043d\u0438 \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 8 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u0435\u0435. \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 &#171;\u0421\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u043e \u041c\u0443\u0440\u0430&#187;. \u041d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0435\u0442\u043a\u0438 \u0441\u0432\u0435\u0440\u0445\u0443, \u0441\u043d\u0438\u0437\u0443 \u0438 \u043f\u043e \u0431\u043e\u043a\u0430\u043c (\u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u043f\u043e \u0434\u0438\u0430\u0433\u043e\u043d\u0430\u043b\u0438). \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 &#171;\u0421\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u043e \u0424\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430&#187;, \u0438 \u043e\u043d\u043e \u043f\u0440\u0438 \u0442\u0435\u0445 \u0436\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p>\u041c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043b\u0435\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c \u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430. \u0418 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c.<br \/> \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c.<br \/> \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0435\u0433\u043e \u0448\u0438\u0440\u0438\u043d\u0430 \u0438 \u0432\u044b\u0441\u043e\u0442\u0430 (\u0434\u0430\u043b\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u0441\u0442\u0440\u043e\u0447\u0435\u043a). \u0412\u044b\u0434\u0435\u043b\u0438\u043c \u043f\u043e\u0434 \u044d\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<pre><code class=\"lisp\">(global $cols (mut i32) (i32.const 0)) (global $rows (mut i32) (i32.const 0)) <\/code><\/pre>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0441\u0442\u043e\u0440\u043e\u043d \u043f\u043e\u043b\u044f, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430, \u0434\u0430\u044e\u0442 \u043d\u0430\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0435\u0442\u043e\u043a \u043d\u0430 \u043f\u043e\u043b\u0435 (aka \u0432 \u043a\u0430\u0434\u0440\u0435). \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0441\u043e\u0440\u044f\u0442\u044c \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u0439 WAT \u043a\u043e\u0434, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u0438 \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e.<\/p>\n<pre><code class=\"lisp\">(global $frameSize (mut i32) (i32.const 0)) <\/code><\/pre>\n<p>\u0412 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0432\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f: \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0438 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u043c (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c).<br \/> \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0432\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0431\u0430\u0439\u0442\u043e\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u043e, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0435 \u043e\u0434\u043d\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044f (\u043a\u0430\u0434\u0440\u043e\u043c), \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e <code>$frameSize<\/code>.<br \/> \u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u0434\u0440 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u043f\u043e <code>$frameSize<\/code>, \u0432\u0442\u043e\u0440\u043e\u0439 \u0441 <code>$frameSize<\/code> \u043f\u043e <code>$frameSize * 2<\/code>.<br \/> \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0443\u0434\u0430-\u0441\u044e\u0434\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f, \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0431\u0443\u0434\u0435\u043c \u0447\u0435\u0440\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u043e\u043b\u0438 \u043a\u0430\u0434\u0440\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043a\u0430\u0434\u0440.<\/p>\n<pre><code class=\"lisp\">(global $frame (mut i32) (i32.const 0)) <\/code><\/pre>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0448\u0430\u0433\u0430\u0445, \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043c\u0435\u0441\u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c &#171;\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c&#187; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ASCII \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>$debugPrint<\/code>. \u041d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0442\u0430\u043c, \u0433\u0434\u0435 \u043a\u043e\u043d\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u0434\u0440. \u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u044d\u0442\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0435\u0434\u0438\u043d\u043e\u0436\u0434\u044b \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e.<\/p>\n<pre><code class=\"lisp\">(global $output (mut i32) (i32.const 0)) <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0437\u0430\u0432\u0435\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430.<\/p>\n<pre><code class=\"lisp\">(global $rule (mut i32) (i32.const 0)) (global $neighborhood (mut i32) (i32.const 0)) <\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c. \u0418 \u043d\u0430\u0447\u043d\u0435\u043c \u043c\u044b \u0441 <code>init<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u043b\u0435, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u043a\u0430\u0434\u0440\u044b.<\/p>\n<pre><code class=\"lisp\">(func (export \"init\") (param $cols i32) (param $rows i32) (param $rule i32) (param $neighborhood i32)  ;; \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 $cols \u0438 $rows \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a \u0435\u0441\u0442\u044c. (global.set $cols (local.get $cols)) (global.set $rows (local.get $rows)) ;; $rule \u0438 $neighborhood \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e. (global.set $rule (local.get $rule)) (global.set $neighborhood (local.get $neighborhood)) ;; \u041f\u043b\u043e\u0449\u0430\u0434\u044c \u043f\u043e\u043b\u044f - \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0448\u0438\u0440\u0438\u043d\u044b \u043d\u0430 \u0432\u044b\u0441\u043e\u0442\u0443. (global.set $frameSize (i32.mul (local.get $cols) (local.get $rows))) ;; \u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0448\u0430\u0433\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0440\u0435\u0439\u043c \u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0430\u043c\u044f\u0442\u0438. (global.set $frame (i32.const 0)) ;; \u041c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0438\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043e\u0438\u0445 \u043a\u0430\u0434\u0440\u043e\u0432. (global.set $output (i32.mul (global.get $frameSize) (i32.const 2))) ;; \u041e\u0447\u0438\u0449\u0430\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0443\u044e \u043a\u0430\u0434\u0440\u0430\u043c\u0438. (memory.fill (i32.const 0) (i32.const 0) (global.get $output) ) ) <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c <code>anotherFrame<\/code>. \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0440\u0435\u0439\u043c \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c (\u043d\u0430 \u044d\u0442\u043e\u043c \u0445\u043e\u0434\u0443) \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044f.<\/p>\n<pre><code class=\"lisp\">(func $another (export \"anotherFrame\") (result i32) ;; \u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 $frame == 0, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c $frameSize. ;; \u0418\u043d\u0430\u0447\u0435 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. (if (result i32) (i32.eq (global.get $frame) (global.get $frameSize)) (then (i32.const 0)) (else (global.get $frameSize)) ) ) <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043c\u0435\u043d\u044b \u0440\u043e\u043b\u0435\u0439 \u043a\u0430\u0434\u0440\u043e\u0432.<\/p>\n<pre><code class=\"lisp\">(func $swap (export \"swapFrames\") (global.set $frame (call $another)) ) <\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0435 \u0438\u043b\u0438 \u0438\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043f\u043e\u043b\u044f, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<pre><code class=\"lisp\">(func $checkOOB (export \"checkOOB\") (param $col i32) (param $row i32) (result i32) ;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0438\u0441\u0442\u0438\u043d\u0443 \u0435\u0441\u043b\u0438 ;; - $col \u043c\u0435\u043d\u044c\u0448\u0435 0 ;; - $row \u043c\u0435\u043d\u044c\u0448\u0435 0 ;; - $col \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0448\u0438\u0440\u0438\u043d\u0430 \u043f\u043e\u043b\u044f ;; - $row \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0432\u044b\u0441\u043e\u0442\u0430 \u043f\u043e\u043b\u044f (i32.lt_s (local.get $col) (i32.const 0)) (i32.lt_s (local.get $row) (i32.const 0)) (i32.ge_s (local.get $col) (global.get $cols)) (i32.ge_s (local.get $row) (global.get $rows)) (i32.or) (i32.or) (i32.or) ) <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0435\u0442\u043a\u0438.<\/p>\n<pre><code class=\"lisp\">(func $setCell (export \"setCell\") (param $col i32) (param $row i32) (param $val i32) (param $frame i32) ;; \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043f\u043e\u043b\u044f. ;; \u0418\u043d\u0430\u0447\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c. (if (call $checkOOB (local.get $col) (local.get $row)) (then return)) ;; \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438. (i32.store8 ;; \u0410\u0434\u0440\u0435\u0441 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438: $frame+$row*$cols+$col (i32.add (local.get $frame) (i32.add (i32.mul (local.get $row) (global.get $cols)) (local.get $col) ) ) (local.get $val) ) )  ;; \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u0435\u0442\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0446\u0435\u043b\u043e\u043c \u0442\u0430\u043a\u0436\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043b\u044f ;; \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u043d\u0435 \u043f\u043e\u043b\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f 0. (func $getCell (export \"getCell\") (param $col i32) (param $row i32) (param $frame i32) (result i32) (if (call $checkOOB (local.get $col) (local.get $row)) (then (return (i32.const 0))) ) (i32.load8_u (i32.add (local.get $frame) (i32.add (i32.mul (local.get $row) (global.get $cols)) (local.get $col) ) ) ) ) <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430.<\/p>\n<pre><code class=\"lisp\">;; \u041f\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u043b \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, ;; \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u0442\u0438\u043f, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. (type $ruleType (func (param $self i32) (param $neigbours i32) (result i32)))  (func $b3s23 (export \"b3s23\") (param $self i32) (param $neigbours i32) (result i32) (if (result i32) (local.get $self) (then (i32.or (i32.eq (local.get $neigbours) (i32.const 2)) (i32.eq (local.get $neigbours) (i32.const 3)) ) ) (else (i32.eq (local.get $neigbours) (i32.const 3)) ) ) )  (func $b1s012345678 (export \"b1s012345678\") (param $self i32) (param $neigbours i32) (result i32) (if (result i32) (local.get $self) (then (i32.const 1) ) (else (i32.eq (local.get $neigbours) (i32.const 1)) ) ) ) <\/code><\/pre>\n<p>\u0418 \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430.<\/p>\n<pre><code class=\"lisp\">;; \u0421\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0432\u043e\u0441\u044c\u043c\u0438 \u043a\u043b\u0435\u0442\u043e\u043a \u0432\u043e\u043a\u0440\u0443\u0433 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 ;; \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e - \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u043e \u0436\u0438\u0432\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439. (type $neighborhoodType (func (param $upLeft i32) (param $up i32) (param $upRight i32) (param $right i32) (param $downRight i32) (param $down i32) (param $downLeft i32) (param $left i32) (result i32) ))  ;; \u0421\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u043e \u041c\u0443\u0440\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0418 \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. (func $Moore (export \"Moore\") (param $upLeft i32) (param $up i32) (param $upRight i32) (param $right i32) (param $downRight i32) (param $down i32) (param $downLeft i32) (param $left i32) (result i32)  (local.get $upLeft) (local.get $up) (local.get $upRight) (local.get $right) (local.get $downRight) (local.get $down) (local.get $downLeft) (local.get $left)  (i32.add) (i32.add) (i32.add) (i32.add) (i32.add) (i32.add) (i32.add) )  ;; \u0421\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u043e \u0424\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430 \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435. (func $VonNeumann (export \"VonNeumann\") (param $upLeft i32) (param $up i32) (param $upRight i32) (param $right i32) (param $downRight i32) (param $down i32) (param $downLeft i32) (param $left i32) (result i32)  (local.get $up) (local.get $right) (local.get $down) (local.get $left)  (i32.add) (i32.add) (i32.add) ) <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0430\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b.<\/p>\n<pre><code class=\"lisp\">;; \u041c\u0435\u0440\u0442\u0432\u0430\u044f (\u043d\u0435 \u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u0430\u044f) \u043a\u043b\u0435\u0442\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u043c (ASCII 32). ;; \u0416\u0438\u0432\u0430\u044f (\u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u0430\u044f) - \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \"+\" (ASCII 43). (func $toChar (export \"toChar\") (param i32) (result i32) (i32.add (i32.const 32) (i32.mul (i32.const 11) (local.get 0))) ) <\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 &#8212; \u043f\u0435\u0440\u0432\u0430\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435:<\/p>\n<pre><code class=\"lisp\">;; \u041e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435. ;; \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c ;; \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0435. (func $render (export \"render\") (result i32 i32)     (local $end i32)     (local $inrow i32)     (local $src i32)     (local $dst i32)     ;; \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c.     (local.set $src (global.get $frame))     ;; \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u044f\u0447\u0435\u0439\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043a\u043b\u0430\u0434\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.     (local.set $dst (global.get $output))     ;; \u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0446\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044f.     ;; \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043b\u044f + \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f.     (local.set $end (i32.add         (global.get $frame)         (global.get $frameSize)     ))     ;; \u041a\u043e\u043b\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0435\u0442\u043e\u043a, \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438.     (local.set $inrow (i32.const 0))     (loop $loop         (block $block         ;; \u0411\u0435\u0440\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e $src.         ;; \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0432 \u0441\u0438\u043c\u0432\u043e\u043b.         ;; \u041a\u043b\u0430\u0434\u0435\u043c \u0435\u0433\u043e \u043f\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e $dst.             (i32.store8 (local.get $dst)                 (call $toChar (i32.load8_u (local.get $src)))             )             ;; \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c $src \u0438 $dst.             (local.set $dst (i32.add (local.get $dst) (i32.const 1)))             (local.set $src (i32.add (local.get $src) (i32.const 1)))             (local.set $inrow (i32.add (local.get $inrow) (i32.const 1)))             ;; \u0415\u0441\u043b\u0438 $inrow \u0440\u0430\u0432\u043d\u043e \u0448\u0438\u0440\u0438\u043d\u0435 \u043f\u043e\u043b\u044f.             ;; \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u043d\u0435\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \"\\n\" (ASCII 10) - \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0442\u0440\u043e\u043a\u0438.             (if                 (i32.eq (local.get $inrow) (global.get $cols))                 (then                     (i32.store8 (local.get $dst) (i32.const 10)) ;; \\n                     ;; \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c $dst \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0442\u0440\u043e\u043a\u0438.                     (local.set $dst (i32.add (local.get $dst) (i32.const 1)))                     ;; \u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043b\u0435\u0442\u043e\u043a \u0432 \u0441\u0442\u0440\u043e\u043a\u0435.                     (local.set $inrow (i32.const 0))                 )             )             ;; \u0415\u0441\u043b\u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043a\u043e\u043d\u0446\u0430 \u043a\u0430\u0434\u0440\u0430, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c\u0441\u044f.             (br_if $block (i32.eq (local.get $end) (local.get $src)))             (br $loop)         )     )     (global.get $output) (local.get $dst) )  ;; \u041d\u0443 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f $show \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0430\u044f \u0440\u0435\u043d\u0434\u0435\u0440 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b ;; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e $debugPrint. (func $show (export \"show\") (call $debugPrint (call $render)) ) <\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430:<\/p>\n<pre><code class=\"lisp\">(func $getNeigbours (export \"getNeigbours\")     (param $col i32) (param $row i32) (result i32)     ;; \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0441\u043e\u0441\u0435\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435,     ;; \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043a\u043b\u0435\u0442\u043e\u043a \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u0445 $col,$row.     (call_indirect (type $neighborhoodType)         (call $getCell              (i32.add (local.get $col) (i32.const -1))             (i32.add (local.get $row) (i32.const -1))             (global.get $frame)         ) ;; ... ;; \u041c\u043d\u043e\u0433\u043e (6) \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 getCell \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u043c\u0438 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043e\u0442 -1 \u0434\u043e 1. ;; \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. ;; ... (call $getCell              (i32.add (local.get $col) (i32.const -1))             (i32.add (local.get $row) (i32.const 0))             (global.get $frame)         )         (global.get $neighborhood)     ) ) <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a, \u043f\u043e \u0441\u0443\u0442\u0438, \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#8212; \u0440\u0430\u0441\u0447\u0435\u0442\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u043b\u044f.<\/p>\n<pre><code class=\"lisp\">(func $step (export \"step\")     (local $col i32)     (local $row i32)     (local $next i32)     ;; \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0440\u0435\u0439\u043c, \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435.     (local.set $next (call $another))     ;; \u041f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u043e\u0447\u043a\u0430\u043c.     (local.set $row (i32.const 0))     (loop $rloop ;; \u0418 \u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c.         (local.set $col (i32.const 0))         (loop $cloop         ;; \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u0432\u044b\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439.         ;; \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0442\u043e\u0439         ;; \u0436\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u043d\u043e \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u0430\u0434\u0440\u0435.             (call $setCell                 (local.get $col)                 (local.get $row)                 (call_indirect (type $ruleType)                     (call $getCell                         (local.get $col)                         (local.get $row)                         (global.get $frame)                     )                     (call $getNeigbours (local.get $col) (local.get $row))                     (global.get $rule)                 )                 (local.get $next)             )             ;; \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430.             (local.set $col (i32.add (local.get $col) (i32.const 1)))             ;; \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0446\u0438\u043a\u043b.             (br_if $cloop (i32.lt_s (local.get $col) (global.get $cols)))         )         ;; \u0418\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u0447\u043a\u0438.         (local.set $row (i32.add (local.get $row) (i32.const 1)))         ;; \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0430\u043c, \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0446\u0438\u043a\u043b.         (br_if $rloop (i32.lt_s (local.get $row) (global.get $rows)))     )     ;; \u041c\u0435\u043d\u044f\u0435\u043c \u0440\u043e\u043b\u0438 \u043a\u0430\u0434\u0440\u043e\u0432 \u043c\u0435\u0441\u0442\u0430\u043c\u0438.     (call $swap) ) <\/code><\/pre>\n<p>\u0412\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0433\u043e\u0442\u043e\u0432\u0430, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0448\u0430\u0433\u0438, \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<pre><code class=\"lisp\">(func (export \"run\") (param $sleep i32) (loop $loop ;; \u041e\u0447\u0438\u0449\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d. (call $debugClear) ;; \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0448\u0430\u0433\u0435. (call $show) ;; \u0414\u0435\u043b\u0430\u0435\u043c \u0448\u0430\u0433. (call $step) ;; \u0412\u044b\u0436\u0438\u0434\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0448\u0430\u0433\u0438 \u043d\u0435 \u0441\u043c\u0435\u043d\u044f\u043b\u0438\u0441\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u0434\u043b\u044f ;; \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0433\u043b\u0430\u0437\u0430. (call $debugSleep (local.get $sleep)) ;; \u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e. (br $loop) ) ) <\/code><\/pre>\n<p>\u0418\u0438\u0438\u0438\u0438&#8230;<br \/> <a href=\"https:\/\/asciinema.org\/a\/711495\" rel=\"noopener noreferrer nofollow\">\u0416\u0438\u0437\u043d\u044c<\/a>: <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F711495.svg\" alt=\"b3s23\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F711495.svg 780w,&#10;       https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F711495.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>b3s23<\/figcaption><\/div>\n<\/figure>\n<p><a href=\"https:\/\/asciinema.org\/a\/711497\" rel=\"noopener noreferrer nofollow\">\u041c\u0438\u0440 \u0431\u0435\u0437 \u0441\u043c\u0435\u0440\u0442\u0438<\/a>: <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F711497.svg\" alt=\"b1s012345678\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F711497.svg 780w,&#10;       https:\/\/habr.com\/images\/px.gif#https%3A%2F%2Fasciinema.org%2Fa%2F711497.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>b1s012345678<\/figcaption><\/div>\n<\/figure>\n<p> \u0417\u0430 \u043a\u0430\u0434\u0440\u043e\u043c \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>seedGlider<\/code>, <code>seedPoint<\/code>, <code>seedRandom<\/code>, <code>seedHabr<\/code>, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0438\u0445. \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/intro\/cells.wat\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>. <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u0435\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0443 \u043d\u0430\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0436\u0438\u0437\u043d\u0438 \u0432 \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 &#8212; \u043c\u0435\u043d\u0435\u0435 1.5 \u041ab \u0434\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0438\u043c\u0435\u043d\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0422.\u0435. \u0443\u0431\u0440\u0430\u0432 \u043b\u0438\u0448\u043d\u0438\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u044b, \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0432 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u0430 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u0447\u0442\u0438 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430. \u042d\u0442\u043e, \u043a \u0441\u043b\u043e\u0432\u0443, \u043e \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u0435.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>WASM \u044d\u0442\u043e \u043f\u0440\u043e\u0440\u044b\u0432\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u0438\u0434\u0435\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u0430\u0432\u043d\u043e \u0432\u0438\u0442\u0430\u043b\u0430 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435, \u043d\u043e \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u043b\u0430\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u0434\u0435\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 WASM&#8217;\u0435 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u043e\u043e\u0446\u0435\u043d\u0435\u043d\u043d\u043e\u0439, \u0447\u0442\u043e \u044f, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u043b\u044f \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<br \/> \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 (\u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0445) \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\" rel=\"noopener noreferrer nofollow\">blog-wasm<\/a>.<br \/> \u0410 <a href=\"https:\/\/github.com\/asciimoth\/wasm-examples\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a> \u043c\u043e\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0430\u044f\u0441\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 WASM \u043a\u043e\u0434\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0438, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u0441\u044b\u043b\u043e\u043a \u043f\u043e \u0442\u0435\u043c\u0435.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/901976\/\"> https:\/\/habr.com\/ru\/articles\/901976\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"\"><\/figure>\n<p> WebAssembly \u044f\u0432\u043b\u044f\u044f\u0441\u044c (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0443\u0436\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e <a href=\"https:\/\/madewithwebassembly.com\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d \u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438<\/a>. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432 \u0441\u0435\u0442\u0438 \u043f\u043e \u0442\u0435\u043c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442 WASM \u043a\u0430\u043a \u0446\u0435\u043b\u044c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0436\u0435 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0430\u043c\u0438\u043c WebAssembly \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u043c \u0432 \u0441\u0435\u0442\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e, \u0430 \u0432 \u0440\u0443\u043d\u0435\u0442\u0435 \u0438 \u043f\u043e\u0434\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u044f \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. <\/p>\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0427\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u043e\u0435 WASM \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u043c \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f?<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 &#171;Web Assembly&#187; \u043e\u0431\u0430 \u0441\u043b\u043e\u0432\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u0430\u0432\u0434\u0430. \u042d\u0442\u043e \u043d\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 (\u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438), \u0430 \u0441 \u0432\u0435\u0431\u043e\u043c \u0435\u0433\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f.<br \/> WASM \u044d\u0442\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 <strong>\u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/strong>, \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0434\u043b\u044f \u043d\u0435\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430.<br \/> \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_virtual_machine\" rel=\"noopener noreferrer nofollow\">JVM<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/SECD_machine\" rel=\"noopener noreferrer nofollow\">SECD<\/a>, WASM \u043d\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439 \u043b\u0438\u0431\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u044f\u0437\u044b\u043a\u043e\u0432. \u0423\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 WebAssembly \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c <a href=\"https:\/\/github.com\/appcypher\/awesome-wasm-langs\" rel=\"noopener noreferrer nofollow\">\u0431\u043e\u043b\u0435\u0435 60 \u044f\u0437\u044b\u043a\u043e\u0432<\/a> \u043e\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043d\u0430\u0441\u043a\u0432\u043e\u0437\u044c \u0438\u043c\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e C \u0441 \u0440\u0443\u0447\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0434\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0425\u0430\u0441\u043a\u0435\u043b\u0430 \u0441\u043e \u0432\u0441\u0435\u043c \u0435\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u0438 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e Ruby \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432 WASM \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c.<br \/> \u041d\u0443 \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0435\u0431\u0430 \u044d\u0442\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e Solomon Hykes, \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c Docker, <a href=\"https:\/\/x.com\/solomonstre\/status\/1111004913222324225?lang=en\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0437\u044b\u0432\u0430\u043b\u0441\u044f<\/a> \u043e \u043d\u0435\u0439 \u0442\u0430\u043a:<\/p>\n<pre><code>\u0415\u0441\u043b\u0438 \u0431\u044b WASM+WASI \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0432 2008 \u0433\u043e\u0434\u0443, \u043d\u0430\u043c \u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c Docker. <\/code><\/pre>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0437\u0430\u0447\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e?<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0442\u043e: <a href=\"https:\/\/habr.com\/ru\/companies\/ddosguard\/articles\/877062\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u0430<\/a>, Computer Science, \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430.<\/p>\n<p>\u041a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043c\u0435\u043d\u044f \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e WebAssembly \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044f\u0437\u044b\u043a\u0430 \u0434\u043b\u044f \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432. \u0418 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0435\u043b\u0438\u043a\u0430, a \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c \u0438\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0433\u043e\u043b\u043e\u043c WASM.<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u044b, \u0442\u043e WASM \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d:<\/p>\n<ul>\n<li>\n<p>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438. WebAssembly \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435: \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0438\u0436\u0435 C \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 Fortran, \u043d\u043e \u0432\u044b\u0448\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430\u043c\u0438. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043d\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0441\u0435 \u0435\u0449\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b, \u043d\u043e \u0442\u0443\u0442 \u0432\u0441\u0435 \u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 if-then-else \u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0435 \u0446\u0438\u043a\u043b\u044b. \u0412\u0441\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043d\u044e \u0441 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0447\u0443\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043c\u0430\u0437\u043e\u0445\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0439, \u0447\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0436\u0435\u043b\u0435\u0437\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441 WASM \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430\u043c\u0438 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443, \u0438 \u043f\u043e \u043c\u0435\u0440\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u0432, \u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f. WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f SIMD \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, a \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f WebAssembly \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<\/li>\n<li>\n<p>WAT. \u041a\u0430\u043a \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u043e\u0441\u044c, \u0443 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b WASM \u0435\u0441\u0442\u044c \u043f\u043e\u043c\u0438\u043c\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0435\u0449\u0435 \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#8212; WAT (Web Assembly Text format). \u041e\u043d\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/S-expression\" rel=\"noopener noreferrer nofollow\">S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445<\/a> \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e <em>\u0441\u0430\u0445\u0430\u0440\u0430<\/em> \u0432 \u043d\u0435\u043b\u0435\u0433\u043a\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0441\u0442\u044c. \u0411\u0430\u0439\u0442\u043a\u043e\u0434 WebAssembly \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u0435\u043d. \u0425\u043e\u0442\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0437\u0434\u0435\u0441\u044c 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0435, \u0434\u043b\u044f \u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/LEB128\" rel=\"noopener noreferrer nofollow\">LEB128<\/a>, \u0447\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0440\u0430\u0437\u044b. \u0410 \u044d\u0442\u043e \u043e\u0445 \u043a\u0430\u043a \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 &#8212; \u0432\u043f\u0438\u0445\u043d\u0443\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 WASM \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434 \u0432\u0441\u0435. \u0412 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e API \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u043b WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043a\u043e\u0434 \u0432\u0435\u0437\u0434\u0435, \u043e\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0434\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. \u0412 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u044b \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c WASM \u043a\u043e\u0434 \u0432 \u043a\u0443\u0434\u0430 \u043c\u0435\u043d\u0435\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u0447\u0435\u043c \u0442\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u044b. WASM \u043b\u0435\u0433\u043a\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0437 \u044f\u0437\u044b\u043a\u043e\u0432 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0445\u0430\u043a\u043e\u0432 \u0438 \u0442\u0430\u043a\u043e\u0439 \u0442\u043e \u043c\u0430\u0442\u0435\u0440\u0438, \u0430 \u0440\u044f\u0434\u043e\u043c \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u043c, \u0441\u043a\u0430\u0436\u0435\u043c, JS \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Read%E2%80%93eval%E2%80%93print_loop\" rel=\"noopener noreferrer nofollow\">REPL<\/a> \u043d\u0430 \u043d\u0435\u043c \u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0436\u0438\u0432\u0443\u044e \u043f\u043e \u0445\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0442\u0435\u043c \u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043e\u043d \u0445\u043e\u0440\u043e\u0448 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0439 CS.<\/p>\n<p>\u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0434\u0435\u043c\u043e\u0441\u0446\u0435\u043d\u0430 \u0432\u0430\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430, \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, a \u0432\u0441\u0435 \u0437\u043d\u0430\u043d\u0438\u044f CS \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u0431\u044b\u043b\u0438 \u043d\u0443\u0436\u043d\u044b, \u0432\u044b \u0443\u0436\u0435 \u043e\u0441\u0432\u043e\u0438\u043b\u0438, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0438\u0437 \u044d\u0442\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0435\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u0447\u0435\u0433\u043e \u043b\u0438\u0431\u043e \u0432 WASM. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0442\u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u0442-\u043d\u0435\u0442, \u0434\u0430 \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0435\u0437\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u0432 WASM \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0430\u043c \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b rustc, go \u0438\u043b\u0438 \u043a\u0442\u043e \u0435\u0449\u0435.<\/p>\n<p>\u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0447\u0435\u043c \u0431\u044b \u0432\u0430\u0441 \u043d\u0435 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u0442\u043e\u043f\u0438\u043a, \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c WASM \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043a\u043b\u0435\u0442\u043e\u0447\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f <a href=\"https:\/\/playgameoflife.com\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0433\u0440\u0443 \u0436\u0438\u0437\u043d\u044c<\/a>. \u0412 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430 WASM \u043d\u0435 \u0441\u043e\u0439\u0434\u044f \u0441 \u0443\u043c\u0430, \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0434\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u043c\u043e \u043f\u043e\u0434 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fantasy_video_game_console\" rel=\"noopener noreferrer nofollow\">\u0444\u0435\u043d\u0442\u0435\u0437\u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u044c<\/a> <a href=\"https:\/\/wasm4.org\/\" rel=\"noopener noreferrer nofollow\">wasm4<\/a>.<\/p>\n<h2>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/h2>\n<p>\u0412\u0430\u0436\u043d\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e WASM \u0432\u0441\u0435 \u0435\u0449\u0435 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f, \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u044d\u0442\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445, \u0432\u0441\u0435 \u0435\u0449\u0451 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043e\u0442\u0441\u044e\u0434\u0430. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h2>\u0421\u0435\u0442\u0430\u043f<\/h2>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u044b \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u0443\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u044b <code>wat2wasm<\/code> \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 <a href=\"https:\/\/github.com\/WebAssembly\/wabt\" rel=\"noopener noreferrer nofollow\">wabt<\/a> \u0438 \u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438 \u0438\u0437 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Read%E2%80%93eval%E2%80%93print_loop\" rel=\"noopener noreferrer nofollow\">REPL&#8217;\u0430<\/a> <a href=\"https:\/\/nodejs.org\/en\" rel=\"noopener noreferrer nofollow\">nodejs<\/a>.<br \/> \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043f\u0440\u043e JS \u043d\u0430 \u043d\u0435\u043c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0438 \u0442\u0443\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u0447\u043a\u0438 \u0442\u0440\u0430\u043d\u0441\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 200 \u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0441\u0432\u0435\u0440\u0445\u0443. \u0412\u0441\u0435, \u0447\u0442\u043e \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u044d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u043e\u0434\u044b \u0432\u044b\u0448\u0435\u0434\u0448\u0430\u044f \u043d\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0430\u0440\u044b \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434, \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 <a href=\"https:\/\/github.com\/WebAssembly\/wabt\" rel=\"noopener noreferrer nofollow\">Web Assembly Binary Toolkit<\/a> \u0432 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0438 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/helpers.js\" rel=\"noopener noreferrer nofollow\">\u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442<\/a> \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438-\u0445\u0435\u043b\u043f\u0435\u0440\u0430\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0430 60 \u0441\u0442\u0440\u043e\u043a.<br \/> \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043e\u0442\u0441\u044e\u0434\u0430, \u0432\u0441\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>.<br \/> \u0412\u0441\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0438\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043d\u0435\u043c \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/asciimoth\/blog-wasm\/blob\/master\/intro\/basic-example.wat\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/a> (\u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0435\u0433\u043e \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435):<\/p>\n<pre><code class=\"lisp\">(module (func $answer (result i32) i32.const 0x2A ) (export \"theAnswer\" (func $answer)) ) <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u043c <code>node<\/code> \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 REPL.<br \/> \u041f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>.load helpers.js<\/code>.<br \/> \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430\u0448 \u043f\u0440\u0438\u043c\u0435\u0440: <code>let example = await load(\"intro\/basic-example\")<\/code>.<br \/> \u0418 \u0443\u0437\u043d\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0436\u0438\u0437\u043d\u0438, \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435: <code>example.theAnswer()<\/code>.<\/p>\n<p><a href=\"https:\/\/asciinema.org\/a\/710855\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043f\u0438\u0441\u044c \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430<\/a>: <\/p>\n<figure class=\"\">\n<div><figcaption>asciicast<\/figcaption><\/div>\n<\/figure>\n<p> \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>load<\/code> \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0432\u0442\u0447 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c <code>wat2wasm intro\/basic-example.wat -o intro\/basic-example.wasm<\/code>. <\/p>\n<h2>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043c\u043e\u0434\u0443\u043b\u0438<\/h2>\n<p>\u0422\u0435\u043c, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044f\u0437\u044b\u043a\u0430\u043c\u0438 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 lisp, \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0433 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u043b\u0438\u0441\u043f\u0435\u0440\u044b \u0436\u0435 \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0434\u043e\u043c\u0430.<br \/> \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u043f\u0435\u0440\u0435\u0434 \u0432\u0430\u043c\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/S-expression\" rel=\"noopener noreferrer nofollow\">S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/a> &#8212; \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043a\u0430\u043a \u043f\u0430\u043b\u043a\u0430, \u0441\u0442\u0430\u0440\u044b\u0439, \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u0441\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441. \u041a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u0437\u0434\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u043c\u043b\u044f\u044e\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u0422.\u0435. <code>(a (b c))<\/code> \u0432 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 \u0431\u0443\u0434\u0435\u0442 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043e\u043c <code>[\"a\", [\"b\", \"c\"]]<\/code> \u0438\u0437 JSON. \u041d\u0430 \u044d\u0442\u043e\u043c \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0432 \u043e\u0431\u0449\u0435\u043c, \u0442\u043e \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u0441\u043f\u0438\u0441\u043a\u043e\u0432.<br \/> \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 S-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0435, \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\/\u043a\u043e\u043c\u0430\u043d\u0434\u0443\/\u0444\u0443\u043d\u043a\u0446\u0438\u044e\/etc, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 &#8212; \u0435\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u0422\u0430\u043a <code>(a 1 (b 2 3))<\/code> \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 <s>\u044f\u0437\u044b\u043a \u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0445<\/s> \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u044b\u0439 C-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043a\u0430\u043a <code>a(1, b(2, 3))<\/code>.<\/p>\n<p>\u041a\u043e\u0434 \u043d\u0430 WAT \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>module<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0433\u043e \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0441\u0430\u043c\u0438 WASM \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u044f \u0431\u0443\u0434\u0443 \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>module<\/code>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u0438 \u0431\u0435\u0437 \u0442\u043e\u0433\u043e \u043c\u043d\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 <code>$<\/code> \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b. \u041e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u0430 \u043f\u0440\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0432 \u0431\u0430\u0439\u0442\u043a\u043e\u0434 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u043c\u0435\u0440\u0430: \u0444\u0443\u043d\u043a\u0446\u0438\u044f-1, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f-137 \u0438\u0442\u0434.<br \/> \u0412\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u043e\u0434 \u0438\u0437 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0442\u0443\u0434\u0430 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043c\u0435\u0436\u0434\u0443 WAT \u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"lisp\">;; wat2wasm intro\/basic-example.wat -o intro\/basic-example.wasm ;; wasm2wat intro\/\/basic-example.wasm (module   (type (func (result i32))) ;; type 0   (func (type 0) (result i32)  ;; func 0     i32.const 42)   (export \"theAnswer\" (func 0))) ;; \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0434\u0432\u0443\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u043e\u0447\u043a\u0438 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439. <\/code><\/pre>\n<h2>\u0424\u0443\u043d\u043a\u0446\u0438\u0438<\/h2>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0432 WASM \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430 (\u0414\u0435\u0439\u043a\u0441\u0442\u0440\u0430 \u0434\u043e\u0432\u043e\u043b\u0435\u043d), \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0443\u0442 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u044f\u0437\u044b\u043a \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u0430 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0438\u0436\u0435.<br \/> \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 WebAssembly \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0435\u043a\u043e\u0432\u0430\u044f, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_(%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D1%8F_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0)\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/a> \u0442\u0443\u0442 \u043d\u0435\u0442. \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043a.<\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c &#171;\u0442\u0438\u043f&#187;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043b\u0435\u0436\u0430\u0442\u044c \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u043f\u0440\u0438 \u0435\u0435 \u0432\u044b\u0437\u043e\u0432\u0435 (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u043a\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b) \u0438 \u0447\u0442\u043e \u0442\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u0431\u044f \u0441\u0442\u0435\u043a \u0440\u043e\u0432\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0438\u0445 \u0442\u0438\u043f\u0435. \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0440\u043e\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0437\u044f\u0442\u044c \u0441\u043e \u0441\u0442\u0435\u043a\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0447\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0442\u0438\u043f\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435 VM \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0431\u0430\u0439\u0442\u043a\u043e\u0434\u0430 \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c. \u041d\u0443 \u0438 <code>wat2wasm<\/code> \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 WASM \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b.<br \/> \u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"lisp\">;; \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0435\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043b\u0435\u0436\u0430\u0442\u044c \u0434\u0432\u0430 \u0447\u0438\u0441\u043b\u0430 \u0442\u0438\u043f\u0430 i32. ;; \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430, \u043e\u0434\u043d\u043e \u0442\u0438\u043f\u0430 i64. (type $typename (param i32) (param i32) (result i64))  ;; \u042d\u0442\u043e\u0442 \u0436\u0435 \u0442\u0438\u043f \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0440\u043e\u0447\u0435. (type $typename (param i32 i32) (result i64)) <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u0442\u0438\u043f<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-456464","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/456464","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=456464"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/456464\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=456464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=456464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=456464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}