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

📄 dir.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 00000056  D004      BEQ         L_10  ; T=0x00000062
 00000058  200B      MOV         R0,#0xB
 0000005A  4468      ADD         R0,R13
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 13  

 0000005C  7800      LDRB        R0,[R0,#0x0] ; fileEntry+11
 0000005E  1C39      MOV         R1,R7 ; loc
 00000060  7148      STRB        R0,[R1,#0x5]
 00000062          L_10:
  159:                 if((((euint32 )fileEntry.FirstClusterHigh)<<16)+ fileEntry.FirstClusterLow==0){
 00000062  AA05      ADD         R2,R13,#0x14
 00000064  8810      LDRH        R0,[R2,#0x0] ; fileEntry+20
 00000066  0400      LSL         R0,R0,#0x10
 00000068  211A      MOV         R1,#0x1A
 0000006A  4469      ADD         R1,R13
 0000006C  880B      LDRH        R3,[R1,#0x0] ; fileEntry+26
 0000006E  18C0      ADD         R0,R3
 00000070  2800      CMP         R0,#0x0
 00000072  D101      BNE         L_11  ; T=0x00000078
  160:                     return(1); /* Lie about cluster, 0 means not found! */
 00000074  2001      MOV         R0,#0x1
 00000076  E00D      B           L_12  ; T=0x00000094
  161:                 }else{
 00000078          L_11:
  162:                     return
 00000078  8810      LDRH        R0,[R2,#0x0] ; fileEntry+20
 0000007A  0400      LSL         R0,R0,#0x10
 0000007C  8809      LDRH        R1,[R1,#0x0] ; fileEntry+26
 0000007E  1840      ADD         R0,R1
 00000080  E008      B           L_12  ; T=0x00000094
  170:     }
 00000082          L_2:
 00000082  3401      ADD         R4,#0x1
 00000084  0624      LSL         R4,R4,#0x18
 00000086  0E24      LSR         R4,R4,#0x18
 00000088          L_4:
 00000088  1C20      MOV         R0,R4 ; c
 0000008A  0600      LSL         R0,R0,#0x18 ; c
 0000008C  0E00      LSR         R0,R0,#0x18
 0000008E  2810      CMP         R0,#0x10
 00000090  DBBD      BLT         L_5  ; T=0x0000000E
  171:     return(0);
 00000092  2000      MOV         R0,#0x0
 00000094            ; SCOPE-END
  172: }
 00000094          L_12:
 00000094  B008      ADD         R13,#0x20
 00000096  BCF0      POP         {R4-R7}
 00000098  BC08      POP         {R3}
 0000009A  4718      BX          R3
 0000009C          ENDP ; 'dir_findFileinBuf?T'


*** CODE SEGMENT '?PR?dir_findFreeEntryinBuf?T?dir':
  180: euint32 dir_findFreeEntryinBuf(euint8* buf, FileLocation *loc)
 00000000  B470      PUSH        {R4-R6}
 00000002  1C0E      MOV         R6,R1 ; loc
 00000004  ---- Variable 'loc' assigned to Register 'R6' ----
 00000004  1C05      MOV         R5,R0 ; buf
 00000006  ---- Variable 'buf' assigned to Register 'R5' ----
 00000006  B088      SUB         R13,#0x20
  181: {
 00000008            ; SCOPE-START
  185:     for(c=0;c<16;c++){
 00000008  2400      MOV         R4,#0x0
 0000000A  ---- Variable 'c' assigned to Register 'R4' ----
 0000000A  E023      B           L_16  ; T=0x00000054
 0000000C          L_17:
  186:         fileEntry = *(((FileRecord*)buf) + c);
 0000000C  1C20      MOV         R0,R4 ; c
 0000000E  0602      LSL         R2,R0,#0x18 ; c
 00000010  0E12      LSR         R2,R2,#0x18
 00000012  0152      LSL         R2,R2,#0x5
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 14  

 00000014  1C29      MOV         R1,R5 ; buf
 00000016  1889      ADD         R1,R2 ; buf
 00000018  A800      ADD         R0,R13,#0x0
 0000001A  2208      MOV         R2,#0x8
 0000001C          L_74:
 0000001C  C908      LDMIA       R1!,{R3}
 0000001E  C008      STMIA       R0!,{R3}
 00000020  1E52      SUB         R2,R2,#0x1
 00000022  D1FB      BNE         L_74  ; T=0x0000001C
  187:         if( !( (fileEntry.Attribute & 0x0F) == 0x0F ) ){
 00000024  200B      MOV         R0,#0xB
 00000026  4468      ADD         R0,R13
 00000028  7800      LDRB        R0,[R0,#0x0] ; fileEntry+11
 0000002A  210F      MOV         R1,#0xF
 0000002C  4008      AND         R0,R1
 0000002E  280F      CMP         R0,#0xF
 00000030  D00D      BEQ         L_14  ; T=0x0000004E
  188:             if(fileEntry.FileName[0] == 0x00 ||
 00000032  A800      ADD         R0,R13,#0x0
 00000034  7800      LDRB        R0,[R0,#0x0] ; fileEntry
 00000036  2800      CMP         R0,#0x0
 00000038  D001      BEQ         L_21  ; T=0x0000003E
 0000003A  28E5      CMP         R0,#0xE5
 0000003C  D107      BNE         L_14  ; T=0x0000004E
 0000003E          L_21:
  190:                 if(loc)loc->Offset=c;
 0000003E  1C30      MOV         R0,R6 ; loc
 00000040  2800      CMP         R0,#0x0 ; loc
 00000042  D002      BEQ         L_22  ; T=0x0000004A
 00000044  1C20      MOV         R0,R4 ; c
 00000046  1C31      MOV         R1,R6 ; loc
 00000048  7108      STRB        R0,[R1,#0x4]
 0000004A          L_22:
  191:                 return(1);
 0000004A  2001      MOV         R0,#0x1
 0000004C  E008      B           L_23  ; T=0x00000060
  194:     }
 0000004E          L_14:
 0000004E  3401      ADD         R4,#0x1
 00000050  0624      LSL         R4,R4,#0x18
 00000052  0E24      LSR         R4,R4,#0x18
 00000054          L_16:
 00000054  1C20      MOV         R0,R4 ; c
 00000056  0600      LSL         R0,R0,#0x18 ; c
 00000058  0E00      LSR         R0,R0,#0x18
 0000005A  2810      CMP         R0,#0x10
 0000005C  DBD6      BLT         L_17  ; T=0x0000000C
  195:     return(0);
 0000005E  2000      MOV         R0,#0x0
 00000060            ; SCOPE-END
  196: }
 00000060          L_23:
 00000060  B008      ADD         R13,#0x20
 00000062  BC70      POP         {R4-R6}
 00000064  4770      BX          R14
 00000066          ENDP ; 'dir_findFreeEntryinBuf?T'


*** CODE SEGMENT '?PR?dir_findinBuf?T?dir':
  203: euint32  dir_findinBuf(euint8 *buf, eint8 *fatname, FileLocation *loc, euint8 mode)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  ---- Variable 'mode' assigned to Register 'R3' ----
 00000002  1C14      MOV         R4,R2 ; loc
 00000004  ---- Variable 'loc' assigned to Register 'R4' ----
 00000004  1C0A      MOV         R2,R1 ; fatname
 00000006  ---- Variable 'fatname' assigned to Register 'R2' ----
 00000006  1C05      MOV         R5,R0 ; buf
 00000008  ---- Variable 'buf' assigned to Register 'R5' ----
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 15  

  205:     switch(mode){
 00000008  1C18      MOV         R0,R3 ; mode
 0000000A  2801      CMP         R0,#0x1 ; mode
 0000000C  D007      BEQ         L_27  ; T=0x0000001E
 0000000E  2800      CMP         R0,#0x0 ; mode
 00000010  D10A      BNE         L_26  ; T=0x00000028
  206:         case DIRFIND_FILE:
 00000012          L_25:
  207:             return(dir_findFileinBuf(buf,fatname,loc));
 00000012  1C28      MOV         R0,R5 ; buf
 00000014  1C11      MOV         R1,R2 ; fatname
 00000016  1C22      MOV         R2,R4 ; loc
 00000018  F7FF      BL          dir_findFileinBuf?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          dir_findFileinBuf?T  ; T=0x0001  (2)
 0000001C  E005      B           L_28  ; T=0x0000002A
  209:         case DIRFIND_FREE:
 0000001E          L_27:
  210:             return(dir_findFreeEntryinBuf(buf,loc));
 0000001E  1C28      MOV         R0,R5 ; buf
 00000020  1C21      MOV         R1,R4 ; loc
 00000022  F7FF      BL          dir_findFreeEntryinBuf?T  ; T=0x0001  (1)
 00000024  FFED      BL          dir_findFreeEntryinBuf?T  ; T=0x0001  (2)
 00000026  E000      B           L_28  ; T=0x0000002A
  212:         default:
 00000028          L_26:
  213:             return(0);
 00000028  2000      MOV         R0,#0x0
  217: }
 0000002A          L_28:
 0000002A  BC30      POP         {R4-R5}
 0000002C  BC08      POP         {R3}
 0000002E  4718      BX          R3
 00000030          ENDP ; 'dir_findinBuf?T'


*** CODE SEGMENT '?PR?dir_findinCluster?T?dir':
  226: euint32 dir_findinCluster(FileSystem *fs,euint32 cluster,eint8 *fatname, FileLocation *loc, euint8 mode)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C1F      MOV         R7,R3 ; loc
 00000004  ---- Variable 'loc' assigned to Register 'R7' ----
 00000004  1C16      MOV         R6,R2 ; fatname
 00000006  ---- Variable 'fatname' assigned to Register 'R6' ----
 00000006  1C0D      MOV         R5,R1 ; cluster
 00000008  ---- Variable 'cluster' assigned to Register 'R5' ----
 00000008  1C04      MOV         R4,R0 ; fs
 0000000A  ---- Variable 'fs' assigned to Register 'R4' ----
 0000000A  B083      SUB         R13,#0xC
  227: {
 0000000C            ; SCOPE-START
  228:     euint8 c,*buf=0;
 0000000C  2000      MOV         R0,#0x0
 0000000E  9001      STR         R0,[R13,#0x4] ; buf
  231:     for(c=0;c<fs->volumeId.SectorsPerCluster;c++){
 00000010  2100      MOV         R1,#0x0
 00000012  A800      ADD         R0,R13,#0x0
 00000014  7001      STRB        R1,[R0,#0x0] ; c
 00000016  E02E      B           L_31  ; T=0x00000076
 00000018          L_32:
  232:         buf = part_getSect(fs->part,fs_clusterToSector(fs,cluster)+c,IOM_MODE_READONLY);
 00000018  1C20      MOV         R0,R4 ; fs
 0000001A  1C29      MOV         R1,R5 ; cluster
 0000001C  F7FF      BL          fs_clusterToSector?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          fs_clusterToSector?T  ; T=0x0001  (2)
 00000020  A900      ADD         R1,R13,#0x0
 00000022  7809      LDRB        R1,[R1,#0x0] ; c
 00000024  1841      ADD         R1,R0,R1 ; fs_clusterToSector?T
 00000026  1C20      MOV         R0,R4 ; fs
 00000028  6800      LDR         R0,[R0,#0x0] ; fs
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 16  

 0000002A  2201      MOV         R2,#0x1
 0000002C  F7FF      BL          part_getSect?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          part_getSect?T  ; T=0x0001  (2)
 00000030  9001      STR         R0,[R13,#0x4] ; buf
  233:         if((fclus=dir_findinBuf(buf,fatname,loc,mode))){
 00000032  A803      ADD         R0,R13,#0xC
 00000034  7800      LDRB        R0,[R0,#0x0] ; mode
 00000036  1C03      MOV         R3,R0
 00000038  9801      LDR         R0,[R13,#0x4] ; buf
 0000003A  1C31      MOV         R1,R6 ; fatname
 0000003C  1C3A      MOV         R2,R7 ; loc
 0000003E  F7FF      BL          dir_findinBuf?T  ; T=0x0001  (1)
 00000040  FFDF      BL          dir_findinBuf?T  ; T=0x0001  (2)
 00000042  9002      STR         R0,[R13,#0x8] ; fclus
 00000044  2800      CMP         R0,#0x0 ; dir_findinBuf?T
 00000046  D012      BEQ         L_29  ; T=0x0000006E
  234:             if(loc)loc->Sector=fs_clusterToSector(fs,cluster)+c;
 00000048  1C38      MOV         R0,R7 ; loc
 0000004A  2800      CMP         R0,#0x0 ; loc
 0000004C  D008      BEQ         L_35  ; T=0x00000060
 0000004E  1C20      MOV         R0,R4 ; fs
 00000050  1C29      MOV         R1,R5 ; cluster
 00000052  F7FF      BL          fs_clusterToSector?T  ; T=0x0001  (1)
 00000054  FFD5      BL          fs_clusterToSector?T  ; T=0x0001  (2)
 00000056  A900      ADD         R1,R13,#0x0
 00000058  7809      LDRB        R1,[R1,#0x0] ; c
 0000005A  1841      ADD         R1,R0,R1 ; fs_clusterToSector?T
 0000005C  1C38      MOV         R0,R7 ; loc
 0000005E  6001      STR         R1,[R0,#0x0] ; loc
 00000060          L_35:
  235:             part_relSect(fs->part,buf);
 00000060  1C20      MOV         R0,R4 ; fs
 00000062  6800      LDR         R0,[R0,#0x0] ; fs
 00000064  9901      LDR         R1,[R13,#0x4] ; buf
 00000066  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 00000068  FFCB      BL          part_relSect?T  ; T=0x0001  (2)
  236:             return(fclus);
 0000006A  9802      LDR         R0,[R13,#0x8] ; fclus
 0000006C  E010      B           L_36  ; T=0x00000090
  238:     }
 0000006E          L_29:
 0000006E  A800      ADD         R0,R13,#0x0
 00000070  7801      LDRB        R1,[R0,#0x0] ; c
 00000072  3101      ADD         R1,#0x1
 00000074  7001      STRB        R1,[R0,#0x0] ; c
 00000076          L_31:
 00000076  1C20      MOV         R0,R4 ; fs
 00000078  7980      LDRB        R0,[R0,#0x6]
 0000007A  1C01      MOV         R1,R0
 0000007C  A800      ADD         R0,R13,#0x0

⌨️ 快捷键说明

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