⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_task.lst

📁 ARM仿真案例
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000030   0068               LDR      R0,[R0, #+0]
   \   00000032   2D30               ADDS     R0,R0,#+45
   \   00000034   0578               LDRB     R5,[R0, #+0]
    382              }
    383              ptcb = OSTCBPrioTbl[prio];
   \                     ??OSTaskDel_5:
   \   00000036   2D06               LSLS     R5,R5,#+24       ;; ZeroExtS R5,R5,#+24,#+24
   \   00000038   2D0E               LSRS     R5,R5,#+24
   \   0000003A   0420               MOVS     R0,#+4
   \   0000003C   6843               MULS     R0,R5,R0
   \   0000003E   ....               LDR      R1,??DataTable42  ;; OSTCBPrioTbl
   \   00000040   0E58               LDR      R6,[R1, R0]
    384              if (ptcb != (OS_TCB *)0) {                                  /* Task to delete must exist           */
   \   00000042   002E               CMP      R6,#+0
   \   00000044   ....               BNE      .+5
   \   00000046   83E0               B        ??OSTaskDel_6
    385          	    y            =  ptcb->OSTCBY;
   \   00000048   2F20               MOVS     R0,#+47
   \   0000004A   315C               LDRB     R1,[R6, R0]
    386          		OSRdyTbl[y] &= ~ptcb->OSTCBBitX;
   \   0000004C   0906               LSLS     R1,R1,#+24       ;; ZeroExtS R1,R1,#+24,#+24
   \   0000004E   090E               LSRS     R1,R1,#+24
   \   00000050   ....               LDR      R0,??DataTable31  ;; OSRdyTbl
   \   00000052   0906               LSLS     R1,R1,#+24       ;; ZeroExtS R1,R1,#+24,#+24
   \   00000054   090E               LSRS     R1,R1,#+24
   \   00000056   ....               LDR      R2,??DataTable31  ;; OSRdyTbl
   \   00000058   525C               LDRB     R2,[R2, R1]
   \   0000005A   3023               MOVS     R3,#+48
   \   0000005C   F35C               LDRB     R3,[R6, R3]
   \   0000005E   9A43               BICS     R2,R2,R3
   \   00000060   4254               STRB     R2,[R0, R1]
    387                  if (OSRdyTbl[y] == 0x00) {                              /* Make task not ready                 */
   \   00000062   0906               LSLS     R1,R1,#+24       ;; ZeroExtS R1,R1,#+24,#+24
   \   00000064   090E               LSRS     R1,R1,#+24
   \   00000066   ....               LDR      R0,??DataTable31  ;; OSRdyTbl
   \   00000068   405C               LDRB     R0,[R0, R1]
   \   0000006A   0028               CMP      R0,#+0
   \   0000006C   06D1               BNE      ??OSTaskDel_7
    388                      OSRdyGrp &= ~ptcb->OSTCBBitY;
   \   0000006E   ....               LDR      R0,??DataTable45  ;; OSRdyGrp
   \   00000070   ....               LDR      R2,??DataTable45  ;; OSRdyGrp
   \   00000072   1278               LDRB     R2,[R2, #+0]
   \   00000074   3123               MOVS     R3,#+49
   \   00000076   F35C               LDRB     R3,[R6, R3]
   \   00000078   9A43               BICS     R2,R2,R3
   \   0000007A   0270               STRB     R2,[R0, #+0]
    389                  }
    390          #if OS_EVENT_EN > 0
    391                  pevent = ptcb->OSTCBEventPtr;
   \                     ??OSTaskDel_7:
   \   0000007C   F269               LDR      R2,[R6, #+28]
    392                  if (pevent != (OS_EVENT *)0) {                          /* If task is waiting on event         */
   \   0000007E   002A               CMP      R2,#+0
   \   00000080   13D0               BEQ      ??OSTaskDel_8
    393          		    pevent->OSEventTbl[y] &= ~ptcb->OSTCBBitX;
   \   00000082   0906               LSLS     R1,R1,#+24       ;; ZeroExtS R1,R1,#+24,#+24
   \   00000084   090E               LSRS     R1,R1,#+24
   \   00000086   5018               ADDS     R0,R2,R1
   \   00000088   0906               LSLS     R1,R1,#+24       ;; ZeroExtS R1,R1,#+24,#+24
   \   0000008A   090E               LSRS     R1,R1,#+24
   \   0000008C   5318               ADDS     R3,R2,R1
   \   0000008E   1B7A               LDRB     R3,[R3, #+8]
   \   00000090   3027               MOVS     R7,#+48
   \   00000092   F75D               LDRB     R7,[R6, R7]
   \   00000094   BB43               BICS     R3,R3,R7
   \   00000096   0372               STRB     R3,[R0, #+8]
    394                      if (pevent->OSEventTbl[y] == 0) {                   /* ... remove task from ...            */
   \   00000098   5018               ADDS     R0,R2,R1
   \   0000009A   007A               LDRB     R0,[R0, #+8]
   \   0000009C   0028               CMP      R0,#+0
   \   0000009E   04D1               BNE      ??OSTaskDel_8
    395                          pevent->OSEventGrp &= ~ptcb->OSTCBBitY;         /* ... event ctrl block                */
   \   000000A0   5078               LDRB     R0,[R2, #+1]
   \   000000A2   3121               MOVS     R1,#+49
   \   000000A4   715C               LDRB     R1,[R6, R1]
   \   000000A6   8843               BICS     R0,R0,R1
   \   000000A8   5070               STRB     R0,[R2, #+1]
    396                      }
    397                  }
    398          #endif
    399          #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
    400                  pnode = ptcb->OSTCBFlagNode;
   \                     ??OSTaskDel_8:
   \   000000AA   706A               LDR      R0,[R6, #+36]
    401                  if (pnode != (OS_FLAG_NODE *)0) {                       /* If task is waiting on event flag    */
   \   000000AC   0028               CMP      R0,#+0
   \   000000AE   01D0               BEQ      ??OSTaskDel_9
    402                      OS_FlagUnlink(pnode);                               /* Remove from wait list               */
   \   000000B0   ........           _BLF     OS_FlagUnlink,??OS_FlagUnlink??rT
    403                  }
    404          #endif
    405                  ptcb->OSTCBDly  = 0;                                    /* Prevent OSTimeTick() from updating  */
   \                     ??OSTaskDel_9:
   \   000000B4   0020               MOVS     R0,#+0
   \   000000B6   7085               STRH     R0,[R6, #+42]
    406                  ptcb->OSTCBStat = OS_STAT_RDY;                          /* Prevent task from being resumed     */
   \   000000B8   2C20               MOVS     R0,#+44
   \   000000BA   0021               MOVS     R1,#+0
   \   000000BC   3154               STRB     R1,[R6, R0]
    407          		if (OSLockNesting < 255u) {
   \   000000BE   2948               LDR      R0,??OSTaskDel_0+0x4  ;; OSLockNesting
   \   000000C0   0078               LDRB     R0,[R0, #+0]
   \   000000C2   FF28               CMP      R0,#+255
   \   000000C4   04D0               BEQ      ??OSTaskDel_10
    408                      OSLockNesting++;
   \   000000C6   2748               LDR      R0,??OSTaskDel_0+0x4  ;; OSLockNesting
   \   000000C8   2649               LDR      R1,??OSTaskDel_0+0x4  ;; OSLockNesting
   \   000000CA   0978               LDRB     R1,[R1, #+0]
   \   000000CC   491C               ADDS     R1,R1,#+1
   \   000000CE   0170               STRB     R1,[R0, #+0]
    409          		}
    410                  OS_EXIT_CRITICAL();                                     /* Enabling INT. ignores next instruc. */
   \                     ??OSTaskDel_10:
   \   000000D0   2000               MOVS     R0,R4
   \   000000D2   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    411                  OS_Dummy();                                             /* ... Dummy ensures that INTs will be */
   \   000000D6   ........           _BLF     OS_Dummy,??OS_Dummy??rT
    412                  OS_ENTER_CRITICAL();                                    /* ... disabled HERE!                  */
   \   000000DA   ........           _BLF     OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
   \   000000DE   0400               MOVS     R4,R0
    413          		if (OSLockNesting > 0) {
   \   000000E0   2048               LDR      R0,??OSTaskDel_0+0x4  ;; OSLockNesting
   \   000000E2   0078               LDRB     R0,[R0, #+0]
   \   000000E4   0128               CMP      R0,#+1
   \   000000E6   04D3               BCC      ??OSTaskDel_11
    414                      OSLockNesting--;
   \   000000E8   1E48               LDR      R0,??OSTaskDel_0+0x4  ;; OSLockNesting
   \   000000EA   1E49               LDR      R1,??OSTaskDel_0+0x4  ;; OSLockNesting
   \   000000EC   0978               LDRB     R1,[R1, #+0]
   \   000000EE   491E               SUBS     R1,R1,#+1
   \   000000F0   0170               STRB     R1,[R0, #+0]
    415          		}
    416                  OSTaskDelHook(ptcb);                                    /* Call user defined hook              */
   \                     ??OSTaskDel_11:
   \   000000F2   3000               MOVS     R0,R6
   \   000000F4   ........           _BLF     OSTaskDelHook,??OSTaskDelHook??rT
    417                  OSTaskCtr--;                                            /* One less task being managed         */
   \   000000F8   ....               LDR      R0,??DataTable35  ;; OSTaskCtr
   \   000000FA   ....               LDR      R1,??DataTable35  ;; OSTaskCtr
   \   000000FC   0978               LDRB     R1,[R1, #+0]
   \   000000FE   491E               SUBS     R1,R1,#+1
   \   00000100   0170               STRB     R1,[R0, #+0]
    418                  OSTCBPrioTbl[prio] = (OS_TCB *)0;                       /* Clear old priority entry            */
   \   00000102   0420               MOVS     R0,#+4
   \   00000104   4543               MULS     R5,R0,R5
   \   00000106   ....               LDR      R0,??DataTable42  ;; OSTCBPrioTbl
   \   00000108   0021               MOVS     R1,#+0
   \   0000010A   4151               STR      R1,[R0, R5]
    419                  if (ptcb->OSTCBPrev == (OS_TCB *)0) {                   /* Remove from TCB chain               */
   \   0000010C   B069               LDR      R0,[R6, #+24]
   \   0000010E   0028               CMP      R0,#+0
   \   00000110   06D1               BNE      ??OSTaskDel_12
    420                      ptcb->OSTCBNext->OSTCBPrev = (OS_TCB *)0;
   \   00000112   7069               LDR      R0,[R6, #+20]
   \   00000114   0021               MOVS     R1,#+0
   \   00000116   8161               STR      R1,[R0, #+24]
    421                      OSTCBList                  = ptcb->OSTCBNext;
   \   00000118   1348               LDR      R0,??OSTaskDel_0+0x8  ;; OSTCBList
   \   0000011A   7169               LDR      R1,[R6, #+20]
   \   0000011C   0160               STR      R1,[R0, #+0]
   \   0000011E   05E0               B        ??OSTaskDel_13
    422                  } else {
    423                      ptcb->OSTCBPrev->OSTCBNext = ptcb->OSTCBNext;
   \                     ??OSTaskDel_12:
   \   00000120   B069               LDR      R0,[R6, #+24]
   \   00000122   7169               LDR      R1,[R6, #+20]
   \   00000124   4161               STR      R1,[R0, #+20]
    424                      ptcb->OSTCBNext->OSTCBPrev = ptcb->OSTCBPrev;
   \   00000126   7069               LDR      R0,[R6, #+20]
   \   00000128   B169               LDR      R1,[R6, #+24]
   \   0000012A   8161               STR      R1,[R0, #+24]
    425                  }
    426                  ptcb->OSTCBNext   = OSTCBFreeList;                      /* Return TCB to free TCB list         */
   \                     ??OSTaskDel_13:
   \   0000012C   0F48               LDR      R0,??OSTaskDel_0+0xC  ;; OSTCBFreeList
   \   0000012E   0068               LDR      R0,[R0, #+0]
   \   00000130   7061               STR      R0,[R6, #+20]
    427                  OSTCBFreeList     = ptcb;
   \   00000132   0E48               LDR      R0,??OSTaskDel_0+0xC  ;; OSTCBFreeList
   \   00000134   0660               STR      R6,[R0, #+0]
    428          #if OS_TASK_NAME_SIZE > 1
    429                  ptcb->OSTCBTaskName[0] = '?';                           /* Unknown name                        */
   \   00000136   4820               MOVS     R0,#+72
   \   00000138   3F21               MOVS     R1,#+63
   \   0000013A   3154               STRB     R1,[R6, R0]
    430                  ptcb->OSTCBTaskName[1] = OS_ASCII_NUL;
   \   0000013C   4936               ADDS     R6,R6,#+73
   \   0000013E   0020               MOVS     R0,#+0
   \   00000140   3070               STRB     R0,[R6, #+0]
    431          #endif
    432                  OS_EXIT_CRITICAL();
   \   00000142   2000               MOVS     R0,R4
   \   00000144   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    433                  OS_Sched();                                             /* Find new highest priority task      */
   \   00000148   ........           _BLF     OS_Sched,??OS_Sched??rT
    434                  return (OS_NO_ERR);
   \   0000014C   0020               MOVS     R0,#+0
   \   0000014E   03E0               B        ??OSTaskDel_2
    435              }
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -