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

📄 fs.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 PUBLIC         fs_initFs?T
 PUBLIC         fs_isValidFat?T
 PUBLIC         fs_loadVolumeId?T
 PUBLIC         fs_verifySanity?T
 PUBLIC         fs_countDataSectors?T
 PUBLIC         fs_determineFatType?T
 PUBLIC         fs_findFirstSectorRootDir?T
 PUBLIC         fs_initCurrentDir?T
 PUBLIC         fs_clusterToSector?T
 PUBLIC         fs_sectorToCluster?T
 PUBLIC         fs_getNextFreeCluster?T
 PUBLIC         fs_giveFreeClusterHint?T
 PUBLIC         fs_findFreeFile?T
 PUBLIC         fs_findFile?T
 PUBLIC         fs_getLastCluster?T
 PUBLIC         fs_getFirstClusterRootDir?T
 PUBLIC         fs_setFirstClusterInDirEntry?T
 PUBLIC         fs_initClusterChain?T
 PUBLIC         fs_flushFs?T
 PUBLIC         fs_umount?T
 PUBLIC         fs_clearCluster?T
 PUBLIC         fs_getFsInfo?T
 PUBLIC         fs_setFsInfo?T



*** CODE SEGMENT '?PR?fs_initFs?T?fs':
   36: eint16 fs_initFs(FileSystem *fs,Partition *part)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C0D      MOV         R5,R1 ; part
 00000004  ---- Variable 'part' assigned to Register 'R5' ----
 00000004  1C04      MOV         R4,R0 ; fs
 00000006  ---- Variable 'fs' assigned to Register 'R4' ----
   38:     if(!fs_isValidFat(part)){
 00000006  1C28      MOV         R0,R5 ; part
 00000008  F7FF      BL          fs_isValidFat?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          fs_isValidFat?T  ; T=0x0001  (2)
 0000000C  0400      LSL         R0,R0,#0x10 ; fs_isValidFat?T
 0000000E  1400      ASR         R0,R0,#0x10
 00000010  2800      CMP         R0,#0x0
 00000012  D101      BNE         L_1  ; T=0x00000018
   39:         return(-1);
 00000014  4800      LDR         R0,=0xFFFFFFFF
 00000016  E01C      B           L_2  ; T=0x00000052
   40:     }
 00000018          L_1:
ARM COMPILER V2.42,  fs                                                                    27/03/06  10:45:50  PAGE 10  

   41:     fs->part=part;
 00000018  1C29      MOV         R1,R5 ; part
 0000001A  1C20      MOV         R0,R4 ; fs
 0000001C  6001      STR         R1,[R0,#0x0] ; fs
   42:     fs_loadVolumeId(fs,part);
 0000001E  1C20      MOV         R0,R4 ; fs
 00000020  1C29      MOV         R1,R5 ; part
 00000022  F7FF      BL          fs_loadVolumeId?T  ; T=0x0001  (1)
 00000024  FFED      BL          fs_loadVolumeId?T  ; T=0x0001  (2)
   43:     if(!fs_verifySanity(fs))return(-2);
 00000026  1C20      MOV         R0,R4 ; fs
 00000028  F7FF      BL          fs_verifySanity?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          fs_verifySanity?T  ; T=0x0001  (2)
 0000002C  0400      LSL         R0,R0,#0x10 ; fs_verifySanity?T
 0000002E  1400      ASR         R0,R0,#0x10
 00000030  2800      CMP         R0,#0x0
 00000032  D101      BNE         L_3  ; T=0x00000038
 00000034  4800      LDR         R0,=0xFFFFFFFE
 00000036  E00C      B           L_2  ; T=0x00000052
 00000038          L_3:
   44:       fs_countDataSectors(fs);
 00000038  1C20      MOV         R0,R4 ; fs
 0000003A  F7FF      BL          fs_countDataSectors?T  ; T=0x0001  (1)
 0000003C  FFE1      BL          fs_countDataSectors?T  ; T=0x0001  (2)
   45:     fs_determineFatType(fs);
 0000003E  1C20      MOV         R0,R4 ; fs
 00000040  F7FF      BL          fs_determineFatType?T  ; T=0x0001  (1)
 00000042  FFDE      BL          fs_determineFatType?T  ; T=0x0001  (2)
   46:     fs_findFirstSectorRootDir(fs);
 00000044  1C20      MOV         R0,R4 ; fs
 00000046  F7FF      BL          fs_findFirstSectorRootDir?T  ; T=0x0001  (1)
 00000048  FFDB      BL          fs_findFirstSectorRootDir?T  ; T=0x0001  (2)
   47:     fs_initCurrentDir(fs); 
 0000004A  1C20      MOV         R0,R4 ; fs
 0000004C  F7FF      BL          fs_initCurrentDir?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          fs_initCurrentDir?T  ; T=0x0001  (2)
   48:     return(0);
 00000050  2000      MOV         R0,#0x0
   49: }
 00000052          L_2:
 00000052  BC30      POP         {R4-R5}
 00000054  BC08      POP         {R3}
 00000056  4718      BX          R3
 00000058          ENDP ; 'fs_initFs?T'


