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

📄 dir.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 0000007E  7800      LDRB        R0,[R0,#0x0] ; c
 00000080  4288      CMP         R0,R1
 00000082  D3C9      BCC         L_32  ; T=0x00000018
  239:     part_relSect(fs->part,buf);
 00000084  1C20      MOV         R0,R4 ; fs
 00000086  6800      LDR         R0,[R0,#0x0] ; fs
 00000088  9901      LDR         R1,[R13,#0x4] ; buf
 0000008A  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 0000008C  FFB9      BL          part_relSect?T  ; T=0x0001  (2)
  240:     return(0);
 0000008E  2000      MOV         R0,#0x0
 00000090            ; SCOPE-END
  241: }
 00000090          L_36:
 00000090  B003      ADD         R13,#0xC
 00000092  BCF0      POP         {R4-R7}
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 17  

 00000094  BC08      POP         {R3}
 00000096  4718      BX          R3
 00000098          ENDP ; 'dir_findinCluster?T'


*** CODE SEGMENT '?PR?dir_findinDir?T?dir':
  249: euint32 dir_findinDir(FileSystem *fs, eint8* fatname,euint32 firstcluster, FileLocation *loc, euint8 mode)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C1E      MOV         R6,R3 ; loc
 00000004  ---- Variable 'loc' assigned to Register 'R6' ----
 00000004  ---- Variable 'firstcluster' assigned to Register 'R2' ----
 00000004  1C0D      MOV         R5,R1 ; fatname
 00000006  ---- Variable 'fatname' assigned to Register 'R5' ----
 00000006  1C04      MOV         R4,R0 ; fs
 00000008  ---- Variable 'fs' assigned to Register 'R4' ----
 00000008  B087      SUB         R13,#0x1C
  250: {
 0000000A            ; SCOPE-START
  251:     euint32 c=0,cluster;
 0000000A  2000      MOV         R0,#0x0
 0000000C  9000      STR         R0,[R13,#0x0] ; c
  254:     Cache.DiscCluster = Cache.FirstCluster = firstcluster;
 0000000E  1C10      MOV         R0,R2 ; firstcluster
 00000010  9004      STR         R0,[R13,#0x10] ; Cache
 00000012  9003      STR         R0,[R13,#0xC] ; Cache
  255:     Cache.LogicCluster = Cache.LastCluster = Cache.Linear = 0;
 00000014  2100      MOV         R1,#0x0
 00000016  A801      ADD         R0,R13,#0x4
 00000018  7001      STRB        R1,[R0,#0x0] ; Cache
 0000001A  2000      MOV         R0,#0x0
 0000001C  9005      STR         R0,[R13,#0x14] ; Cache
 0000001E  2000      MOV         R0,#0x0
 00000020  9002      STR         R0,[R13,#0x8] ; Cache
  257:     if(firstcluster <= 1){
 00000022  1C10      MOV         R0,R2 ; firstcluster
 00000024  2801      CMP         R0,#0x1 ; firstcluster
 00000026  D808      BHI         L_42  ; T=0x0000003A
  258:         return(dir_findinRootArea(fs,fatname,loc,mode));    
 00000028  A807      ADD         R0,R13,#0x1C
 0000002A  7800      LDRB        R0,[R0,#0x0] ; mode
 0000002C  1C03      MOV         R3,R0
 0000002E  1C20      MOV         R0,R4 ; fs
 00000030  1C29      MOV         R1,R5 ; fatname
 00000032  1C32      MOV         R2,R6 ; loc
 00000034  F7FF      BL          dir_findinRootArea?T  ; T=0x0001  (1)
 00000036  FFE4      BL          dir_findinRootArea?T  ; T=0x0001  (2)
 00000038  E01C      B           L_38  ; T=0x00000074
  261:     while(!fat_LogicToDiscCluster(fs,&Cache,c++)){
 0000003A          L_42:
 0000003A  E00E      B           L_39  ; T=0x0000005A
 0000003C          L_41:
  262:         if((cluster=dir_findinCluster(fs,Cache.DiscCluster,fatname,loc,mode))){
 0000003C  A807      ADD         R0,R13,#0x1C
 0000003E  7800      LDRB        R0,[R0,#0x0] ; mode
 00000040  B401      PUSH        {R0}
 00000042  1C20      MOV         R0,R4 ; fs
 00000044  9904      LDR         R1,[R13,#0x10] ; Cache
 00000046  1C2A      MOV         R2,R5 ; fatname
 00000048  1C33      MOV         R3,R6 ; loc
 0000004A  F7FF      BL          dir_findinCluster?T  ; T=0x0001  (1)
 0000004C  FFD9      BL          dir_findinCluster?T  ; T=0x0001  (2)
 0000004E  B001      ADD         R13,#0x4
 00000050  1C07      MOV         R7,R0 ; cluster
 00000052  ---- Variable 'cluster' assigned to Register 'R7' ----
 00000052  2800      CMP         R0,#0x0 ; dir_findinCluster?T
 00000054  D001      BEQ         L_39  ; T=0x0000005A
  263:             return(cluster);
 00000056  1C38      MOV         R0,R7 ; cluster
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 18  

 00000058  E00C      B           L_38  ; T=0x00000074
  265:     }
 0000005A          L_39:
 0000005A  9A00      LDR         R2,[R13,#0x0] ; c
 0000005C  1C10      MOV         R0,R2
 0000005E  3001      ADD         R0,#0x1
 00000060  9000      STR         R0,[R13,#0x0] ; c
 00000062  1C20      MOV         R0,R4 ; fs
 00000064  A901      ADD         R1,R13,#0x4
 00000066  F7FF      BL          fat_LogicToDiscCluster?T  ; T=0x0001  (1)
 00000068  FFCB      BL          fat_LogicToDiscCluster?T  ; T=0x0001  (2)
 0000006A  0400      LSL         R0,R0,#0x10 ; fat_LogicToDiscCluster?T
 0000006C  1400      ASR         R0,R0,#0x10
 0000006E  2800      CMP         R0,#0x0
 00000070  D0E4      BEQ         L_41  ; T=0x0000003C
  266:     return(0);
 00000072  2000      MOV         R0,#0x0
 00000074            ; SCOPE-END
  267: }
 00000074          L_38:
 00000074  B007      ADD         R13,#0x1C
 00000076  BCF0      POP         {R4-R7}
 00000078  BC08      POP         {R3}
 0000007A  4718      BX          R3
 0000007C          ENDP ; 'dir_findinDir?T'


*** CODE SEGMENT '?PR?dir_findinRootArea?T?dir':
  275: euint32 dir_findinRootArea(FileSystem *fs,eint8* fatname, FileLocation *loc, euint8 mode)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C1F      MOV         R7,R3 ; mode
 00000004  ---- Variable 'mode' assigned to Register 'R7' ----
 00000004  1C16      MOV         R6,R2 ; loc
 00000006  ---- Variable 'loc' assigned to Register 'R6' ----
 00000006  1C0D      MOV         R5,R1 ; fatname
 00000008  ---- Variable 'fatname' assigned to Register 'R5' ----
 00000008  1C04      MOV         R4,R0 ; fs
 0000000A  ---- Variable 'fs' assigned to Register 'R4' ----
 0000000A  B083      SUB         R13,#0xC
  276: {
 0000000C            ; SCOPE-START
  278:     euint8 *buf=0;
 0000000C  2000      MOV         R0,#0x0
 0000000E  9002      STR         R0,[R13,#0x8] ; buf
  280:     if((fs->type != FAT12) && (fs->type != FAT16))return(0);
 00000010  1C20      MOV         R0,R4 ; fs
 00000012  303C      ADD         R0,#0x3C
 00000014  7800      LDRB        R0,[R0,#0x0]
 00000016  2801      CMP         R0,#0x1
 00000018  D003      BEQ         L_50  ; T=0x00000022
 0000001A  2802      CMP         R0,#0x2
 0000001C  D001      BEQ         L_50  ; T=0x00000022
 0000001E  2000      MOV         R0,#0x0
 00000020  E03D      B           L_45  ; T=0x0000009E
  282:     for(c=fs->FirstSectorRootDir;c<(fs->FirstSectorRootDir+fs->volumeId.RootEntryCount/32);c++){
 00000022          L_50:
 00000022  1C20      MOV         R0,R4 ; fs
 00000024  6AC0      LDR         R0,[R0,#0x2C]
 00000026  9000      STR         R0,[R13,#0x0] ; c
 00000028  E026      B           L_48  ; T=0x00000078
 0000002A          L_49:
  283:         buf = part_getSect(fs->part,c,IOM_MODE_READONLY);
 0000002A  1C20      MOV         R0,R4 ; fs
 0000002C  6800      LDR         R0,[R0,#0x0] ; fs
 0000002E  9900      LDR         R1,[R13,#0x0] ; c
 00000030  2201      MOV         R2,#0x1
 00000032  F7FF      BL          part_getSect?T  ; T=0x0001  (1)
 00000034  FFE5      BL          part_getSect?T  ; T=0x0001  (2)
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 19  

 00000036  9002      STR         R0,[R13,#0x8] ; buf
  284:         if((fclus=dir_findinBuf(buf,fatname,loc,mode))){
 00000038  1C38      MOV         R0,R7 ; mode
 0000003A  0603      LSL         R3,R0,#0x18 ; mode
 0000003C  0E1B      LSR         R3,R3,#0x18
 0000003E  9802      LDR         R0,[R13,#0x8] ; buf
 00000040  1C29      MOV         R1,R5 ; fatname
 00000042  1C32      MOV         R2,R6 ; loc
 00000044  F7FF      BL          dir_findinBuf?T  ; T=0x0001  (1)
 00000046  FFDC      BL          dir_findinBuf?T  ; T=0x0001  (2)
 00000048  9001      STR         R0,[R13,#0x4] ; fclus
 0000004A  2800      CMP         R0,#0x0 ; dir_findinBuf?T
 0000004C  D00C      BEQ         L_51  ; T=0x00000068
  285:             if(loc)loc->Sector=c;
 0000004E  1C30      MOV         R0,R6 ; loc
 00000050  2800      CMP         R0,#0x0 ; loc
 00000052  D002      BEQ         L_52  ; T=0x0000005A
 00000054  9900      LDR         R1,[R13,#0x0] ; c
 00000056  1C30      MOV         R0,R6 ; loc
 00000058  6001      STR         R1,[R0,#0x0] ; loc
 0000005A          L_52:
  286:             part_relSect(fs->part,buf);
 0000005A  1C20      MOV         R0,R4 ; fs
 0000005C  6800      LDR         R0,[R0,#0x0] ; fs
 0000005E  9902      LDR         R1,[R13,#0x8] ; buf
 00000060  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 00000062  FFCE      BL          part_relSect?T  ; T=0x0001  (2)
  287:             return(fclus);
 00000064  9801      LDR         R0,[R13,#0x4] ; fclus
 00000066  E01A      B           L_45  ; T=0x0000009E
  288:         }   
 00000068          L_51:
  289:         part_relSect(fs->part,buf); 
 00000068  1C20      MOV         R0,R4 ; fs
 0000006A  6800      LDR         R0,[R0,#0x0] ; fs
 0000006C  9902      LDR         R1,[R13,#0x8] ; buf
 0000006E  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 00000070  FFC7      BL          part_relSect?T  ; T=0x0001  (2)
  290:     }
 00000072  9800      LDR         R0,[R13,#0x0] ; c
 00000074  3001      ADD         R0,#0x1
 00000076  9000      STR         R0,[R13,#0x0] ; c
 00000078          L_48:
 00000078  1C20      MOV         R0,R4 ; fs
 0000007A  8980      LDRH        R0,[R0,#0xC]
 0000007C  2120      MOV         R1,#0x20
 0000007E  F7FF      BL          ?C?SDIV?T  ; T=0x0001  (1) ; ?C?SDIV?T
 00000080  FFBF      BL          ?C?SDIV?T  ; T=0x0001  (2) ; ?C?SDIV?T
 00000082  1C08      MOV         R0,R1
 00000084  1C02      MOV         R2,R0
 00000086  1C20      MOV         R0,R4 ; fs
 00000088  6AC1      LDR         R1,[R0,#0x2C]
 0000008A  1889      ADD         R1,R2
 0000008C  9800      LDR         R0,[R13,#0x0] ; c
 0000008E  4288      CMP         R0,R1
 00000090  D3CB      BCC         L_49  ; T=0x0000002A
  291:     part_relSect(fs->part,buf);
 00000092  1C20      MOV         R0,R4 ; fs
 00000094  6800      LDR         R0,[R0,#0x0] ; fs
 00000096  9902      LDR         R1,[R13,#0x8] ; buf
 00000098  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 0000009A  FFB2      BL          part_relSect?T  ; T=0x0001  (2)
  292:     return(0);
 0000009C  2000      MOV         R0,#0x0
 0000009E            ; SCOPE-END
  293: }
ARM COMPILER V2.42,  dir                                                                   27/03/06  10:45:48  PAGE 20  

 0000009E          L_45:
 0000009E  B003      ADD         R13,#0xC
 000000A0  BCF0      POP         {R4-R7}
 000000A2  BC08      POP         {R3}
 000000A4  4718      BX          R3
 000000A6          ENDP ; 'dir_findinRootArea?T'


*** CODE SEGMENT '?PR?dir_getFatFileName?T?dir':
  301: esint8 dir_getFatFileName(eint8* filename, eint8* fatfilename)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C0E      MOV         R6,R1 ; fatfilename
 00000004  ---- Variable 'fatfilename' assigned to Register 'R6' ----
 00000004  1C07      MOV         R7,R0 ; filename
 00000006  ---- Variable 'filename' assigned to Register 'R7' ----
 00000006  B083      SUB         R13,#0xC
  302: {
 00000008            ; SCOPE-START
  303:     eint8 ffnamec[11],*next,nn=0;
 00000008  2400      MOV         R4,#0x0
 0000000A  ---- Variable 'nn' assigned to Register 'R4' ----
  305:     memClr(ffnamec,11); memClr(fatfilename,11);
 0000000A  A800      ADD         R0,R13,#0x0
 0000000C  210B      MOV         R1,#0xB
 0000000E  F7FF      BL          memClr?T  ; T=0x0001  (1)
 00000010  FFF7      BL          memClr?T  ; T=0x0001  (2)
 00000012  1C30      MOV         R0,R6 ; fatfilename
 00000014  210B      MOV         R1,#0xB
 00000016  F7FF      BL          memClr?T  ; T=0x0001  (1)
 00000018  FFF3      BL          memClr?T  ; T=0x0001  (2)
  306:     next = filename;
 0000001A  1C3D      MOV         R5,R7 ; filename
 0000001C  ---- Variable 'next' assigned to Register 'R5' ----
  308:     if(*filename=='/')next++;
 0000001C  1C38      MOV         R0,R7 ; filename
 0000001E  7800      LDRB        R0,[R0,#0x0] ; filename
 00000020  282F      CMP         R0,#0x2F
 00000022  D100 

⌨️ 快捷键说明

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