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

📄 ioman.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 00000018  E007      B           L_30  ; T=0x0000002A
  137:     }
 0000001A          L_29:
  138:     ioman->usage[bufplace]=0x00;
 0000001A  2200      MOV         R2,#0x0
 0000001C  1C08      MOV         R0,R1 ; bufplace
 0000001E  0401      LSL         R1,R0,#0x10 ; bufplace
 00000020  0C09      LSR         R1,R1,#0x10
 00000022  1C18      MOV         R0,R3 ; ioman
 00000024  1840      ADD         R0,R1 ; ioman
 00000026  30BE      ADD         R0,#0xBE
 00000028  7002      STRB        R2,[R0,#0x0]
  139: }
 0000002A          L_30:
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'ioman_resetUseCnt?T'


*** CODE SEGMENT '?PR?ioman_getRefCnt?T?ioman':
  142: euint8 ioman_getRefCnt(IOManager *ioman,euint16 bufplace)
 00000000  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000000  1C02      MOV         R2,R0 ; ioman
 00000002  ---- Variable 'ioman' assigned to Register 'R2' ----
  144:     if(bufplace>=ioman->numbuf){
 00000002  1C10      MOV         R0,R2 ; ioman
 00000004  8900      LDRH        R0,[R0,#0x8]
 00000006  1C03      MOV         R3,R0
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 18  

 00000008  1C08      MOV         R0,R1 ; bufplace
 0000000A  0400      LSL         R0,R0,#0x10 ; bufplace
 0000000C  0C00      LSR         R0,R0,#0x10
 0000000E  4298      CMP         R0,R3
 00000010  D304      BCC         L_31  ; T=0x0000001C
  145:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000012  2305      MOV         R3,#0x5
 00000014  1C10      MOV         R0,R2 ; ioman
 00000016  7303      STRB        R3,[R0,#0xC]
  146:         return(0x00);
 00000018  2000      MOV         R0,#0x0
 0000001A  E006      B           L_32  ; T=0x0000002A
  147:     }
 0000001C          L_31:
  148:     return(ioman->reference[bufplace]);
 0000001C  1C08      MOV         R0,R1 ; bufplace
 0000001E  0401      LSL         R1,R0,#0x10 ; bufplace
 00000020  0C09      LSR         R1,R1,#0x10
 00000022  1C10      MOV         R0,R2 ; ioman
 00000024  1840      ADD         R0,R1 ; ioman
 00000026  30C4      ADD         R0,#0xC4
 00000028  7800      LDRB        R0,[R0,#0x0]
  149: }
 0000002A          L_32:
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'ioman_getRefCnt?T'


*** CODE SEGMENT '?PR?ioman_incRefCnt?T?ioman':
  152: void ioman_incRefCnt(IOManager *ioman,euint16 bufplace)
 00000000  B410      PUSH        {R4}
 00000002  1C0C      MOV         R4,R1 ; bufplace
 00000004  ---- Variable 'bufplace' assigned to Register 'R4' ----
 00000004  1C03      MOV         R3,R0 ; ioman
 00000006  ---- Variable 'ioman' assigned to Register 'R3' ----
  154:     if(bufplace>=ioman->numbuf){
 00000006  1C18      MOV         R0,R3 ; ioman
 00000008  8900      LDRH        R0,[R0,#0x8]
 0000000A  1C02      MOV         R2,R0
 0000000C  1C20      MOV         R0,R4 ; bufplace
 0000000E  0400      LSL         R0,R0,#0x10 ; bufplace
 00000010  0C00      LSR         R0,R0,#0x10
 00000012  4290      CMP         R0,R2
 00000014  D303      BCC         L_33  ; T=0x0000001E
  155:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000016  2105      MOV         R1,#0x5
 00000018  1C18      MOV         R0,R3 ; ioman
 0000001A  7301      STRB        R1,[R0,#0xC]
  156:         return;
 0000001C  E00B      B           L_34  ; T=0x00000036
  157:     }
 0000001E          L_33:
  158:     if(ioman->reference[bufplace]==0xFF)return;
 0000001E  1C20      MOV         R0,R4 ; bufplace
 00000020  0401      LSL         R1,R0,#0x10 ; bufplace
 00000022  0C09      LSR         R1,R1,#0x10
 00000024  1C18      MOV         R0,R3 ; ioman
 00000026  1840      ADD         R0,R1 ; ioman
 00000028  30C4      ADD         R0,#0xC4
 0000002A  7801      LDRB        R1,[R0,#0x0]
 0000002C  1C0A      MOV         R2,R1
 0000002E  2AFF      CMP         R2,#0xFF
 00000030  D001      BEQ         L_34  ; T=0x00000036
 00000032          L_35:
  159:     else ioman->reference[bufplace]++;
 00000032  3101      ADD         R1,#0x1
 00000034  7001      STRB        R1,[R0,#0x0]
  160: }
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 19  

 00000036          L_34:
 00000036  BC10      POP         {R4}
 00000038  4770      BX          R14
 0000003A          ENDP ; 'ioman_incRefCnt?T'


*** CODE SEGMENT '?PR?ioman_decRefCnt?T?ioman':
  163: void ioman_decRefCnt(IOManager *ioman,euint16 bufplace)
 00000000  B410      PUSH        {R4}
 00000002  1C0C      MOV         R4,R1 ; bufplace
 00000004  ---- Variable 'bufplace' assigned to Register 'R4' ----
 00000004  1C03      MOV         R3,R0 ; ioman
 00000006  ---- Variable 'ioman' assigned to Register 'R3' ----
  165:     if(bufplace>=ioman->numbuf){
 00000006  1C18      MOV         R0,R3 ; ioman
 00000008  8900      LDRH        R0,[R0,#0x8]
 0000000A  1C02      MOV         R2,R0
 0000000C  1C20      MOV         R0,R4 ; bufplace
 0000000E  0400      LSL         R0,R0,#0x10 ; bufplace
 00000010  0C00      LSR         R0,R0,#0x10
 00000012  4290      CMP         R0,R2
 00000014  D303      BCC         L_37  ; T=0x0000001E
  166:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000016  2105      MOV         R1,#0x5
 00000018  1C18      MOV         R0,R3 ; ioman
 0000001A  7301      STRB        R1,[R0,#0xC]
  167:         return;
 0000001C  E00B      B           L_38  ; T=0x00000036
  168:     }
 0000001E          L_37:
  169:     if(ioman->reference[bufplace]==0x00)return;
 0000001E  1C20      MOV         R0,R4 ; bufplace
 00000020  0401      LSL         R1,R0,#0x10 ; bufplace
 00000022  0C09      LSR         R1,R1,#0x10
 00000024  1C18      MOV         R0,R3 ; ioman
 00000026  1840      ADD         R0,R1 ; ioman
 00000028  30C4      ADD         R0,#0xC4
 0000002A  7801      LDRB        R1,[R0,#0x0]
 0000002C  1C0A      MOV         R2,R1
 0000002E  2A00      CMP         R2,#0x0
 00000030  D001      BEQ         L_38  ; T=0x00000036
 00000032          L_39:
  170:     else ioman->reference[bufplace]--;
 00000032  3901      SUB         R1,#0x1
 00000034  7001      STRB        R1,[R0,#0x0]
  171: }
 00000036          L_38:
 00000036  BC10      POP         {R4}
 00000038  4770      BX          R14
 0000003A          ENDP ; 'ioman_decRefCnt?T'


*** CODE SEGMENT '?PR?ioman_resetRefCnt?T?ioman':
  174: void ioman_resetRefCnt(IOManager *ioman,euint16 bufplace)
 00000000  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000000  1C03      MOV         R3,R0 ; ioman
 00000002  ---- Variable 'ioman' assigned to Register 'R3' ----
  176:     if(bufplace>=ioman->numbuf){
 00000002  1C18      MOV         R0,R3 ; ioman
 00000004  8900      LDRH        R0,[R0,#0x8]
 00000006  1C02      MOV         R2,R0
 00000008  1C08      MOV         R0,R1 ; bufplace
 0000000A  0400      LSL         R0,R0,#0x10 ; bufplace
 0000000C  0C00      LSR         R0,R0,#0x10
 0000000E  4290      CMP         R0,R2
 00000010  D303      BCC         L_41  ; T=0x0000001A
  177:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000012  2205      MOV         R2,#0x5
 00000014  1C18      MOV         R0,R3 ; ioman
 00000016  7302      STRB        R2,[R0,#0xC]
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 20  

  178:         return;
 00000018  E007      B           L_42  ; T=0x0000002A
  179:     }
 0000001A          L_41:
  180:     ioman->reference[bufplace]=0x00;
 0000001A  2200      MOV         R2,#0x0
 0000001C  1C08      MOV         R0,R1 ; bufplace
 0000001E  0401      LSL         R1,R0,#0x10 ; bufplace
 00000020  0C09      LSR         R1,R1,#0x10
 00000022  1C18      MOV         R0,R3 ; ioman
 00000024  1840      ADD         R0,R1 ; ioman
 00000026  30C4      ADD         R0,#0xC4
 00000028  7002      STRB        R2,[R0,#0x0]
  181: }
 0000002A          L_42:
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'ioman_resetRefCnt?T'


*** CODE SEGMENT '?PR?ioman_pop?T?ioman':
  184: esint8 ioman_pop(IOManager *ioman,euint16 bufplace)
 00000000  B430      PUSH        {R4-R5}
 00000002  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000002  1C02      MOV         R2,R0 ; ioman
 00000004  ---- Variable 'ioman' assigned to Register 'R2' ----
  186:     if(bufplace>=ioman->numbuf){
 00000004  1C10      MOV         R0,R2 ; ioman
 00000006  8900      LDRH        R0,[R0,#0x8]
 00000008  1C03      MOV         R3,R0
 0000000A  1C08      MOV         R0,R1 ; bufplace
 0000000C  0400      LSL         R0,R0,#0x10 ; bufplace
 0000000E  0C00      LSR         R0,R0,#0x10
 00000010  4298      CMP         R0,R3
 00000012  D304      BCC         L_43  ; T=0x0000001E
  187:         ioman_setError(ioman,IOMAN_ERR_POPEMPTYSTACK);
 00000014  2307      MOV         R3,#0x7
 00000016  1C10      MOV         R0,R2 ; ioman
 00000018  7303      STRB        R3,[R0,#0xC]
  188:         return(-1);
 0000001A  4800      LDR         R0,=0xFFFFFFFF
 0000001C  E053      B           L_44  ; T=0x000000C6
  189:     }
 0000001E          L_43:
  190:     if(ioman->itptr[bufplace]==0 || ioman->itptr[bufplace]>IOMAN_NUMITERATIONS)return(-1);
 0000001E  1C08      MOV         R0,R1 ; bufplace
 00000020  0403      LSL         R3,R0,#0x10 ; bufplace
 00000022  0C1B      LSR         R3,R3,#0x10
 00000024  1C10      MOV         R0,R2 ; ioman
 00000026  18C0      ADD         R0,R3 ; ioman
 00000028  30CA      ADD         R0,#0xCA
 0000002A  7800      LDRB        R0,[R0,#0x0]
 0000002C  1C03      MOV         R3,R0
 0000002E  2B00      CMP         R3,#0x0
 00000030  D001      BEQ         L_46  ; T=0x00000036
 00000032  2B03      CMP         R3,#0x3
 00000034  DD01      BLE         L_45  ; T=0x0000003A
 00000036          L_46:
 00000036  4800      LDR         R0,=0xFFFFFFFF
 00000038  E045      B           L_44  ; T=0x000000C6
 0000003A          L_45:
  191:     ioman->sector[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].sector;
 0000003A  00DB      LSL         R3,R3,#0x3
 0000003C  1C08      MOV         R0,R1 ; bufplace
 0000003E  0400      LSL         R0,R0,#0x10 ; bufplace
 00000040  0C00      LSR         R0,R0,#0x10
 00000042  2418      MOV         R4,#0x18
 00000044  4360      MUL         R0,R4
 00000046  181B      ADD         R3,R0
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 21  

 00000048  1C10      MOV         R0,R2 ; ioman
 0000004A  18C0      ADD         R0,R3 ; ioman
 0000004C  6903      LDR         R3,[R0,#0x10]
 0000004E  1C08      MOV         R0,R1 ; bufplace
 00000050  0404      LSL         R4,R0,#0x10 ; bufplace
 00000052  0C24      LSR         R4,R4,#0x10
 00000054  00A4      LSL         R4,R4,#0x2
 00000056  1C10      MOV         R0,R2 ; ioman
 00000058  1900      ADD         R0,R4 ; ioman
 0000005A  30A0      ADD         R0,#0xA0
 0000005C  6003      STR         R3,[R0,#0x0]
  192:     ioman->status[bufplace] = ioman->stack[bufplace][ioman->itptr[bufplace]].status;
 0000005E  1C08      MOV         R0,R1 ; bufplace
 00000060  0403      LSL         R3,R0,#0x10 ; bufplace
 00000062  0C1B      LSR         R3,R3,#0x10
 00000064  1C10      MOV         R0,R2 ; ioman
 00000066  18C0      ADD         R0,R3 ; ioman
 00000068  1C03      MOV         R3,R0
 0000006A  33CA      ADD         R3,#0xCA
 0000006C  781B      LDRB        R3,[R3,#0x0]
 0000006E  1C1C      MOV         R4,R3
 00000070  00E4      LSL         R4,R4,#0x3
 00000072  1C0B      MOV         R3,R1 ; bufplace
 00000074  041B      LSL         R3,R3,#0x10 ; bufplace
 00000076  0C1B      LSR         R3,R3,#0x10
 00000078  2518      MOV         R5,#0x18
 0000007A  436B      MUL         R3,R5
 0000007C  18E4      ADD         R4,R3
 0000007E  1C13      MOV         R3,R2 ; ioman
 00000080  191B      ADD         R3,R4 ; ioman
 00000082  7D1B      LDRB        R3,[R3,#0x14]
 00000084  30B8      ADD         R0,#0xB8
 00000086  7003      STRB        R3,[R0,#0x0]
  193:     ioman->usage[bufplace]  = ioman->stack[bufplace][ioman->itptr[bufplace]].usage; 
 00000088  1C08      MOV         R0,R1 ; bufplace
 0000008A  0403      LSL         R3,R0,#0x10 ; bufplace
 0000008C  0C1B      LSR         R3,R3,#0x10
 0000008E  1C10      MOV         R0,R2 ; ioman
 00000090  18C0      ADD         R0,R3 ; ioman
 00000092  1C03      MOV         R3,R0
 00000094  33CA      ADD         R3,#0xCA
 00000096  781B      LDRB        R3,[R3,#0x0]
 00000098  1C1C      MOV         R4,R3
 0000009A  00E4      LSL         R4,R4,#0x3
 0000009C  1C0B      MOV         R3,R1 ; bufpl

⌨️ 快捷键说明

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