{"id":497670,"date":"2026-10-07T10:54:24","date_gmt":"2026-10-07T07:54:24","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=497670"},"modified":"2026-10-07T10:54:24","modified_gmt":"2026-10-07T07:54:24","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=497670","title":{"rendered":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 RTOS \u0434\u043b\u044f \u041f\u041b\u041a \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1b8\/270\/1af\/1b82701afff96485e47cbf2937dbd336.jpg\" alt=\"\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0432 \u0432\u0438\u0434\u0435 - \u0441\u043d\u0435\u0433\u043e\u0432\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.\" title=\"\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0432 \u0432\u0438\u0434\u0435 - \u0441\u043d\u0435\u0433\u043e\u0432\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.\" width=\"2048\" height=\"1536\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1b8\/270\/1af\/1b82701afff96485e47cbf2937dbd336.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1b8\/270\/1af\/1b82701afff96485e47cbf2937dbd336.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0432 \u0432\u0438\u0434\u0435 &#8212; \u0441\u043d\u0435\u0433\u043e\u0432\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u0425\u043e\u0442\u044f \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c &#8212; \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0443\u0437\u043a\u0438\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u043c \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u041e\u0421. \u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043a\u0430 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439, \u0438 \u043c\u043e\u0433\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0422\u0443\u0442 \u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>\n<p>\u041e\u0421 \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 (\u043f\u043e\u043b\u043d\u0430\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0436\u0435\u043b\u0435\u0437\u0430).<\/p>\n<\/li>\n<li>\n<p>\u0416\u0435\u0441\u0442\u043a\u043e\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435\u00a0 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434 &#8212; \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f ISA) \u043f\u043e\u0434 \u0441\u043e\u0444\u0442-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u043f\u0438\u0448\u0443 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434: <strong>WIA32<\/strong>. \u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a &#8212; \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441. 32 \u0431\u0438\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434 WIA32. <strong>\u041d\u0435 LLVM<\/strong> \u0438\u043b\u0438 \u0447\u0442\u043e \u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e (\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435), \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f &#8212; \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b. \u041d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442 \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b\u00a0 &#8212; \u043d\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439, \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430\u00a0 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 WIA32.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0438\u043b\u0438  \u0432 \u043c\u043e\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6ac5e5498aee840d7648ce02\" data-style=\"\" id=\"6ac5e5498aee840d7648ce02\" width=\"\" data-habr-games=\"\"><\/div>\n<p>\u0425\u043e\u0442\u044f \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0412\u041c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u0442, \u043d\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e &#8212; \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0432\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435.<\/p>\n<p><code><strong>uint8_t <\/strong><em>memory<\/em>[<strong>SIZE<\/strong>] ={\u043a\u043e\u0434 \u044f\u0434\u0440\u0430- \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -\u0434\u0430\u043d\u043d\u044b\u0435, \u2026 \u0441\u0442\u0435\u043a}<\/code><\/p>\n<p>\u0420\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u0434 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:  <\/p>\n<pre><code class=\"assembly\">.DataSection.TypesStackMap typedef{  R:     dword[16];  Size:      dword;}Thread typedef{  Priority:     dword;  IsActive:     dword;  Stack:     StackMap;  Time:         dword;  Period:       dword;}TasksManager typedef{    tasks:               pointer[8];    Item:                     dword;    CurrentContext:           dword;    TaskCount:                dword;}EModule_ typedef{  IsInterrupt:    byte;  Ptr8t:          byte;  IsPwr:          byte;    Rwt:            byte;    Rdy_:           byte;    Piw:            byte;    DI_0:           byte;    DI_1:           byte;    DI_2:           byte;    DI_3:           byte;    DI_4:           byte;    DI_5:           byte;    DI_6:           byte;    DI_7:           byte;  DI_8:           byte;    DI_9:           byte;    DI_10:           byte;    DI_11:           byte;    DI_12:           byte;   DI_13:           byte;   DI_14:           byte;      DI_15:           byte;  }System typedef{  ID:                  word;  IO_phy:           pointer;  Interrupt:          dword;  IP:               byte[4];  Status:              byte;  IsActive:            byte;  emodule_:        EModule_;  Time:               dword;  AddrTime:           dword;}TG_16proj typedef{    NameProcess:     byte[32];    StartProg:           byte;    StopExtSrc:          byte;    CallBackCode:  byte[2][3];    MSG_IO:         byte[356];}.EndTypes.Declaration thread:                     TasksManager; system:                           System;  system.IO_phy     =           0x40020414; tproj:                         TG_16proj; tproj.NameProcess = \"%s Task A. Parameters\"; tproj.MSG_IO=\"%clear_   %s Ports State: \\n 0] %b(system.emodule_.DI_0)  \\n 1] %b(system.emodule_.DI_1)  \\n 2] %b(system.emodule_.DI_2)    \\n 3] %b(system.emodule_.DI_3)  \\n 4] %b(system.emodule_.DI_4)  \\n 5] %b(system.emodule_.DI_5)  \\n 6] %b(system.emodule_.DI_6)   \\n 7] %b(system.emodule_.DI_7) \\n 14] %b(system.emodule_.DI_14)  \\n \";count32:       dword;locconst:      dword;savvr:         dword;system.Interrupt=1000;system.emodule_.Ptr8t=1;.EndDeclaration.EndDataSection.ProgramRWCNTX RDCD                             R0;JISBIT R0 0                    Taskmanager;JISBIT R0 1                    SaveContext;CALL InitialManager;JMPI Taskmanager;NOP 0;SaveContext:RWCNTX     WRITE                thread.CurrentContext;RWCNTX     WRCD                                    2;JMPI                                      Taskmanager;NOP 0;InitialManager:MOV   R0                                 R28;SDRI  R0                     system.AddrTime;MOVI  R31                                  1;ADDRL R0           @LabelAddress(redrobmarg);MOV   R29                                 R0; MOV   R28                                 SP;SUBI  R28                                120;MOVI  R0                                   0;SDRI  R0                    thread.TaskCount;MOVI   R13                               5000;ADDRL  CNXT           @LabelAddress(IO_Scan_);CALL                                  AddTask;MOVI   R13                               7000;ADDRL  CNXT              @LabelAddress(TaskA);CALL                                  AddTask;MOVI   R13                               3000;ADDRL  CNXT              @LabelAddress(TaskB);CALL                                  AddTask;MOVI   R13                               4000;ADDRL  CNXT              @LabelAddress(TaskC);CALL                                  AddTask;LDRI    R0                   thread.TaskCount;SDRI    R0                        thread.Item;InitIO:NOP;RET;NOP 0;AddTask:LDRI    R7                     thread.TaskCount;MULI    R7                                    4;ADDRL   R6         @SymbolAddress(thread.tasks);ADD     R7         R7                        R6;SDR     R7                                  R28;PUSH                                        R28;SUBI    R28                       @size(Thread);ADDI    R28      @SymbolAddress(Thread.Stack.R);SDR     R28      CNXT        @SymbolAddress(PC);POP     R7;SDR     R28      R7          @SymbolAddress(FP);SUBI    R7                        @size(Thread);SDR     R28      R7          @SymbolAddress(LP);SDR     R28      R7          @SymbolAddress(SP);LDRI    R15                    thread.TaskCount;ADDI    R15                                   1;SDRI    R15                    thread.TaskCount;                              SUBI    R7                                   32;MOV     R28                                  R7;RET;Taskmanager:CALL                                              ItemsUp;LDRI     CNXT                                 thread.Item;MULI     CNXT                                           4;ADDRL    R13                 @SymbolAddress(thread.tasks);ADD      CNXT                R13                     CNXT;LDR      R15                                         CNXT;MOV      CNXT                                         R15;SUBI     R15                                @size(Thread);ADDI     R15               @SymbolAddress(Thread.Stack.R);SDRI     R15                        thread.CurrentContext;RWCNTX   READ                       thread.CurrentContext;NOP 0;ItemsUp:LDRI     R4                      thread.Item;LDRI     R5                 thread.TaskCount;JGEQ     R4          R5                    4;ADDI     R4                                1;SDRI     R4                      thread.Item;RET;MOVI     R4                                0;SDRI     R4                      thread.Item;RET;IO_Scan_:LDRI     R0                      system.Time; LDRI     R1                  system.AddrTime; LDPHY    R1          R1                    0;SUB      R0          R1                   R0; MOVI     R2                             1000;JGEQ     R2          R0                    4; SDRI     R1                      system.Time;ADDRL    R0    @SymbolAddress( tproj.MSG_IO);EXTFN    R0          R0      R0           32; MOVI  R15                      0;LDBI  R14   system.emodule_.DI_0;SHLI  R14        0             0;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_1;SHLI  R14        0             1;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_2;SHLI  R14        0             2;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_3;SHLI  R14        0             3;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_4;SHLI  R14        0             4;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_5;SHLI  R14        0             5;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_6;SHLI  R14       0              6;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0             7;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0             8;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0             9;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            10;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            11;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            12;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            13;OR    R15   R14              R15;LDBI  R14  system.emodule_.DI_14;SHLI  R14        0            14;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            15;OR    R15   R14              R15;LDRI  R14          system.IO_phy;SDPHY R14                    R15;JMPI                 Taskmanager;redrobmarg:NOP 0;TaskA:LDBI  R6 system.emodule_.DI_0;RBIT  R6                    0;SDBI  R6 system.emodule_.DI_0;CALL Ladder;JMPI TaskA;NOP 0;TaskB:LDBI  R6 system.emodule_.DI_7;RBIT  R6                    0;SDBI  R6 system.emodule_.DI_7;CALL Processbinary;JMPI TaskB;NOP 0;TaskC:LDBI  R6 system.emodule_.DI_14;RBIT  R6                     0;SDBI  R6 system.emodule_.DI_14;CALL ProcessMath;JMPI TaskC;NOP 0;Processbinary:LDRI R0  system.Interrupt;MULI R0                2;BinaryItem:SUBI R0 1;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;JTRUE R0  BinaryItem;RET;Ladder:LDRI R0  system.Interrupt;MOVI R15 1;LadderItem:SUBI R0 1;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;ANDM  R15 system.emodule_.Ptr8t;JTRUE R0  LadderItem;RET;ProcessMath:LDRI R0   system.Interrupt;MathItem:SUBI R0 1;LDRI R15 count32;LDRI R14 locconst;ADD   R13 R14      R15;SDRI R13 savvr;LDRI R15 count32;LDRI R14 locconst;SUB   R13 R15      R14;SDRI R13 savvr;LDRI R15 count32;LDRI R14 locconst;MUL   R13 R15      R14;SDRI R13 savvr;LDRI R15 count32;LDRI R14 locconst;DIV   R13  R15      R14;SDRI R13  savvr;LDRI R15 count32;LDRI R14 locconst;ADD   R13 R14      R15;SDRI R13 savvr;LDRI R15 count32;LDRI R14 locconst;SUB   R13 R15      R14;SDRI R13 savvr;LDRI R15 count32;LDRI R14 locconst;MUL   R13 R15      R14;SDRI R13 savvr;LDRI R15  count32;LDRI R14 locconst;DIV   R13  R15      R14;SDRI R13  savvr;LDRI R15 count32;LDRI R14 locconst;MUL   R13 R15      R14;SDRI R13 savvr;LDRI R15  count32;LDRI R14 locconst;DIV   R13  R15      R14;SDRI R13  savvr;JTRUE R0 MathItem;RET;Exitprog:NOP 0;.EndProgram<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p><strong>StackMap <\/strong>&#8212; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<p><strong>Thread \u00a0 <\/strong>&#8212; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043b\u044f \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0437\u0430\u0434\u0430\u0447\u0438, \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 StackMap .<\/p>\n<p><strong>TasksManager<\/strong> &#8212; \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430. \u0432 \u043d\u0435\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438).<\/p>\n<p><strong>EModule_<\/strong> &#8212; \u0445\u0440\u0430\u043d\u0438\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043e\u0432 \u0432\u044b\u0445\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043b\u044e\u0431\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u043e\u0432, EModule_\u00a0 &#8212; \u0435\u0441\u0442\u044c \u0435\u0434\u0438\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430\u043c\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u041e\u0417\u0423 <strong>uint8_t <\/strong><em>memory<\/em>[0].<\/p>\n<pre><code class=\"assembly\">RWCNTX RDCD            R0;\/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\/\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441*\/JISBIT R0 0   Taskmanager;JISBIT R0 1   SaveContext;CALL InitialManager;JMPI Taskmanager;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u043e\u043c\u0430\u043d\u0434 &#8212; \u0432 \u043d\u043e\u043b\u044c, \u0430 \u0442\u0430\u043c \u043f\u043e \u043a\u043e\u0434\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u0415\u0441\u043b\u0438 RDCD\u00a0 &#8212; \u043f\u0443\u0441\u0442, \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e CALL InitialManager; \u0422\u0430\u043a \u0436\u0435 \u0441\u044e\u0434\u0430 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u0440\u043e\u0447\u0435\u0435).<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0412\u041c,\u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435,\u00a0 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 R28 &#8212; \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440\u00a0<\/p>\n<p><code>cpu.R[28].ui = (unsigned int)(&amp;cpu.Time);<\/code><\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0436\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0442\u0435\u0440\u0435\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0438 \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e (\u041d\u0443 \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u0442\u0438\u0440\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 R28).<\/p>\n<p><em>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435<\/em><\/p>\n<p><code>MOV \u00a0 R0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 R28;<\/code><\/p>\n<p><code>SDRI\u00a0 R0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 system.AddrTime;<\/code><\/p>\n<p><strong>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447.  <\/strong><\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e \u043c\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0441 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u044e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442 LD\\FBD \u0432 \u044d\u0442\u043e\u0442 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u0438 \u0440\u0430\u0437\u043d\u043e\u0441\u0438\u0442 \u0437\u0430\u0434\u0430\u0447\u0438.<\/p>\n<p>\u041d\u043e \u0441\u0430\u043c\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a: <\/p>\n<pre><code class=\"assembly\">AddTask:LDRI \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 thread.TaskCount;MULI \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a04;ADDRL \u00a0 R6 \u00a0 \u00a0 \u00a0 \u00a0 @SymbolAddress(thread.tasks);ADD \u00a0 \u00a0 R7 \u00a0 \u00a0 \u00a0 \u00a0 R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0R6;SDR \u00a0 \u00a0 R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0R28;PUSH \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0R28;SUBI \u00a0 \u00a0R28 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 @size(Thread);ADDI \u00a0 \u00a0R28 \u00a0 \u00a0 \u00a0@SymbolAddress(Thread.Stack.R);SDR \u00a0 \u00a0 R28 \u00a0 \u00a0 \u00a0CNXT \u00a0 \u00a0 \u00a0 \u00a0@SymbolAddress(PC);POP \u00a0 \u00a0 R7;SDR \u00a0 \u00a0 R28 \u00a0 \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0@SymbolAddress(FP);SUBI \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0@size(Thread);SDR \u00a0 \u00a0 R28 \u00a0 \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0@SymbolAddress(LP);SDR \u00a0 \u00a0 R28 \u00a0 \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0@SymbolAddress(SP);LDRI \u00a0 \u00a0R15 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0thread.TaskCount;ADDI \u00a0 \u00a0R15 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1;SDRI \u00a0 \u00a0R15 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0thread.TaskCount; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0SUBI \u00a0 \u00a0R7 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 32;MOV \u00a0 \u00a0 R28 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0R7;RET;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code class=\"assembly\">MOVI   R13                               7000;ADDRL  CNXT              @LabelAddress(TaskA);CALL                                  AddTask;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0434 \u043a\u0430\u0436\u0434\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0435\u043a\u0435. \u0412 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0442\u0435\u043a\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <strong>Thread <\/strong>\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 (\u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0430\u0434\u0440\u0435\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0430, \u0433\u0434\u0435 \u0435\u0435 \u0441\u0442\u0435\u043a \u0438 \u043f\u0440\u043e\u0447\u0435\u0435).  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 <strong>Taskmanager  <\/strong>\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f<em> thread.tasks<\/em><\/p>\n<pre><code class=\"assembly\">Taskmanager:CALL                                              ItemsUp;LDRI     CNXT                                 thread.Item;MULI     CNXT                                           4;ADDRL    R13                 @SymbolAddress(thread.tasks);ADD      CNXT                R13                     CNXT;LDR      R15                                         CNXT;MOV      CNXT                                         R15;SUBI     R15                                @size(Thread);ADDI     R15               @SymbolAddress(Thread.Stack.R);SDRI     R15                        thread.CurrentContext;RWCNTX   READ                       thread.CurrentContext;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430\u00a0 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430, \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0443\u0442 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0440\u043e-\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u043a\u043e\u0434.  <\/p>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0437\u0430\u0446\u0438\u043a\u043b\u0435\u043d\u0430 (\u0432 \u0432\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435) \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 \u0432\u044b\u0432\u043e\u0434, \u0447\u0435\u043c \u043c\u043e\u0440\u0433\u0430\u0435\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/p>\n<pre><code class=\"assembly\">TaskA:LDBI  R6 system.emodule_.DI_0;RBIT  R6                    0;SDBI  R6 system.emodule_.DI_0;CALL Ladder;JMPI TaskA;NOP 0;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0442\u0438\u043f\u0430 LD  \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440:<\/p>\n<pre><code class=\"assembly\">ANDM \u00a0R15 system.emodule_.Ptr8t;ANDM \u00a0R15 system.emodule_.Ptr8t;ANDM \u00a0R15 system.emodule_.Ptr8t;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432\/\u043a\u0430\u0442\u0443\u0448\u0435\u043a \u0442\u0438\u043f\u0430. \u0421\u0440\u0435\u0434\u0430 IDE \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48b\/f1f\/257\/48bf1f257f172da9ce83a8f15d9f5e0f.png\" width=\"932\" height=\"482\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/48b\/f1f\/257\/48bf1f257f172da9ce83a8f15d9f5e0f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48b\/f1f\/257\/48bf1f257f172da9ce83a8f15d9f5e0f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0435\u0439 \u043a\u0432\u0430\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u044f \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442), \u0435\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440.  <\/p>\n<pre><code class=\"cpp\">void SysTick_Handler(void){cpu.Time++;cpu.TimeOut++;if(PC&lt;=cpu.R[29].ui || cpu.State ||cpu.TimeOut&lt;cpu.R[31].ui){return;}      cpu.State = MODETASKMANAGER_;      cpu.TimeOut = 0;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412<em> PC&lt;=cpu.R[29].ui<\/em> \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u044f\u0434\u0440\u0430, \u043e\u0442\u0434\u0435\u043b\u044f\u044e\u0449\u0430\u044f \u043a\u043e\u0434 \u043f\u043e\u043b\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0442 \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430. \u0422\u0430\u043a \u0436\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u044b \u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <strong>cpu.R[31].ui<\/strong> &#8212; \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 &#8212; \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<p>\u041f\u0440\u0438 \u0438\u043d\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u041e\u0421 \u043c\u044b \u0447\u0438\u0442\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u043c\u0435\u0442\u043a\u0438 <strong>redrobmarg<\/strong><\/p>\n<pre><code>ADDRL R0           @LabelAddress(redrobmarg);MOV   R29                                 R0;<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0441\u0430\u043c\u043e \u044f\u0434\u0440\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0430\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043c\u0435\u043d\u0443 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0441\u0430\u043c\u0443 \u0441\u0435\u0431\u044f,  \u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442 \u0445\u0430\u043e\u0441. \u041c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u0438\u043b\u0438 \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f) \u043e\u0442 \u043a\u043e\u0434\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0440\u0432\u0430\u043d).<\/p>\n<p>\u041d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0438\u0447\u0435 \u043c\u0435\u0442\u043a\u0438 <em>redrobmarg<\/em>, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0448\u0430 IO_Scan_:\u00a0 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0440\u0442\u044b.<\/p>\n<p>\u0422\u0430\u043a\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e &#8212; \u041e\u0421 \u043c\u043e\u0436\u0435\u0442  \u0432\u043e\u0432\u0441\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0430 (\u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438), \u0418\u043b\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0441\u043c\u0435\u043d\u0443 \u0437\u0430\u0434\u0430\u0447\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 <\/p>\n<p><code>cpu.R[29].ui = 0xFFFFFFFF;\u00a0<\/code> <\/p>\n<p>\u0442\u043e\u0433\u0434\u0430 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u043c.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0442: <\/p>\n<ul>\n<li>\n<p>\u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u041e\u0421,\u00a0 <\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u041e\u0421 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043b\u0438\u0431\u043e \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 <\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u201c\u041e\u0421\u201d \u043f\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u041e\u0421 &#8212; \u044d\u0442\u043e \u043f\u043e\u043a\u0430 <strong>\u0433\u0440\u043e\u043c\u043a\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e<\/strong>, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0443\u0442 \u043d\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e, \u043d\u043e \u0441\u0443\u0442\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442.<\/p>\n<p><strong>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/strong><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448\u0430 \u0412\u041c \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u043d\u0430 STM32F722 Nucleo, \u0443 \u043d\u0430\u0441 \u0447\u0435\u0442\u044b\u0440\u0435  \u0437\u0430\u0434\u0430\u0447\u0438<\/p>\n<ul>\n<li>\n<p><strong>IO_Scan_<\/strong>: \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0445\u043e\u0434\u044b \u041f\u041b\u041a. \u0410 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"assembly\">tproj.MSG_IO=\"%clear_   %s Ports State: \\n 0] %b(system.emodule_.DI_0)  \\n 1] %b(system.emodule_.DI_1)  \\n 2] %b(system.emodule_.DI_2)    \\n 3] %b(system.emodule_.DI_3)  \\n 4] %b(system.emodule_.DI_4)  \\n 5] %b(system.emodule_.DI_5)  \\n 6] %b(system.emodule_.DI_6)   \\n 7] %b(system.emodule_.DI_7) \\n 14] %b(system.emodule_.DI_14)  \\n \";<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 , \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 <em>%b(<\/em><strong><em>system.emodule_.DI_7<\/em><\/strong><em>)<\/em> \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 &#8212; \u0430\u0434\u0440\u0435\u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0430 \u0436\u0435\u043b\u0435\u0437\u043e \u0443\u0436\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u043e\u0432. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u00a0 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 JSON \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e RS485 \u0438\u043b\u0438 TCP (\u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0435\u0441\u0442\u044c) \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0411\u0435\u0437 %s \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0442\u043e\u043a \u0431\u0430\u0439\u0442.<\/p>\n<ul>\n<li>\n<p><strong>TaskA<\/strong>: \u0417\u0430\u0434\u0430\u0447\u0430  \u0441 LD \u0446\u0435\u043f\u044f\u043c\u0438 , \u0438 \u043c\u043e\u0440\u0433\u0430\u0435\u0442 0 \u043f\u043e\u0440\u0442\u043e\u043c (\u0437\u0435\u043b\u0435\u043d\u044b\u0439).<\/p>\n<\/li>\n<li>\n<p><strong>TaskB <\/strong>\u0417\u0430\u0434\u0430\u0447\u0430  LD  \u0446\u0435\u043f\u044f\u043c\u0438, \u043c\u043e\u0440\u0433\u0430\u0435\u0442 7 \u043f\u043e\u0440\u0442\u043e\u043c (\u0441\u0438\u043d\u0438\u0439).<\/p>\n<\/li>\n<li>\n<p><strong>Task\u0421 <\/strong>\u0417\u0430\u0434\u0430\u0447\u0430 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 LD \u0446\u0435\u043f\u0435\u0439. \u041c\u043e\u0440\u0433\u0430\u0435\u0442 14 \u043f\u043e\u0440\u0442\u043e\u043c (\u043a\u0440\u0430\u0441\u043d\u044b\u0439).<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bb\/6e6\/de9\/8bb6e6de96e86ecd732572704429fed9.gif\" width=\"640\" height=\"360\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bb\/6e6\/de9\/8bb6e6de96e86ecd732572704429fed9.gif 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bb\/6e6\/de9\/8bb6e6de96e86ecd732572704429fed9.gif 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u044e\u0430\u043d\u0441\u043e\u0432 \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c\u0438, \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0435\u043d\u044c, \u0434\u0432\u0430, \u043d\u0435\u0434\u0435\u043b\u044e &#8212; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0430\u0436\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u044b \u0441\u0434\u0435\u043b\u0430\u043b : <\/p>\n<ul>\n<li>\n<p>\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430\/\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0438\u0437\u0432\u0438\u043b\u0438\u0441\u0442\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u0422\u0430\u043a \u043a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u044d\u0442\u043e \u043d\u0435  <strong>LLVM <\/strong>\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438. <\/p>\n<\/li>\n<\/ul>\n<ul>\n<li>\n<p>\u0421\u0430\u043c\u043e\u0439 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 &#8212; \u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u0445 \u043d\u0430 \u0441\u0442\u0435\u043a\u0438, \u043a\u0430\u0434\u0440\u044b \u0441\u0442\u0435\u043a\u0430 \u0438 \u0432\u0441\u044f\u043a\u0438\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f. <\/p>\n<\/li>\n<li>\n<p>\u0418 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0441\u0440\u0435\u0434\u044b IDE .<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u0442\u044f\u0436\u0435\u043b\u043e \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1091398\/\">https:\/\/habr.com\/ru\/articles\/1091398\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0432 \u0432\u0438\u0434\u0435 &#8212; \u0441\u043d\u0435\u0433\u043e\u0432\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u044b.\u0425\u043e\u0442\u044f \u044f \u0441\u0447\u0438\u0442\u0430\u044e \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u043c &#8212; \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0443\u0437\u043a\u0438\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u043c \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u041e\u0421. \u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043a\u0430 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439, \u0438 \u043c\u043e\u0433\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u0443 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0422\u0443\u0442 \u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:\u041e\u0421 \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 (\u043f\u043e\u043b\u043d\u0430\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0436\u0435\u043b\u0435\u0437\u0430).\u0416\u0435\u0441\u0442\u043a\u043e\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.\u0412\u044b\u0442\u0435\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u043e\u0441\u0442\u044c.\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435\u00a0 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447.\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434 &#8212; \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f ISA) \u043f\u043e\u0434 \u0441\u043e\u0444\u0442-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u043f\u0438\u0448\u0443 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442:\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043c\u0430\u043d\u0434: WIA32. \u0420\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a &#8212; \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441. 32 \u0431\u0438\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434 WIA32. \u041d\u0435 LLVM \u0438\u043b\u0438 \u0447\u0442\u043e \u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e (\u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435), \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f &#8212; \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b. \u041d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442 \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b\u00a0 &#8212; \u043d\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439, \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438.\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430\u00a0 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 WIA32.\u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0438\u043b\u0438  \u0432 \u043c\u043e\u0435\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:\u0425\u043e\u0442\u044f \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0412\u041c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u0442, \u043d\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e &#8212; \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0432\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435.uint8_t memory[SIZE] ={\u043a\u043e\u0434 \u044f\u0434\u0440\u0430- \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f -\u0434\u0430\u043d\u043d\u044b\u0435, \u2026 \u0441\u0442\u0435\u043a}\u0420\u043e\u0434\u043d\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u0434 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u043a\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:  .DataSection.TypesStackMap typedef{  R:     dword[16];  Size:      dword;}Thread typedef{  Priority:     dword;  IsActive:     dword;  Stack:     StackMap;  Time:         dword;  Period:       dword;}TasksManager typedef{    tasks:               pointer[8];    Item:                     dword;    CurrentContext:           dword;    TaskCount:                dword;}EModule_ typedef{  IsInterrupt:    byte;  Ptr8t:          byte;  IsPwr:          byte;    Rwt:            byte;    Rdy_:           byte;    Piw:            byte;    DI_0:           byte;    DI_1:           byte;    DI_2:           byte;    DI_3:           byte;    DI_4:           byte;    DI_5:           byte;    DI_6:           byte;    DI_7:           byte;  DI_8:           byte;    DI_9:           byte;    DI_10:           byte;    DI_11:           byte;    DI_12:           byte;   DI_13:           byte;   DI_14:           byte;      DI_15:           byte;  }System typedef{  ID:                  word;  IO_phy:           pointer;  Interrupt:          dword;  IP:               byte[4];  Status:              byte;  IsActive:            byte;  emodule_:        EModule_;  Time:               dword;  AddrTime:           dword;}TG_16proj typedef{    NameProcess:     byte[32];    StartProg:           byte;    StopExtSrc:          byte;    CallBackCode:  byte[2][3];    MSG_IO:         byte[356];}.EndTypes.Declaration thread:                     TasksManager; system:                           System;  system.IO_phy     =           0x40020414; tproj:                         TG_16proj; tproj.NameProcess = &#171;%s Task A. Parameters&#187;; tproj.MSG_IO=&#187;%clear_   %s Ports State: \\n 0] %b(system.emodule_.DI_0)  \\n 1] %b(system.emodule_.DI_1)  \\n 2] %b(system.emodule_.DI_2)    \\n 3] %b(system.emodule_.DI_3)  \\n 4] %b(system.emodule_.DI_4)  \\n 5] %b(system.emodule_.DI_5)  \\n 6] %b(system.emodule_.DI_6)   \\n 7] %b(system.emodule_.DI_7) \\n 14] %b(system.emodule_.DI_14)  \\n &#171;;count32:       dword;locconst:      dword;savvr:         dword;system.Interrupt=1000;system.emodule_.Ptr8t=1;.EndDeclaration.EndDataSection.ProgramRWCNTX RDCD                             R0;JISBIT R0 0                    Taskmanager;JISBIT R0 1                    SaveContext;CALL InitialManager;JMPI Taskmanager;NOP 0;SaveContext:RWCNTX     WRITE                thread.CurrentContext;RWCNTX     WRCD                                    2;JMPI                                      Taskmanager;NOP 0;InitialManager:MOV   R0                                 R28;SDRI  R0                     system.AddrTime;MOVI  R31                                  1;ADDRL R0           @LabelAddress(redrobmarg);MOV   R29                                 R0; MOV   R28                                 SP;SUBI  R28                                120;MOVI  R0                                   0;SDRI  R0                    thread.TaskCount;MOVI   R13                               5000;ADDRL  CNXT           @LabelAddress(IO_Scan_);CALL                                  AddTask;MOVI   R13                               7000;ADDRL  CNXT              @LabelAddress(TaskA);CALL                                  AddTask;MOVI   R13                               3000;ADDRL  CNXT              @LabelAddress(TaskB);CALL                                  AddTask;MOVI   R13                               4000;ADDRL  CNXT              @LabelAddress(TaskC);CALL                                  AddTask;LDRI    R0                   thread.TaskCount;SDRI    R0                        thread.Item;InitIO:NOP;RET;NOP 0;AddTask:LDRI    R7                     thread.TaskCount;MULI    R7                                    4;ADDRL   R6         @SymbolAddress(thread.tasks);ADD     R7         R7                        R6;SDR     R7                                  R28;PUSH                                        R28;SUBI    R28                       @size(Thread);ADDI    R28      @SymbolAddress(Thread.Stack.R);SDR     R28      CNXT        @SymbolAddress(PC);POP     R7;SDR     R28      R7          @SymbolAddress(FP);SUBI    R7                        @size(Thread);SDR     R28      R7          @SymbolAddress(LP);SDR     R28      R7          @SymbolAddress(SP);LDRI    R15                    thread.TaskCount;ADDI    R15                                   1;SDRI    R15                    thread.TaskCount;                              SUBI    R7                                   32;MOV     R28                                  R7;RET;Taskmanager:CALL                                              ItemsUp;LDRI     CNXT                                 thread.Item;MULI     CNXT                                           4;ADDRL    R13                 @SymbolAddress(thread.tasks);ADD      CNXT                R13                     CNXT;LDR      R15                                         CNXT;MOV      CNXT                                         R15;SUBI     R15                                @size(Thread);ADDI     R15               @SymbolAddress(Thread.Stack.R);SDRI     R15                        thread.CurrentContext;RWCNTX   READ                       thread.CurrentContext;NOP 0;ItemsUp:LDRI     R4                      thread.Item;LDRI     R5                 thread.TaskCount;JGEQ     R4          R5                    4;ADDI     R4                                1;SDRI     R4                      thread.Item;RET;MOVI     R4                                0;SDRI     R4                      thread.Item;RET;IO_Scan_:LDRI     R0                      system.Time; LDRI     R1                  system.AddrTime; LDPHY    R1          R1                    0;SUB      R0          R1                   R0; MOVI     R2                             1000;JGEQ     R2          R0                    4; SDRI     R1                      system.Time;ADDRL    R0    @SymbolAddress( tproj.MSG_IO);EXTFN    R0          R0      R0           32; MOVI  R15                      0;LDBI  R14   system.emodule_.DI_0;SHLI  R14        0             0;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_1;SHLI  R14        0             1;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_2;SHLI  R14        0             2;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_3;SHLI  R14        0             3;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_4;SHLI  R14        0             4;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_5;SHLI  R14        0             5;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_6;SHLI  R14       0              6;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0             7;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0             8;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0             9;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            10;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            11;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            12;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            13;OR    R15   R14              R15;LDBI  R14  system.emodule_.DI_14;SHLI  R14        0            14;OR    R15   R14              R15;LDBI  R14   system.emodule_.DI_7;SHLI  R14        0            15;OR    R15   R14              R15;LDRI  R14          system.IO_phy;SDPHY R14                    R15;JMPI                 Taskmanager;redrobmarg:NOP 0;TaskA:LDBI  R6 system.emodule_.DI_0;RBIT  R6                    0;SDBI  R6 system.emodule_.DI_0;CALL Ladder;JMPI TaskA;NOP 0;TaskB:LDBI  R6 system.emodule_.DI_7;RBIT  R6                    0;SDBI  R6 system.emodule_.DI_7;CALL Processbinary;JMPI TaskB;NOP 0;TaskC:LDBI  R6 system.emodule_.DI_14;RBIT  R6                     0;SDBI  R6 system.emodule_.DI_14;CALL ProcessMath;JMPI TaskC;NOP 0;Processbinary:LDRI R0  system.Interrupt;MULI R0                2;BinaryItem:SUBI R0 1;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15 BinaryItem;LDBI   R15 system.emodule_.Ptr8t;JFLSE R15&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-497670","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497670","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=497670"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/497670\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=497670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=497670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=497670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}