*** CODE SEGMENT '?PR?fs_isValidFat?T?fs':
   58: eint16 fs_isValidFat(Partition *part)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C05      MOV         R5,R0 ; part
 00000004  ---- Variable 'part' assigned to Register 'R5' ----
   59: {
 00000004            ; SCOPE-START
   62:     buf=part_getSect(part,0,IOM_MODE_READONLY|IOM_MODE_EXP_REQ); /* Load Volume label */
 00000004  1C28      MOV         R0,R5 ; part
 00000006  2100      MOV         R1,#0x0
 00000008  2205      MOV         R2,#0x5
 0000000A  F7FF      BL          part_getSect?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          part_getSect?T  ; T=0x0001  (2)
 0000000E  1C04      MOV         R4,R0 ; buf
 00000010  ---- Variable 'buf' assigned to Register 'R4' ----
   63:     if( ex_getb16(buf,0x1FE) != 0xAA55 ){
 00000010  1C20      MOV         R0,R4 ; buf
 00000012  4800      LDR         R1,=0x1FE
 00000014  F7FF      BL          ex_getb16?T  ; T=0x0001  (1)
 00000016  FFF4      BL          ex_getb16?T  ; T=0x0001  (2)
 00000018  0400      LSL         R0,R0,#0x10 ; ex_getb16?T
 0000001A  0C00      LSR         R0,R0,#0x10
ARM COMPILER V2.42,  fs                                                                    27/03/06  10:45:50  PAGE 11  

 0000001C  4800      LDR         R1,=0xAA55
 0000001E  4288      CMP         R0,R1
 00000020  D001      BEQ         L_4  ; T=0x00000026
   64:         return (0);
 00000022  2000      MOV         R0,#0x0
 00000024  E004      B           L_5  ; T=0x00000030
   65:     }
 00000026          L_4:
   66:     part_relSect(part,buf);
 00000026  1C28      MOV         R0,R5 ; part
 00000028  1C21      MOV         R1,R4 ; buf
 0000002A  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          part_relSect?T  ; T=0x0001  (2)
   67:     return(1);
 0000002E  2001      MOV         R0,#0x1
 00000030            ; SCOPE-END
   68: }
 00000030          L_5:
 00000030  BC30      POP         {R4-R5}
 00000032  BC08      POP         {R3}
 00000034  4718      BX          R3
 00000036          ENDP ; 'fs_isValidFat?T'


