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

📄 os_task.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000050   D208               LSRS     R2,R2,#+3
   \   00000052   9146               MOV      R9,R2
    109              x_new                 = (INT8U)(newprio & 0x07);
   \   00000054   4246               MOV      R2,R8
   \   00000056   5207               LSLS     R2,R2,#+29
   \   00000058   520F               LSRS     R2,R2,#+29
   \   0000005A   0492               STR      R2,[SP, #+16]
    110              bity_new              = (INT8U)(1 << y_new);
   \   0000005C   0122               MOVS     R2,#+1
   \   0000005E   4B46               MOV      R3,R9
   \   00000060   9A40               LSLS     R2,R2,R3
   \   00000062   D2B2               UXTB     R2,R2
    111              bitx_new              = (INT8U)(1 << x_new);
   \   00000064   0123               MOVS     R3,#+1
   \   00000066   049E               LDR      R6,[SP, #+16]
   \   00000068   B340               LSLS     R3,R3,R6
   \   0000006A   DBB2               UXTB     R3,R3
    112          #else
    113              y_new                 = (INT8U)((newprio >> 4) & 0x0F);
    114              x_new                 = (INT8U)( newprio & 0x0F);
    115              bity_new              = (INT16U)(1 << y_new);
    116              bitx_new              = (INT16U)(1 << x_new);
    117          #endif
    118          
    119              OSTCBPrioTbl[oldprio] = (OS_TCB *)0;                    /* Remove TCB from old priority            */
   \   0000006C   0026               MOVS     R6,#+0
   \   0000006E   2E60               STR      R6,[R5, #+0]
    120              OSTCBPrioTbl[newprio] =  ptcb;                          /* Place pointer to TCB @ new priority     */
   \   00000070   2160               STR      R1,[R4, #+0]
    121              y_old                 =  ptcb->OSTCBY;
   \   00000072   0C00               MOVS     R4,R1
   \   00000074   3234               ADDS     R4,R4,#+50
   \   00000076   A578               LDRB     R5,[R4, #+2]
   \   00000078   0195               STR      R5,[SP, #+4]
    122              bity_old              =  ptcb->OSTCBBitY;
   \   0000007A   2579               LDRB     R5,[R4, #+4]
   \   0000007C   0395               STR      R5,[SP, #+12]
    123              bitx_old              =  ptcb->OSTCBBitX;
   \   0000007E   E578               LDRB     R5,[R4, #+3]
   \   00000080   0095               STR      R5,[SP, #+0]
   \   00000082   019D               LDR      R5,[SP, #+4]
   \   00000084   EDB2               UXTB     R5,R5
   \   00000086   ....               LDR.N    R6,??DataTable15  ;; OSRdyTbl
   \   00000088   7519               ADDS     R5,R6,R5
   \   0000008A   2E78               LDRB     R6,[R5, #+0]
   \   0000008C   B346               MOV      R11,R6
   \   0000008E   009F               LDR      R7,[SP, #+0]
   \   00000090   3E42               TST      R6,R7
   \   00000092   18D0               BEQ.N    ??OSTaskChangePrio_5
    124              if ((OSRdyTbl[y_old] &   bitx_old) != 0) {              /* If task is ready make it not            */
    125                   OSRdyTbl[y_old] &= ~bitx_old;
   \   00000094   3E46               MOV      R6,R7
   \   00000096   F743               MVNS     R7,R6
   \   00000098   BA46               MOV      R10,R7
   \   0000009A   1AEA0B06           ANDS     R6,R10,R11
   \   0000009E   2E70               STRB     R6,[R5, #+0]
    126                   if (OSRdyTbl[y_old] == 0) {
   \   000000A0   ....               LDR.N    R5,??DataTable16  ;; OSRdyGrp
   \   000000A2   03D1               BNE.N    ??OSTaskChangePrio_6
    127                       OSRdyGrp &= ~bity_old;
   \   000000A4   2E78               LDRB     R6,[R5, #+0]
   \   000000A6   039F               LDR      R7,[SP, #+12]
   \   000000A8   BE43               BICS     R6,R6,R7
   \   000000AA   2E70               STRB     R6,[R5, #+0]
    128                   }
    129                   OSRdyGrp        |= bity_new;                       /* Make new priority ready to run          */
   \                     ??OSTaskChangePrio_6:
   \   000000AC   2E78               LDRB     R6,[R5, #+0]
   \   000000AE   1700               MOVS     R7,R2
   \   000000B0   3743               ORRS     R7,R7,R6
   \   000000B2   2F70               STRB     R7,[R5, #+0]
    130                   OSRdyTbl[y_new] |= bitx_new;
   \   000000B4   4D46               MOV      R5,R9
   \   000000B6   AB46               MOV      R11,R5
   \   000000B8   ....               LDR.N    R5,??DataTable15  ;; OSRdyTbl
   \   000000BA   1BEB0505           ADDS     R5,R11,R5
   \   000000BE   2E78               LDRB     R6,[R5, #+0]
   \   000000C0   1F00               MOVS     R7,R3
   \   000000C2   3743               ORRS     R7,R7,R6
   \   000000C4   2F70               STRB     R7,[R5, #+0]
    131              }
    132          
    133          #if (OS_EVENT_EN)
    134              pevent = ptcb->OSTCBEventPtr;
   \                     ??OSTaskChangePrio_5:
   \   000000C6   CD69               LDR      R5,[R1, #+28]
    135              if (pevent != (OS_EVENT *)0) {
   \   000000C8   4E46               MOV      R6,R9
   \   000000CA   B346               MOV      R11,R6
   \   000000CC   039F               LDR      R7,[SP, #+12]
   \   000000CE   FE43               MVNS     R6,R7
   \   000000D0   8DF80860           STRB     R6,[SP, #+8]
   \   000000D4   009E               LDR      R6,[SP, #+0]
   \   000000D6   F743               MVNS     R7,R6
   \   000000D8   BA46               MOV      R10,R7
   \   000000DA   002D               CMP      R5,#+0
   \   000000DC   18D0               BEQ.N    ??OSTaskChangePrio_7
    136                  pevent->OSEventTbl[y_old] &= ~bitx_old;             /* Remove old task prio from wait list     */
   \   000000DE   019E               LDR      R6,[SP, #+4]
   \   000000E0   F6B2               UXTB     R6,R6
   \   000000E2   AE19               ADDS     R6,R5,R6
   \   000000E4   F77A               LDRB     R7,[R6, #+11]
   \   000000E6   1AEA0707           ANDS     R7,R10,R7
   \   000000EA   F772               STRB     R7,[R6, #+11]
    137                  if (pevent->OSEventTbl[y_old] == 0) {
   \   000000EC   F67A               LDRB     R6,[R6, #+11]
   \   000000EE   002E               CMP      R6,#+0
   \   000000F0   04D1               BNE.N    ??OSTaskChangePrio_8
    138                      pevent->OSEventGrp    &= ~bity_old;
   \   000000F2   AE7A               LDRB     R6,[R5, #+10]
   \   000000F4   9DF80870           LDRB     R7,[SP, #+8]
   \   000000F8   3740               ANDS     R7,R7,R6
   \   000000FA   AF72               STRB     R7,[R5, #+10]
    139                  }
    140                  pevent->OSEventGrp        |= bity_new;              /* Add    new task prio to   wait list     */
   \                     ??OSTaskChangePrio_8:
   \   000000FC   AE7A               LDRB     R6,[R5, #+10]
   \   000000FE   1700               MOVS     R7,R2
   \   00000100   3743               ORRS     R7,R7,R6
   \   00000102   AF72               STRB     R7,[R5, #+10]
    141                  pevent->OSEventTbl[y_new] |= bitx_new;
   \   00000104   1BEB0505           ADDS     R5,R11,R5
   \   00000108   EE7A               LDRB     R6,[R5, #+11]
   \   0000010A   1F00               MOVS     R7,R3
   \   0000010C   3743               ORRS     R7,R7,R6
   \   0000010E   EF72               STRB     R7,[R5, #+11]
    142              }
    143          #if (OS_EVENT_MULTI_EN > 0)
    144              if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
   \                     ??OSTaskChangePrio_7:
   \   00000110   0D6A               LDR      R5,[R1, #+32]
   \   00000112   002D               CMP      R5,#+0
   \   00000114   1FD0               BEQ.N    ??OSTaskChangePrio_9
    145                  pevents =  ptcb->OSTCBEventMultiPtr;
   \   00000116   2946               MOV      R1,R5
    146                  pevent  = *pevents;
   \   00000118   0D68               LDR      R5,[R1, #+0]
   \   0000011A   1AE0               B.N      ??OSTaskChangePrio_10
    147                  while (pevent != (OS_EVENT *)0) {
    148                      pevent->OSEventTbl[y_old] &= ~bitx_old;         /* Remove old task prio from wait lists    */
   \                     ??OSTaskChangePrio_11:
   \   0000011C   019E               LDR      R6,[SP, #+4]
   \   0000011E   F6B2               UXTB     R6,R6
   \   00000120   AE19               ADDS     R6,R5,R6
   \   00000122   F77A               LDRB     R7,[R6, #+11]
   \   00000124   1AEA0707           ANDS     R7,R10,R7
   \   00000128   F772               STRB     R7,[R6, #+11]
    149                      if (pevent->OSEventTbl[y_old] == 0) {
   \   0000012A   F67A               LDRB     R6,[R6, #+11]
   \   0000012C   002E               CMP      R6,#+0
   \   0000012E   04D1               BNE.N    ??OSTaskChangePrio_12
    150                          pevent->OSEventGrp    &= ~bity_old;
   \   00000130   AE7A               LDRB     R6,[R5, #+10]
   \   00000132   9DF80870           LDRB     R7,[SP, #+8]
   \   00000136   3740               ANDS     R7,R7,R6
   \   00000138   AF72               STRB     R7,[R5, #+10]
    151                      }
    152                      pevent->OSEventGrp        |= bity_new;          /* Add    new task prio to   wait lists    */
   \                     ??OSTaskChangePrio_12:
   \   0000013A   AE7A               LDRB     R6,[R5, #+10]
   \   0000013C   1700               MOVS     R7,R2
   \   0000013E   3743               ORRS     R7,R7,R6
   \   00000140   AF72               STRB     R7,[R5, #+10]
    153                      pevent->OSEventTbl[y_new] |= bitx_new;
   \   00000142   1BEB0505           ADDS     R5,R11,R5
   \   00000146   EE7A               LDRB     R6,[R5, #+11]
   \   00000148   1F00               MOVS     R7,R3
   \   0000014A   3743               ORRS     R7,R7,R6
   \   0000014C   EF72               STRB     R7,[R5, #+11]
    154                      pevents++;
   \   0000014E   091D               ADDS     R1,R1,#+4
    155                      pevent                     = *pevents;
   \   00000150   0D68               LDR      R5,[R1, #+0]
    156                  }
   \                     ??OSTaskChangePrio_10:
   \   00000152   002D               CMP      R5,#+0
   \   00000154   E2D1               BNE.N    ??OSTaskChangePrio_11
    157              }
    158          #endif
    159          #endif
    160          
    161              ptcb->OSTCBPrio = newprio;                              /* Set new task priority                   */
   \                     ??OSTaskChangePrio_9:
   \   00000156   84F80080           STRB     R8,[R4, #+0]
    162              ptcb->OSTCBY    = y_new;
   \   0000015A   4946               MOV      R1,R9
   \   0000015C   A170               STRB     R1,[R4, #+2]
    163              ptcb->OSTCBX    = x_new;
   \   0000015E   0499               LDR      R1,[SP, #+16]
   \   00000160   6170               STRB     R1,[R4, #+1]
    164              ptcb->OSTCBBitY = bity_new;
   \   00000162   2271               STRB     R2,[R4, #+4]
    165              ptcb->OSTCBBitX = bitx_new;
   \   00000164   E370               STRB     R3,[R4, #+3]
    166              OS_EXIT_CRITICAL();
   \   00000166   ........           _BLF     OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
    167              if (OSRunning == OS_TRUE) {
   \   0000016A   ....               LDR.N    R0,??DataTable17  ;; OSRunning
   \   0000016C   0078               LDRB     R0,[R0, #+0]
   \   0000016E   0128               CMP      R0,#+1
   \   00000170   01D1               BNE.N    ??OSTaskChangePrio_13
    168                  OS_Sched();                                         /* Find new highest priority task          */
   \   00000172   ........           _BLF     OS_Sched,??OS_Sched??rT
    169              }
    170              return (OS_ERR_NONE);
   \                     ??OSTaskChangePrio_13:

⌨️ 快捷键说明

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