{"id":211470,"date":"2014-02-05T10:44:02","date_gmt":"2014-02-05T06:44:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=211470"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=211470","title":{"rendered":"<span class=\"post_title\">\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b: \u0447\u0430\u0441\u0442\u044c 5. \u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a BIOS \u0438\u0437 \u041e\u0421<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/36a\/32a\/8fc\/36a32a8fc6e4ab4df4168127097a579f.jpg\"\/><br \/>  \u0412 \u0441\u0430\u043c\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/173263\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u00ab\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00bb \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u044f\u0434\u0440\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GRUB\u2019\u0430 \u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u201cHello World!\u201d. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430 \u0432 \u044f\u0434\u0440\u0435 \u041e\u0421. \u0410 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u2014 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u043c.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445<\/h4>\n<p>  <a href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B5%D1%80%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">\u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 <\/a>\u2013 \u044d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b, \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 \u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 2 \u0433\u0440\u0443\u043f\u043f\u044b:<br \/>  \u2022 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u2013 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u043c\u0438;<br \/>  \u2022 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u2013 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 0 \u0438\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c) \u0438\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 int. <\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e\u0441\u043b\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 IDTR. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 Real Mode. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f BIOS. BIOS \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b CPU, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 POST, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0448\u0430\u0433\u043e\u0432 BIOS \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 <b>IDTR<\/b>. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e <b>0x0<\/b>. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (Real Mode) \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043f\u0430\u0440\u044b <b>sel:offset<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0430\u0434\u0440\u0435\u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. BIOS \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0447\u0442\u043e \u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043e\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0443\u0440\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u044b \u043a \u043c\u0430\u0448\u0438\u043d\u0435. <\/p>\n<p>  \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432 \u0440\u043e\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 0x13 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0441 \u0434\u0438\u0441\u043a\u043e\u0432, \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 0\u044510 \u2014 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u0436\u0438\u043c\u043e\u0432. \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 BIOS\u2019\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0430\u044f \u0432 Real Mode, \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <b>int<\/b>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0435\u043a\u0442\u043e\u0440 \u0441 \u0434\u0438\u0441\u043a\u0430, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e<b> int 0x13<\/b>, \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. <\/p>\n<p>  \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u044b\u0448\u0435 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430, \u0438 \u0443 \u043d\u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u0430\u0434\u0430\u0447 (\u043a\u0440\u043e\u043c\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b x86 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c (Protected Mode) \u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c (Long Mode).<\/p>\n<p>  \u0412 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (Protected Mode) \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0430\u0447\u0435. \u041d\u0430 \u043d\u0435\u0435 \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <b>IDTR<\/b>, \u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <b>Gate Descriptor<\/b> \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 3\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 (\u0447\u0438\u0442\u0430\u0435\u043c \u043f\u0443\u043d\u043a\u0442 6.11 <a href=\"http:\/\/www.intel.com\/Assets\/en_US\/PDF\/manual\/253668.pdf\">\u043c\u0430\u043d\u0443\u0430\u043b\u0430 <\/a>Intel). \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439, \u0430 \u043d\u0435 BIOS-\u043e\u043c, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430. \u0412\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 (HDD, CD-ROM, \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u2026) \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0435\u0447\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430. \u0412 \u0434\u043b\u0438\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (Long Mode) \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435, \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 Gate Descriptor\u2019\u0430.<\/p>\n<h4>\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0432\u044b\u0437\u043e\u0432\u0430 BIOS&#8217;\u0430 \u0438\u0437 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430<\/h4>\n<p>  \u041d\u0443 \u0430 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u044f\u0434\u0440\u0443 \u041e\u0421, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u043c\u0443 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0432\u0441\u0435 \u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441 \u0434\u0438\u0441\u043a\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0436\u0435\u0441\u0442\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430), \u0430 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0435\u0449\u0435 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d? \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.<br \/>  1. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c VirtualMode86 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a BIOS\u2019\u0443 \u0432 Protected Mode.<br \/>  2. \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 RealMode, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a BIOS\u2019\u0443, \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0432 Protected Mode.<\/p>\n<p>  Virtual Mode 86(<a href=\"http:\/\/en.wikipedia.org\/wiki\/Virtual_8086_mode\">VM86<\/a>) \u2013 \u044d\u0442\u043e \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0443, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f (paging) \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0442\u0430\u043a \u043a\u0430\u043a, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u0443\u044e \u0442\u0435\u0445\u043d\u0438\u043a\u0443, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a BIOS\u2019\u0443 \u0438 \u0438\u0437 64\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 LongMode, \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0449\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 VM86). \u041e\u0441\u0442\u0430\u0432\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0434\u0438\u0441\u043a\u043e\u043c \u043d\u0430 \u043f\u043e\u0442\u043e\u043c, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e BIOS.<\/p>\n<p>  \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0442\u0440\u0435\u0442\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0437\u043e\u0432\u0430 BIOS\u2019a \u0438\u0437 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e 32-\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u043c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/176707\/\">\u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f VBE. \u042d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 BIOS\u2019a \u0432 32-\u0445 \u0431\u0438\u0442\u043d\u043e\u043c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435. \u042d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043b\u043e\u0445 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0443\u0434\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438. \u041f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a BIOS \u0443\u0436\u0435 \u0432\u0441\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0432\u043e\u0435\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0438 \u043d\u0430\u043c \u0431\u044b \u043f\u043e\u0434\u043e\u0448\u0435\u043b \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f 2-\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0435\u0449\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445.<\/p>\n<p>  \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0440\u0430\u0442\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 CPU \u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u043a\u0430\u043a MMIO \u0438 DMA. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0443 \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u044d\u0442\u043e\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u0442 BIOS, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430. \u0423\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430, \u043f\u0440\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f BIOS\u2019\u0443, \u0431\u0443\u0434\u0443\u0442 \u0442\u0435\u0440\u044f\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u0412\u0441\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u041e\u0421.<\/p>\n<h4>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c<\/h4>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0448\u0430 \u0446\u0435\u043b\u044c: \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c e820, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430 <b>int 0x15<\/b>. \u0422\u0430\u0431\u043b\u0438\u0446\u044b e820 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u0412 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 BIOS \u0438 BIOS \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b, \u0442\u0430\u0431\u043b\u0438\u0446\u044b ACPI, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u043c\u0430\u043f\u043b\u0435\u043d\u044b \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432 Windows 7 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u043d\u0438\u0442\u043e\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u00ab\u043f\u0430\u043c\u044f\u0442\u044c\u00bb, \u0442\u043e \u00ab\u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u00bb \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0431\u044a\u0435\u043c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044b\u0439 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430\u043c\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/f90\/220\/758\/f90220758423058d09d88c14e3a3bb8f.jpg\"\/><\/p>\n<p>  \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b E820 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f: \u0432 EBX \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0, \u0432 EAX \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0xE820, \u0432 ECX \u2013 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430 (\u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 20-\u0442\u0438 \u0431\u0430\u0439\u0442), \u0432 EDX \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0x534d4150, \u0432 ES:DI \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0431\u0443\u0444\u0435\u0440. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f int0x15 \u0432 \u0431\u0443\u0444\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043e\u0434\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b e820, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 EBX \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u043d\u0430 1. \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c, \u043f\u043e\u043a\u0430 EBX \u0441\u043d\u043e\u0432\u0430 \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0432\u043d\u044b\u043c 0, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u041f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 Carry Flag \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 Eflags \u0431\u0443\u0434\u0435\u0442 \u0441\u0431\u0440\u043e\u0448\u0435\u043d, \u0430 \u0432 EAX \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2018SMAP\u2019. \u0417\u0430\u043f\u0438\u0441\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ed4\/b7d\/e79\/ed4b7de796be657a29f294d175d1799f.jpg\"\/><\/p>\n<p>  \u0422\u0438\u043f \u0440\u0430\u0432\u0435\u043d \u201c1\u201d, \u0435\u0441\u043b\u0438 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043c\u044f\u0442\u0438, \u201c2\u201d \u2013 \u0435\u0441\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438\u043b\u0438 BIOS-\u0430, \u201c3\u201d \u0438\u043b\u0438 \u201c4\u201d \u2013 \u0435\u0441\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f ACPI. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b, \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f. \u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/9b4\/883\/cb9\/9b4883cb93f9e18c89801bce1ca1d852.jpg\"\/><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f, \u0447\u0442\u043e GRUB, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0430, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u0446\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u2013 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a BIOS \u0438\u0437 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430, \u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 GRUB.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 CPU \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 RealMode, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f BIOS\u2019\u0443. BIOS \u0432\u043e\u043b\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043a\u0430\u043a \u0435\u043c\u0443 \u0437\u0430\u0431\u043b\u0430\u0433\u043e\u0440\u0430\u0441\u0441\u0443\u0434\u0438\u0442\u0441\u044f, \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, Coreboot. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0441\u0432\u043e\u044e \u0440\u0430\u0431\u043e\u0442\u0443, BIOS \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0441\u0435\u043a\u0442\u043e\u0440\u0443 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e hdd \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a hdd). BIOS \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0431\u0443\u0434\u0443\u0447\u0438 \u0432 RM. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 hdd \u0438 \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f MBR, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0438\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 GRUB\u2019\u0443. GRUB \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 PM, \u043d\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0435\u043a\u0442\u043e\u0440 \u0441 \u0434\u0438\u0441\u043a\u0430) \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 RM \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430. GRUB \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u043c\u0443 \u044f\u0434\u0440\u0443 \u0432 PM. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u0432 CPU \u043c\u0435\u0436\u0434\u0443 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/33e\/07c\/31a\/33e07c31ad8112f33eaf1ff29bad710d.jpg\"\/><\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u043a\u043e\u0434\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u0422\u0435\u043c\u0430 \u043e\u0431\u0448\u0438\u0440\u043d\u0430\u044f \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0432 \u043a\u043e\u0434\u0435. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 RM \u0438 PM \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u0439 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438. \u0410 \u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u043e\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438? \u0412 RM \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 20 \u0431\u0438\u0442, \u043d\u043e \u0434\u043b\u0438\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 16-\u044e \u0431\u0438\u0442\u0430\u043c\u0438 (\u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434 \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u043c). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u0430\u0437\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435. \u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u0431\u0430\u0437\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u0432\u043b\u0435\u0432\u043e \u043d\u0430 4. \u0421\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u0432 RM \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/536\/00b\/7a8\/53600b7a81eefa3fdef3a17210488be5.jpg\"\/><\/p>\n<p>  \u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0411\u0430\u0437\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432: CS, DS, SS, ES, FS, GS. \u042d\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f <b>\u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438<\/b>. \u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434 PUSH, POP \u044d\u0442\u043e SS (\u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0441\u0442\u0435\u043a\u0430), \u0434\u043b\u044f JUMP, LOOP \u044d\u0442\u043e CS (\u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430), \u0434\u043b\u044f MOV \u044d\u0442\u043e DS (\u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445). <\/p>\n<p>  \u0412 PM \u0442\u043e\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u0430\u044f \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u043d\u0435 \u0441\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442 \u0431\u0430\u0437\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <b>\u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 (\u0438 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432 Intel).<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ef2\/3e4\/740\/ef23e4740b15b574db8adbaa1c0049ef.jpg\"\/><\/p>\n<p>  \u2022 RPL (Requested Privilege Level) \u2013\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u0437\u0430\u0449\u0438\u0442\u044b.<br \/>  \u2022 TI \u2013 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u0438\u043f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043a\u043e\u043c\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440. 1 \u2013 LDT (Local Descriptor Table), 0 \u2013 GDT (Global Descriptor Table).<br \/>  \u2022 Index \u2013 \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 2 \u0442\u0438\u043f\u0430 \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u2013 GDT \u0438 LDT. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 GDT \u043e\u0434\u043d\u0430 \u043d\u0430 \u0432\u0441\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0442\u0430\u0431\u043b\u0438\u0446 LDT \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e (\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u0432\u043e\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441). \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GDT, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f LDT \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c GDT. \u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 2 \u0433\u0440\u0443\u043f\u043f\u044b: \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u0443\u0440\u043e\u0432\u043d\u044f\u043c\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439. \u0412 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u043e \u043d\u0438\u0445 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0438\u0436\u0435 (\u0442\u0430\u043a\u0436\u0435 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432 Intel), \u043d\u0430\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 x86, \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0435\u0439 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u0442\u044c.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/6c6\/905\/68d\/6c690568dedc1332d31ae882562117d6.jpg\"\/><\/p>\n<p>  \u0414\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0438\u043f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0440\u0430\u0437\u043c\u0435\u0440, \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043d\u0435\u043c\u0443, \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0431\u0430\u0437\u0443 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430.<br \/>  \u2022 Base Address \u2013 \u044d\u0442\u043e 32-\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u043f\u043e\u043b\u0435 \u0440\u0430\u0437\u0431\u0438\u0442\u043e \u043d\u0430 3 \u0447\u0430\u0441\u0442\u0438 base_0_15, base_16_23, base_24_31.<br \/>  \u2022 Segment Limit \u2013 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 G = 0, \u0438\u043b\u0438 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043f\u043e 4\u041a\u0431, \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 G = 1.<br \/>  \u2022 G (granularity) \u2013 \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u0442\u043e Segment Limit \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043f\u043e 4\u041a\u0431, \u0438\u043d\u0430\u0447\u0435 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445.<br \/>  \u2022 S (descriptor type) \u2013 \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d, \u0442\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439, \u0438\u043d\u0430\u0447\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439. \u0412 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435 \u0443 \u0432\u0441\u0435\u0445 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d.<br \/>  \u2022 Type \u2013 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0444\u043b\u0430\u0433\u0430 S. \u0414\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b 2 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0448\u0438\u043c \u0431\u0438\u0442\u043e\u043c \u043f\u043e\u043b\u044f. \u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/fc2\/61f\/07b\/fc261f07b2d5f060253884fa1b8c262c.jpg\"\/><\/p>\n<p>  \u0414\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0442\u044b: E (expansion-direction), (W) write-enable, (A) accessed. \u0411\u0438\u0442 (W) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442, (E) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0441\u0442\u0435\u043a\u0430, (A) \u2013 \u043e\u0431\u0449\u0438\u0439 \u0431\u0438\u0442 \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043a\u043e\u0434\u0430, \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 1 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0443, \u0431\u0443\u0434\u044c \u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430 \u0431\u0438\u0442 (E) \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00a9, \u0430 (W) \u043a\u0430\u043a \u00ae. \u0411\u0438\u0442 \u00a9 conforming, \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043a\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u0411\u0438\u0442 \u00ae read enable \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430. \u041f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>  \u2022 L (64-bit code segment) \u2013 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 64\u0445-\u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. \u0424\u043b\u0430\u0433 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 1 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430.<br \/>  \u2022 AVL (Available and reserved bits) \u2013 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u041e\u0421.<br \/>  \u2022 D\/B (default operation size) \u2013 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445. 16 \u0431\u0438\u0442, \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 0 \u0438 32, \u0435\u0441\u043b\u0438 \u0432 1 (\u0434\u0430, \u0434\u0430, 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0442\u043e\u0436\u0435 \u0431\u044b\u0432\u0430\u0435\u0442).<br \/>  \u2022 DPL (descriptor privilege level) \u2013 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430. \u041c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 0 \u0434\u043e 3, \u0433\u0434\u0435 0 \u2013 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0443.<\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"http:\/\/www.intel.com\/content\/dam\/www\/public\/us\/en\/documents\/manuals\/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf\">Intel System Programming Guide Part 1<\/a>, \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 3.4.5. \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0438\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439. \u041d\u0430 \u0425\u0430\u0431\u0440\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 <a href=\"http:\/\/habrahabr.ru\/company\/smart_soft\/blog\/184174\/\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434 <\/a>\u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443.<br \/>  \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043c\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u2013 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 C. \u0422.\u0435. \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0421 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043a\u043e\u0434\u0443 \u0432 RM \u043d\u0430 ASM \u0438 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041a\u043e\u0434 \u043d\u0430 \u0421 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 32\u0445-\u0431\u0438\u0442\u043d\u043e\u043c PM. \u041f\u043b\u0430\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ddc\/574\/e16\/ddc574e16ac23918391b8cfee3e5b2df.jpg\"\/><\/p>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0421 \u043a\u043e\u0434\u0443 \u0432 RM \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438\u0437 \u043a\u043e\u0434\u0430 \u0432 RM \u043a\u043e\u0434\u0443 \u043d\u0430 \u0421.<\/p>\n<p>  <b>! \u0412\u0410\u0416\u041d\u041e! \u0412\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 6-\u0442\u0438 \u0448\u0430\u0433\u043e\u0432 \u0438\u0437 <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/173263\/\">\u043f\u0435\u0440\u0432\u043e\u0439 <\/a>\u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u201c\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u201d!<\/b><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0448 \u043f\u043b\u0430\u043d:<br \/>  1. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 GDT, \u0432\u0437\u0430\u043c\u0435\u043d \u0442\u043e\u0439, \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b GRUB.<br \/>  2. \u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a BIOS \u043d\u0430 \u0421.<br \/>  3. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<br \/>  4. \u0421\u043b\u0435\u043f\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c!<\/p>\n<h4>\u0428\u0430\u0433 1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c GDT<\/h4>\n<p>  1. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 <b>include <\/b>\u0444\u0430\u0439\u043b <b>bitvisor-1.2\\core\\desc.h<\/b>, \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 BitVisor. \u041a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"http:\/\/sourceforge.net\/projects\/bitvisor\/files\/bitvisor\/\">\u0442\u0443\u0442<\/a>. \u0412 \u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430.<br \/>  2. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0430\u0439\u043b <b>descriptor.c<\/b> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code>#include &quot;types.h&quot; #include &quot;desc.h&quot; #include &quot;string.h&quot;  static void SetSegDesc(struct segdesc *d, u32 limit, u32 base, enum segdesc_type type,                        enum segdesc_s s, unsigned int dpl, unsigned int p,                        unsigned int avl, enum segdesc_l l, enum segdesc_d_b d_b) {     d-&gt;base_15_0 = base;     d-&gt;base_23_16 = base &gt;&gt; 16;     d-&gt;type = type;     d-&gt;s = s;     d-&gt;dpl = dpl;     d-&gt;p = p;     d-&gt;avl = avl;     d-&gt;l = l;     d-&gt;d_b = d_b;     d-&gt;base_31_24 = base &gt;&gt; 24;          if (limit &lt;= 0xFFFFF)      {         d-&gt;g = 0;         d-&gt;limit_15_0 = limit &gt;&gt; 0;         d-&gt;limit_19_16 = limit &gt;&gt; 16;     }      else      {         d-&gt;g = 1;         d-&gt;limit_15_0 = limit &gt;&gt; 12;         d-&gt;limit_19_16 = limit &gt;&gt; 28;     } }   void SetupDescTables(struct segdesc *GDT_base) {     \/\/ SEG_SEL_NULL     memset(&GDT_base[0], 0, sizeof(GDT_base[0]));       \/\/ \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442. \u0432\u0441\u0435\u0433\u0434\u0430 0     \/\/ SEG_SEL_CODE32      SetSegDesc(&GDT_base[1], 0xFFFFFFFF, 0x00000000,    \/\/ 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430              SEGDESC_TYPE_EXECREAD_CODE,                \/\/ \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 0              SEGDESC_S_CODE_OR_DATA_SEGMENT, 0, 1,      \/\/ \u0431\u0430\u0437\u0430 0 \u043b\u0438\u043c\u0438\u0442 4G              0, SEGDESC_L_16_OR_32, SEGDESC_D_B_32);     \/\/ SEG_SEL_DATA32     SetSegDesc(&GDT_base[2], 0xFFFFFFFF, 0x00000000,    \/\/ 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445              SEGDESC_TYPE_RDWR_DATA,                    \/\/ \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 0              SEGDESC_S_CODE_OR_DATA_SEGMENT, 0, 1,      \/\/ \u0431\u0430\u0437\u0430 0 \u043b\u0438\u043c\u0438\u0442 4G              0, SEGDESC_L_16_OR_32, SEGDESC_D_B_32);     \/\/ SEG_SEL_CODE16     SetSegDesc(&GDT_base[3], 0x0000FFFF, 0x00000000,    \/\/ 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430              SEGDESC_TYPE_EXECREAD_CODE,                \/\/ \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 0              SEGDESC_S_CODE_OR_DATA_SEGMENT, 0, 1,      \/\/ \u0431\u0430\u0437\u0430 0 \u043b\u0438\u043c\u0438\u0442 4G              0, SEGDESC_L_16_OR_32, SEGDESC_D_B_16);     \/\/ SEG_SEL_DATA16     SetSegDesc(&GDT_base[4], 0x0000FFFF, 0x00000000,    \/\/ 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445              SEGDESC_TYPE_RDWR_DATA,                    \/\/ \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 0              SEGDESC_S_CODE_OR_DATA_SEGMENT, 0, 1,      \/\/ \u0431\u0430\u0437\u0430 0 \u043b\u0438\u043c\u0438\u0442 4G              0, SEGDESC_L_16_OR_32, SEGDESC_D_B_16);      struct descreg gdtr;      gdtr.base = (ulong)GDT_base;            \/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443     gdtr.limit = 5 * sizeof(*GDT_base) - 1; \/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0431\u0430\u0439\u0442\u0430\u0445 - 1     __asm__ volatile (&quot;lgdt %0&quot;             \/\/ GCC-Inline-Assembly                       :                       : &quot;m&quot; (gdtr)); } <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u0434\u0430 \u043d\u0430 \u0421 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e 2\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432: 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0438 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430: 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>SetupDescTables<\/b> \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>*GDT_base<\/b> \u0442\u0430\u0431\u043b\u0438\u0446\u0443 GDT \u0441 \u043f\u044f\u0442\u044c\u044e \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u0430\u043c\u0438, \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u044b\u043c, \u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f 4 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0448\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c. \u0412\u0441\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u0438\u043c\u0435\u044e\u0442 \u0431\u0430\u0437\u0443 0 \u0438 \u043b\u0438\u043c\u0438\u0442 4G. \u041f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440 \u0432 GDT \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u044b\u043c. \u0420\u0435\u0433\u0438\u0441\u0442\u0440 GDTR, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 GDT, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 lgdt. \u0414\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u0430\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c GCC \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u043e\u043c. \u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>asm ( assembler template : output operands                  \/* optional *\/ : input operands                   \/* optional *\/ : list of clobbered registers      \/* optional *\/ ); <\/code><\/pre>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f asm-\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/7d4\/703\/537\/7d4703537783c1609b04785cd404ab5c.jpg\"\/><\/p>\n<p>  \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u0430 GDT \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b CS, SS, DS \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u041d\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e.<\/p>\n<p>  3. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 <b>kernel.c<\/b> \u0432\u044b\u0437\u043e\u0432 <b>SetupDescTables<\/b> \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>#include &quot;printf.h&quot; #include &quot;screen.h&quot; #include &quot;types.h&quot; #include &quot;desc.h&quot; #include &quot;callrealmode.h&quot;  struct segdesc g_GDT[5];  void SetupDescTables(struct segdesc *GDT_base);  void kmain(void) {     clear_screen();     printf(&quot; -- Kernel started! -- \\n&quot;);          SetupDescTables(g_GDT);          u64 ram_size = GetAvalibleRAMSize ();     printf(&quot;ram_size = %llu(%lluMb)\\n&quot;, ram_size, ram_size \/ 0x100000); } <\/code><\/pre>\n<p>  \u0412\u044b\u0437\u043e\u0432 <b>GetAvalibleRAMSize () <\/b>\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445.<\/p>\n<h4>\u0428\u0430\u0433 2. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/h4>\n<p>  1. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 <b>common <\/b>\u0444\u0430\u0439\u043b <b>bitvisor-1.2\\core\\string.s<\/b>, \u0432 \u043f\u0430\u043f\u043a\u0443 <b>include <\/b>\u0444\u0430\u0439\u043b\u044b <b>bitvisor-1.2\\core\\longmode.h<\/b> \u0438 <b>bitvisor-1.2\\include\\core\\string.h<\/b> \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <b>BitVisor<\/b>. \u0412 \u044d\u0442\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a memcpy \u0438 memset. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <b>include\\types.h<\/b> \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code>#ifndef _TYPES_H #define _TYPES_H  #define NULL 0  typedef unsigned long size_t; typedef unsigned long ulong;  typedef unsigned char u8; typedef unsigned short u16; typedef unsigned int u32; typedef unsigned long long u64;  #endif <\/code><\/pre>\n<h4>\u0428\u0430\u0433 3. \u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a BIOS<\/h4>\n<p>  1. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 <b>include <\/b>\u0444\u0430\u0439\u043b <b>segment.h<\/b>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <b>SetupDescTables<\/b> \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0440\u043e\u0432.<\/p>\n<pre><code>#ifndef _SEGMENT_H #define _SEGMENT_H  #define SEG_SEL_NULL        0 #define SEG_SEL_CODE32      (1 * 8) \/\/ Index = 1, TI = 0, RPL = 0 #define SEG_SEL_DATA32      (2 * 8) \/\/ Index = 2, TI = 0, RPL = 0 #define SEG_SEL_CODE16      (3 * 8) \/\/ Index = 3, TI = 0, RPL = 0 #define SEG_SEL_DATA16      (4 * 8) \/\/ Index = 4, TI = 0, RPL = 0  #endif <\/code><\/pre>\n<p>  \u0438 \u0444\u0430\u0439\u043b <b>callrealmode.h<\/b>, \u0441 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <b>GetRamsize<\/b>.<\/p>\n<pre><code>#ifndef _CALLREALMODE_H #define _CALLREALMODE_H  #include &quot;types.h&quot;  u64 GetAvalibleRAMSize(); #endif <\/code><\/pre>\n<p>  2. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0444\u0430\u0439\u043b <b>callrealmode.c<\/b> \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c:<\/p>\n<pre><code>#include &quot;printf.h&quot; #include &quot;types.h&quot; #include &quot;string.h&quot; #include &quot;segment.h&quot; #include &quot;callrealmode_asm.h&quot;  \/\/ interrupts and paging must be disabled  static void callrealmode_Call(struct callrealmode_Data *p_param) {     u16 sp16;     u32 sp32;          \/\/ copy 16 bit code and stack     \/\/ \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 memcpy \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u0435\u0436\u0434\u0443      \/\/ \u043c\u0435\u0442\u043a\u0430\u043c\u0438 callrealmode_start \u0438 callrealmode_end     \/\/ \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 CALLREALMODE_OFFSET &lt; 1Mb. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f      \/\/ \u0438\u0437 \u0437\u0430 \u0442\u043e\u0433\u043e \u0447\u0442\u043e, \u043a\u043e\u0434 \u0432 RM \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a      \/\/ \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u044b\u0448\u0435 1Mb.     memcpy ((u8*)CALLREALMODE_OFFSET, &callrealmode_start,              &callrealmode_end - &callrealmode_start);     \/\/ \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u0434\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u0441\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u0438\u0440\u0430\u0442\u044c \u043a\u043e\u0434, \u0442\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u0441\u0442\u0435\u0442 \u0432\u043d\u0438\u0437.     \/\/ \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0432 RM \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0435\u043a\u0435, \u0438 \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 SP      \/\/ \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e     sp16 = CALLREALMODE_OFFSET - sizeof(*p_param);     \/\/ \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 memcpy \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430 \u0441\u0442\u0435\u043a     memcpy ((void*)(u32)sp16, p_param, sizeof(*p_param));          __asm__ volatile (         &quot;mov %%esp,%0\\n&quot;    \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0441\u0438\u0441\u0442\u0440 ESP \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e sp32         &quot;mov %1,%%ds \\n&quot;    \/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432          &quot;mov %1,%%es \\n&quot;    \/\/ \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b DS, ES, FS, GS, SS         &quot;mov %1,%%fs \\n&quot;    \/\/         &quot;mov %1,%%gs \\n&quot;    \/\/         &quot;mov %1,%%ss \\n&quot;    \/\/         &quot;mov %2,%%esp\\n&quot;    \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0442\u0435\u043a \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 sp16         &quot;pusha       \\n&quot;    \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f         &quot;lcall %3,%4 \\n&quot;    \/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0432 CS                              \/\/ \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 CALLREALMODE_OFFSET.                             \/\/ \u041d\u0430 \u0441\u0442\u0435\u043a\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u0439 CS \u0438 EIP,                             \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439                              \/\/ lretl \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434         &quot;popa        \\n&quot;    \/\/ \u0432\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f         &quot;mov %5,%%ds \\n&quot;    \/\/ \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432          &quot;mov %5,%%es \\n&quot;    \/\/ \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b DS, ES, FS, GS, SS         &quot;mov %5,%%fs \\n&quot;    \/\/         &quot;mov %5,%%gs \\n&quot;    \/\/         &quot;mov %5,%%ss \\n&quot;    \/\/         &quot;mov %0,%%esp\\n&quot;    \/\/ \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 32\u0445 \u0431\u0438\u0442\u043d\u044b\u0439 \u0441\u0442\u0435\u043a, \u0430\u0434\u0440\u0435\u0441                             \/\/ \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 sp32         : &quot;=&a&quot; (sp32)              \/\/ %0 \u2013 Input         : &quot;b&quot; ((u32)SEG_SEL_DATA16) \/\/ %1 - Output         , &quot;c&quot; ((u32)sp16)           \/\/ %2 - Output         , &quot;i&quot; ((u32)SEG_SEL_CODE16) \/\/ %3 - Output         , &quot;i&quot; (CALLREALMODE_OFFSET) \/\/ %4 - Output         , &quot;d&quot; ((u32)SEG_SEL_DATA32) \/\/ %5 - Output         );      \/\/ \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 16\u0442\u0438 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430 \u0432 p_param     memcpy (p_param, (void*)(u32)sp16, sizeof(*p_param)); }  u64 GetAvalibleRAMSize() {     struct callrealmode_Data param; \/\/ \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b                                      \/\/ \u0434\u043b\u044f \u043a\u043e\u0434\u0430 \u0432 RM, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442     u64 avalible_ram_sz = 0;      param.func = CALLREALMODE_FUNC_GETSYSMEMMAP;     param.getsysmemmap.next_num = 0;     do     {         param.getsysmemmap.num = param.getsysmemmap.next_num;         callrealmode_Call(&param);  \/\/ int 0x15, \u0433\u0434\u0435 EBX = param.getsysmemmap.num                                     \/\/   EAX = 0xE820, EDX = 0x534d4150, ECX = 20                                     \/\/   ES:DI = &param.getsysmemmap.base                                     \/\/ \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 EBX \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f                                     \/\/   param.getsysmemmap.next_num = EBX          \/\/ \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u0441 \u0442\u0438\u043f\u043e\u043c SYSMEMMAP_TYPE_AVAILABLE         if (SYSMEMMAP_TYPE_AVAILABLE == param.getsysmemmap.type)         {             avalible_ram_sz += param.getsysmemmap.len;         }                  printf(&quot;n 0x%08X nn 0x%08X b 0x%08llX l 0x%08llX(%lldMb) t 0x%08X\\n&quot;,             param.getsysmemmap.num,              param.getsysmemmap.next_num,             param.getsysmemmap.base,              param.getsysmemmap.len,              param.getsysmemmap.len \/ 0x100000,              param.getsysmemmap.type);     }     while (param.getsysmemmap.next_num);      return avalible_ram_sz; } <\/code><\/pre>\n<p>  \u041c\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e! \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 2 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <b>GetRamsize <\/b>\u0438 <b>callrealmode_Call<\/b>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>GetRamsize <\/b>\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 <b>callrealmode_Data param<\/b> \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 <b>callrealmode_Call<\/b>. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>callrealmode_Call <\/b>\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440. \u041d\u0430 \u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a BIOS, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0442\u043e\u0440\u0430 \u0441 \u0434\u0438\u0441\u043a\u0430. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <b>callrealmode_Data <\/b>. <\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>GetRamsize <\/b>\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 int0x15, \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e <b>callrealmode_Call<\/b> (\u0430\u043d\u0430\u043b\u043e\u0433 int0x15), \u043f\u043e\u043a\u0430 <b>param.getsysmemmap.next_num<\/b> (\u043e\u043d \u0436\u0435 EBX) \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0432\u043d\u044b\u043c \u043d\u0443\u043b\u044e. \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>callrealmode_Call <\/b>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0435 \u043e\u0431\u0440\u0430\u043c\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u0434 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u043c\u0435\u0442\u043a\u0438 <b>callrealmode_start <\/b>\u0438 <b>callrealmode_end <\/b>\u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e 16\u0442\u0438 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u043d\u0438\u0436\u043d\u0438\u0439 \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <b>CALLREALMODE_OFFSET = 0x5000<\/b>. \u0410\u0434\u0440\u0435\u0441 \u0432\u044b\u0431\u0440\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0442\u0435\u0440\u0435\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 BIOS\u2019a. \u041d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u0430\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0430, \u043e\u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u0432\u043e \u0447\u0442\u043e \u043e\u043d\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/d25\/872\/671\/d25872671c51a779c6bef119c846c975.jpg\"\/><\/p>\n<p>  3. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0444\u0430\u0439\u043b <b>callrealmode_asm.h<\/b> \u0432 \u043f\u0430\u043f\u043a\u0443 <b>include<\/b>, \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/neobit\/articles\/blob\/master\/include\/callrealmode_asm.h\">\u0437\u0434\u0435\u0441\u044c <\/a>, \u0438 \u0444\u0430\u0439\u043b <b>callrealmode_asm.s<\/b> \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c <a href=\"https:\/\/github.com\/neobit\/articles\/blob\/master\/callrealmode_asm.s\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041f\u0435\u0440\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 <b>callrealmode.c<\/b>. \u0412\u0442\u043e\u0440\u043e\u0439 \u0444\u0430\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 16\u0442\u0438 \u0431\u0438\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0432 RM, \u0432\u044b\u0437\u043e\u0432 BIOS, \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0432 PM \u0438 \u0437\u0430\u0442\u0435\u043c \u0432 \u043a\u043e\u0434 \u043d\u0430 \u0421. \u041a\u043e\u0434 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0438 \u0432 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u041d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b <b>protection_off <\/b>\u0438 <b>protection_on<\/b>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043c\u0435\u0436\u0434\u0443 PM \u0438 RM, \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u044b. \u041e\u043d\u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e \u0447\u0430\u0441\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a CR3, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 MSR, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c, \u0442\u0430\u043a, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 GDTR \u0438 IDTR. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 BitVisor, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <b>bitvisor-1.2\\core\\callrealmode_asm.s<\/b>. <\/p>\n<h4>\u0428\u0430\u0433 4. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a<\/h4>\n<p>  1. \u0412\u043d\u0435\u0441\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 makefile. \u0417\u0430\u043c\u0435\u043d\u0438\u043c <\/p>\n<pre><code>OBJFILES = \\ \tloader.o  \\ \tcommon\/printf.o  \\ \tcommon\/screen.o  \\ kernel.o <\/code><\/pre>\n<p>  \u043d\u0430<\/p>\n<pre><code>OBJFILES = \\ \tloader.o  \\ \tcommon\/printf.o  \\ \tcommon\/screen.o  \\ \tcommon\/string.o  \\ \tkernel.o \\ \tcallrealmode.o \\ \tcallrealmode_asm.o \\ descriptor.o  <\/code><\/pre>\n<p>  \u0418 \u0441\u0442\u0440\u043e\u0447\u043a\u0443<\/p>\n<pre><code>as -o $@ $&lt; <\/code><\/pre>\n<p>  \u043d\u0430<\/p>\n<pre><code>as -I include -o $@ $&lt; <\/code><\/pre>\n<p>  2. \u041f\u0435\u0440\u0435\u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<pre><code>make rebuild  sudo make image <\/code><\/pre>\n<p>  3. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 \u201c\u2013m\u201d, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e:<\/p>\n<pre><code>sudo qemu-system-i386 -hda hdd.img \u2013m 123 <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/951\/834\/c57\/951834c57ee973d1e28536942e944259.jpg\"\/><\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u044b \u043f\u0430\u043c\u044f\u0442\u0438. \u041a\u0430\u043a \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c dd \u043e\u0431\u0440\u0430\u0437\u0430 hdd.img \u043d\u0430 \u0444\u043b\u0435\u0448\u043a\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435, \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0432\u0448\u0438\u0441\u044c \u0441 \u043d\u0435\u0435.<\/p>\n<h4>\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043f\u043b\u0430\u043d\u044b<\/h4>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a BIOS \u0438\u0437 \u043a\u043e\u0434\u0430 \u043d\u0430 \u0421. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0431\u044b\u043b\u0430 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u0430 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c, \u043a\u0430\u0441\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 FAT32, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437!    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/211470\/\"> http:\/\/habrahabr.ru\/company\/neobit\/blog\/211470\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/36a\/32a\/8fc\/36a32a8fc6e4ab4df4168127097a579f.jpg\"\/><br \/>  \u0412 \u0441\u0430\u043c\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/company\/neobit\/blog\/173263\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0440\u0438\u0438 \u00ab\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0431\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b\u00bb \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u044f\u0434\u0440\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GRUB\u2019\u0430 \u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u201cHello World!\u201d. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430 \u0432 \u044f\u0434\u0440\u0435 \u041e\u0421. \u0410 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u2014 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f BIOS\u2019\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-211470","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/211470","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=211470"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/211470\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=211470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=211470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=211470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}