*** CODE SEGMENT '?PR?fs_loadVolumeId?T?fs':
   75: void fs_loadVolumeId(FileSystem *fs, Partition *part)
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C0D      MOV         R5,R1 ; part
 00000004  ---- Variable 'part' assigned to Register 'R5' ----
 00000004  1C06      MOV         R6,R0 ; fs
 00000006  ---- Variable 'fs' assigned to Register 'R6' ----
   76: {
 00000006            ; SCOPE-START
   79:     buf=part_getSect(part,0,IOM_MODE_READONLY|IOM_MODE_EXP_REQ);
 00000006  1C28      MOV         R0,R5 ; part
 00000008  2100      MOV         R1,#0x0
 0000000A  2205      MOV         R2,#0x5
 0000000C  F7FF      BL          part_getSect?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          part_getSect?T  ; T=0x0001  (2)
 00000010  1C04      MOV         R4,R0 ; buf
 00000012  ---- Variable 'buf' assigned to Register 'R4' ----
   81:     fs->volumeId.BytesPerSector=ex_getb16(buf,0x0B);
 00000012  1C20      MOV         R0,R4 ; buf
 00000014  210B      MOV         R1,#0xB
 00000016  F7FF      BL          ex_getb16?T  ; T=0x0001  (1)
 00000018  FFF3      BL          ex_getb16?T  ; T=0x0001  (2)
 0000001A  1C31      MOV         R1,R6 ; fs
 0000001C  8088      STRH        R0,[R1,#0x4]
   82:     fs->volumeId.SectorsPerCluster=*((eint8*)(buf+0x0D));
 0000001E  1C20      MOV         R0,R4 ; buf
 00000020  7B41      LDRB        R1,[R0,#0xD]
 00000022  1C30      MOV         R0,R6 ; fs
 00000024  7181      STRB        R1,[R0,#0x6]
   83:     fs->volumeId.ReservedSectorCount=ex_getb16(buf,0x0E);
 00000026  1C20      MOV         R0,R4 ; buf
 00000028  210E      MOV         R1,#0xE
 0000002A  F7FF      BL          ex_getb16?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          ex_getb16?T  ; T=0x0001  (2)
 0000002E  1C31      MOV         R1,R6 ; fs
 00000030  8108      STRH        R0,[R1,#0x8]
   84:     fs->volumeId.NumberOfFats=*((eint8*)(buf+0x10));
 00000032  1C20      MOV         R0,R4 ; buf
 00000034  7C01      LDRB        R1,[R0,#0x10]
 00000036  1C30      MOV         R0,R6 ; fs
 00000038  7281      STRB        R1,[R0,#0xA]
   85:     fs->volumeId.RootEntryCount=ex_getb16(buf,0x11);
 0000003A  1C20      MOV         R0,R4 ; buf
 0000003C  2111      MOV         R1,#0x11
ARM COMPILER V2.42,  fs                                                                    27/03/06  10:45:50  PAGE 12  

 0000003E  F7FF      BL          ex_getb16?T  ; T=0x0001  (1)
 00000040  FFDF      BL          ex_getb16?T  ; T=0x0001  (2)
 00000042  1C31      MOV         R1,R6 ; fs
 00000044  8188      STRH        R0,[R1,#0xC]
   86:     fs->volumeId.SectorCount16=ex_getb16(buf,0x13);
 00000046  1C20      MOV         R0,R4 ; buf
 00000048  2113      MOV         R1,#0x13
 0000004A  F7FF      BL          ex_getb16?T  ; T=0x0001  (1)
 0000004C  FFD9      BL          ex_getb16?T  ; T=0x0001  (2)
 0000004E  1C31      MOV         R1,R6 ; fs
 00000050  81C8      STRH        R0,[R1,#0xE]
   87:     fs->volumeId.FatSectorCount16=ex_getb16(buf,0x16);
 00000052  1C20      MOV         R0,R4 ; buf
 00000054  2116      MOV         R1,#0x16
 00000056  F7FF      BL          ex_getb16?T  ; T=0x0001  (1)
 00000058  FFD3      BL          ex_getb16?T  ; T=0x0001  (2)
 0000005A  1C31      MOV         R1,R6 ; fs
 0000005C  8208      STRH        R0,[R1,#0x10]
   88:     fs->volumeId.SectorCount32=ex_getb32(buf,0x20);
 0000005E  1C20      MOV         R0,R4 ; buf
 00000060  2120      MOV         R1,#0x20
 00000062  F7FF      BL          ex_getb32?T  ; T=0x0001  (1)
 00000064  FFCD      BL          ex_getb32?T  ; T=0x0001  (2)
 00000066  1C31      MOV         R1,R6 ; fs
 00000068  6148      STR         R0,[R1,#0x14]
   89:     fs->volumeId.FatSectorCount32=ex_getb32(buf,0x24);
 0000006A  1C20      MOV         R0,R4 ; buf
 0000006C  2124      MOV         R1,#0x24
 0000006E  F7FF      BL          ex_getb32?T  ; T=0x0001  (1)
 00000070  FFC7      BL          ex_getb32?T  ; T=0x0001  (2)
 00000072  1C31      MOV         R1,R6 ; fs
 00000074  6188      STR         R0,[R1,#0x18]
   90:     fs->volumeId.RootCluster=ex_getb32(buf,0x2C);
 00000076  1C20      MOV         R0,R4 ; buf
 00000078  212C      MOV         R1,#0x2C
 0000007A  F7FF      BL          ex_getb32?T  ; T=0x0001  (1)
 0000007C  FFC1      BL          ex_getb32?T  ; T=0x0001  (2)
 0000007E  1C31      MOV         R1,R6 ; fs
 00000080  61C8      STR         R0,[R1,#0x1C]
   92:     part_relSect(part,buf);
 00000082  1C28      MOV         R0,R5 ; part
 00000084  1C21      MOV         R1,R4 ; buf
 00000086  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 00000088  FFBB      BL          part_relSect?T  ; T=0x0001  (2)
 0000008A            ; SCOPE-END
   94: }
 0000008A  BC70      POP         {R4-R6}
 0000008C  BC08      POP         {R3}
 0000008E  4718      BX          R3
 00000090          ENDP ; 'fs_loadVolumeId?T'


*** CODE SEGMENT '?PR?fs_verifySanity?T?fs':
  102: esint16 fs_verifySanity(FileSystem *fs)
 00000000  B410      PUSH        {R4}
 00000002  1C03      MOV         R3,R0 ; fs
 00000004  ---- Variable 'fs' assigned to Register 'R3' ----
  103: {
 00000004            ; SCOPE-START
  104:     esint16 sane=1; /* Sane until proven otherwise */
 00000004  2101      MOV         R1,#0x1
 00000006  ---- Variable 'sane' assigned to Register 'R1' ----
  106:     if(fs->volumeId.BytesPerSector!=512)sane=0;
 00000006  1C18      MOV         R0,R3 ; fs
 00000008  8880      LDRH        R0,[R0,#0x4]
 0000000A  4A80      LDR         R2,=0x200
 0000000C  4290      CMP         R0,R2
 0000000E  D000      BEQ         L_6  ; T=0x00000012
ARM COMPILER V2.42,  fs                                                                    27/03/06  10:45:50  PAGE 13  

 00000010  2100      MOV         R1,#0x0
 00000012          L_6:
  108:     if(!((fs->volumeId.SectorsPerCluster == 1 ) |
 00000012  1C18      MOV         R0,R3 ; fs
 00000014  7980      LDRB        R0,[R0,#0x6]
 00000016  1C02      MOV         R2,R0
 00000018  2A02      CMP         R2,#0x2
 0000001A  D101      BNE         L_8  ; T=0x00000020
 0000001C  2401      MOV         R4,#0x1
 0000001E  E000      B           L_9  ; T=0x00000022
 00000020          L_8:
 00000020  2400      MOV         R4,#0x0
 00000022          L_9:
 00000022  2A01      CMP         R2,#0x1
 00000024  D101      BNE         L_10  ; T=0x0000002A
 00000026  2001      MOV         R0,#0x1
 00000028  E000      B           L_11  ; T=0x0000002C
 0000002A          L_10:
 0000002A  2000      MOV         R0,#0x0
 0000002C          L_11:
 0000002C  4320      ORR         R0,R4

⌨️ 快捷键说明

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