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

📄 ioman.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
*** CODE SEGMENT '?PR?ioman_getBuffer?T?ioman':
   63: euint8* ioman_getBuffer(IOManager *ioman,euint8* bufferarea)
 00000000  1C01      MOV         R1,R0 ; ioman
 00000002  ---- Variable 'ioman' assigned to Register 'R1' ----
   66:     return(ioman->cache_mem);
 00000002  1C08      MOV         R0,R1 ; ioman
 00000004  30D0      ADD         R0,#0xD0
   70: }
 00000006  4770      BX          R14
 00000008          ENDP ; 'ioman_getBuffer?T'


*** CODE SEGMENT '?PR?ioman_setAttr?T?ioman':
   73: void ioman_setAttr(IOManager *ioman,euint16 bufplace,euint8 attribute,euint8 val)
 00000000  B430      PUSH        {R4-R5}
 00000002  ---- Variable 'val' assigned to Register 'R3' ----
 00000002  ---- Variable 'attribute' assigned to Register 'R2' ----
 00000002  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000002  1C04      MOV         R4,R0 ; ioman
 00000004  ---- Variable 'ioman' assigned to Register 'R4' ----
   75:     if(bufplace>=ioman->numbuf){
 00000004  1C20      MOV         R0,R4 ; ioman
 00000006  8900      LDRH        R0,[R0,#0x8]
 00000008  1C05      MOV         R5,R0
 0000000A  1C08      MOV         R0,R1 ; bufplace
 0000000C  0400      LSL         R0,R0,#0x10 ; bufplace
 0000000E  0C00      LSR         R0,R0,#0x10
 00000010  42A8      CMP         R0,R5
 00000012  D303      BCC         L_13  ; T=0x0000001C
   76:         ioman_setError(ioman,IOMAN_ERR_SETATTROUTOFBOUNDS);
 00000014  2501      MOV         R5,#0x1
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 14  

 00000016  1C20      MOV         R0,R4 ; ioman
 00000018  7305      STRB        R5,[R0,#0xC]
   77:         return; /* Out of bounds */
 0000001A  E024      B           L_14  ; T=0x00000066
   78:     }
 0000001C          L_13:
   80:     if(val){
 0000001C  1C18      MOV         R0,R3 ; val
 0000001E  2800      CMP         R0,#0x0 ; val
 00000020  D010      BEQ         L_15  ; T=0x00000044
   81:         ioman->status[bufplace]|=1<<attribute;
 00000022  1C10      MOV         R0,R2 ; attribute
 00000024  0600      LSL         R0,R0,#0x18 ; attribute
 00000026  0E00      LSR         R0,R0,#0x18
 00000028  2501      MOV         R5,#0x1
 0000002A  4085      LSL         R5,R0
 0000002C  062D      LSL         R5,R5,#0x18
 0000002E  0E2D      LSR         R5,R5,#0x18
 00000030  1C08      MOV         R0,R1 ; bufplace
 00000032  0403      LSL         R3,R0,#0x10 ; bufplace
 00000034  0C1B      LSR         R3,R3,#0x10
 00000036  1C20      MOV         R0,R4 ; ioman
 00000038  18C0      ADD         R0,R3 ; ioman
 0000003A  30B8      ADD         R0,#0xB8
 0000003C  7803      LDRB        R3,[R0,#0x0]
 0000003E  432B      ORR         R3,R5
 00000040  7003      STRB        R3,[R0,#0x0]
   82:     }else{
 00000042  E010      B           L_14  ; T=0x00000066
 00000044          L_15:
   83:         ioman->status[bufplace]&=~(1<<attribute);
 00000044  1C10      MOV         R0,R2 ; attribute
 00000046  0600      LSL         R0,R0,#0x18 ; attribute
 00000048  0E00      LSR         R0,R0,#0x18
 0000004A  2201      MOV         R2,#0x1
 0000004C  4082      LSL         R2,R0
 0000004E  43D2      MVN         R2,R2
 00000050  0612      LSL         R2,R2,#0x18
 00000052  0E12      LSR         R2,R2,#0x18
 00000054  1C08      MOV         R0,R1 ; bufplace
 00000056  0401      LSL         R1,R0,#0x10 ; bufplace
 00000058  0C09      LSR         R1,R1,#0x10
 0000005A  1C20      MOV         R0,R4 ; ioman
 0000005C  1840      ADD         R0,R1 ; ioman
 0000005E  30B8      ADD         R0,#0xB8
 00000060  7801      LDRB        R1,[R0,#0x0]
 00000062  4011      AND         R1,R2
 00000064  7001      STRB        R1,[R0,#0x0]
   85: }
 00000066          L_14:
 00000066  BC30      POP         {R4-R5}
 00000068  4770      BX          R14
 0000006A          ENDP ; 'ioman_setAttr?T'


*** CODE SEGMENT '?PR?ioman_getAttr?T?ioman':
   88: euint8 ioman_getAttr(IOManager *ioman,euint16 bufplace,euint8 attribute)
 00000000  B410      PUSH        {R4}
 00000002  ---- Variable 'attribute' assigned to Register 'R2' ----
 00000002  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000002  1C03      MOV         R3,R0 ; ioman
 00000004  ---- Variable 'ioman' assigned to Register 'R3' ----
   90:     if(bufplace>=ioman->numbuf){
 00000004  1C18      MOV         R0,R3 ; ioman
 00000006  8900      LDRH        R0,[R0,#0x8]
 00000008  1C04      MOV         R4,R0
 0000000A  1C08      MOV         R0,R1 ; bufplace
 0000000C  0400      LSL         R0,R0,#0x10 ; bufplace
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 15  

 0000000E  0C00      LSR         R0,R0,#0x10
 00000010  42A0      CMP         R0,R4
 00000012  D304      BCC         L_17  ; T=0x0000001E
   91:         ioman_setError(ioman,IOMAN_ERR_GETATTROUTOFBOUNDS);
 00000014  2402      MOV         R4,#0x2
 00000016  1C18      MOV         R0,R3 ; ioman
 00000018  7304      STRB        R4,[R0,#0xC]
   92:         return(0xFF); /* Out of bounds */
 0000001A  20FF      MOV         R0,#0xFF
 0000001C  E00C      B           L_18  ; T=0x00000038
   93:     }
 0000001E          L_17:
   95:     return(ioman->status[bufplace]&(1<<attribute));
 0000001E  1C08      MOV         R0,R1 ; 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  30B8      ADD         R0,#0xB8
 0000002A  7800      LDRB        R0,[R0,#0x0]
 0000002C  1C11      MOV         R1,R2 ; attribute
 0000002E  060A      LSL         R2,R1,#0x18 ; attribute
 00000030  0E12      LSR         R2,R2,#0x18
 00000032  2101      MOV         R1,#0x1
 00000034  4091      LSL         R1,R2
 00000036  4008      AND         R0,R1
   96: }
 00000038          L_18:
 00000038  BC10      POP         {R4}
 0000003A  4770      BX          R14
 0000003C          ENDP ; 'ioman_getAttr?T'


*** CODE SEGMENT '?PR?ioman_getUseCnt?T?ioman':
   99: euint8 ioman_getUseCnt(IOManager *ioman,euint16 bufplace)
 00000000  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000000  1C02      MOV         R2,R0 ; ioman
 00000002  ---- Variable 'ioman' assigned to Register 'R2' ----
  101:     if(bufplace>=ioman->numbuf){
 00000002  1C10      MOV         R0,R2 ; ioman
 00000004  8900      LDRH        R0,[R0,#0x8]
 00000006  1C03      MOV         R3,R0
 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_19  ; T=0x0000001C
  102:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000012  2305      MOV         R3,#0x5
 00000014  1C10      MOV         R0,R2 ; ioman
 00000016  7303      STRB        R3,[R0,#0xC]
  103:         return(0x00);
 00000018  2000      MOV         R0,#0x0
 0000001A  E006      B           L_20  ; T=0x0000002A
  104:     }
 0000001C          L_19:
  105:     return(ioman->usage[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  30BE      ADD         R0,#0xBE
 00000028  7800      LDRB        R0,[R0,#0x0]
  106: }
 0000002A          L_20:
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'ioman_getUseCnt?T'

ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 16  


*** CODE SEGMENT '?PR?ioman_incUseCnt?T?ioman':
  110: void ioman_incUseCnt(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' ----
  112:     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_21  ; T=0x0000001E
  113:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000016  2105      MOV         R1,#0x5
 00000018  1C18      MOV         R0,R3 ; ioman
 0000001A  7301      STRB        R1,[R0,#0xC]
  114:         return;
 0000001C  E00B      B           L_22  ; T=0x00000036
  115:     }
 0000001E          L_21:
  116:     if(ioman->usage[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  30BE      ADD         R0,#0xBE
 0000002A  7801      LDRB        R1,[R0,#0x0]
 0000002C  1C0A      MOV         R2,R1
 0000002E  2AFF      CMP         R2,#0xFF
 00000030  D001      BEQ         L_22  ; T=0x00000036
 00000032          L_23:
  117:     else ioman->usage[bufplace]++;
 00000032  3101      ADD         R1,#0x1
 00000034  7001      STRB        R1,[R0,#0x0]
  118: }
 00000036          L_22:
 00000036  BC10      POP         {R4}
 00000038  4770      BX          R14
 0000003A          ENDP ; 'ioman_incUseCnt?T'


*** CODE SEGMENT '?PR?ioman_decUseCnt?T?ioman':
  121: void ioman_decUseCnt(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' ----
  123:     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_25  ; T=0x0000001E
  124:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000016  2105      MOV         R1,#0x5
 00000018  1C18      MOV         R0,R3 ; ioman
 0000001A  7301      STRB        R1,[R0,#0xC]
  125:         return;
 0000001C  E00B      B           L_26  ; T=0x00000036
ARM COMPILER V2.42,  ioman                                                                 27/03/06  10:45:50  PAGE 17  

  126:     }
 0000001E          L_25:
  127:     if(ioman->usage[bufplace]==0x0)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  30BE      ADD         R0,#0xBE
 0000002A  7801      LDRB        R1,[R0,#0x0]
 0000002C  1C0A      MOV         R2,R1
 0000002E  2A00      CMP         R2,#0x0
 00000030  D001      BEQ         L_26  ; T=0x00000036
 00000032          L_27:
  128:     else ioman->usage[bufplace]--;
 00000032  3901      SUB         R1,#0x1
 00000034  7001      STRB        R1,[R0,#0x0]
  129: }
 00000036          L_26:
 00000036  BC10      POP         {R4}
 00000038  4770      BX          R14
 0000003A          ENDP ; 'ioman_decUseCnt?T'


*** CODE SEGMENT '?PR?ioman_resetUseCnt?T?ioman':
  132: void ioman_resetUseCnt(IOManager *ioman,euint16 bufplace)
 00000000  ---- Variable 'bufplace' assigned to Register 'R1' ----
 00000000  1C03      MOV         R3,R0 ; ioman
 00000002  ---- Variable 'ioman' assigned to Register 'R3' ----
  134:     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_29  ; T=0x0000001A
  135:         ioman_setError(ioman,IOMAN_ERR_OPOUTOFBOUNDS);
 00000012  2205      MOV         R2,#0x5
 00000014  1C18      MOV         R0,R3 ; ioman
 00000016  7302      STRB        R2,[R0,#0xC]
  136:         return;

⌨️ 快捷键说明

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