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

📄 fat.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 000000E8  0E09      LSR         R1,R1,#0x18
 000000EA  1C18      MOV         R0,R3 ; buf2
 000000EC  7001      STRB        R1,[R0,#0x0] ; buf2
  157:                 }else{
 000000EE  E004      B           L_33  ; T=0x000000FA
 000000F0          L_32:
  158:                     buf2[0]=(next_cluster_addr>>4)&0xFF;
 000000F0  1C31      MOV         R1,R6 ; next_cluster_addr
 000000F2  0909      LSR         R1,R1,#0x4 ; next_cluster_addr
 000000F4  20FF      MOV         R0,#0xFF
 000000F6  4001      AND         R1,R0
 000000F8  0609      LSL         R1,R1,#0x18
 000000FA  0E09      LSR         R1,R1,#0x18
 000000FC  1C18      MOV         R0,R3 ; buf2
 000000FE  7001      STRB        R1,[R0,#0x0] ; buf2
  159:                 }
 00000100          L_33:
  160:                 part_relSect(fs->part,buf2);
 00000100  1C28      MOV         R0,R5 ; fs
 00000102  6800      LDR         R0,[R0,#0x0] ; fs
 00000104  1C19      MOV         R1,R3 ; buf2
 00000106  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 00000108  FF7B      BL          part_relSect?T  ; T=0x0001  (2)
  161:             }else{
 0000010A  E03D      B           L_34  ; T=0x00000188
 0000010C          L_29:
  162:                 if(cluster_addr%2==0){
 0000010C  1C38      MOV         R0,R7 ; cluster_addr
 0000010E  2101      MOV         R1,#0x1
 00000110  4208      TST         R0,R1 ; cluster_addr
 00000112  D11B      BNE         L_35  ; T=0x0000014C
  163:                     buf[offset]=next_cluster_addr&0xFF;
 00000114  1C30      MOV         R0,R6 ; next_cluster_addr
 00000116  21FF      MOV         R1,#0xFF
 00000118  4008      AND         R0,R1
 0000011A  0600      LSL         R0,R0,#0x18
 0000011C  0E00      LSR         R0,R0,#0x18
 0000011E  1C21      MOV         R1,R4 ; offset
 00000120  040A      LSL         R2,R1,#0x10 ; offset
 00000122  0C12      LSR         R2,R2,#0x10
 00000124  9900      LDR         R1,[R13,#0x0] ; buf
 00000126  5488      STRB        R0,[R1,R2]
  164:                     buf[offset+1]=(buf[offset+1]&0xF0)+((next_cluster_addr>>8)&0xF);
 00000128  1C20      MOV         R0,R4 ; offset
 0000012A  0400      LSL         R0,R0,#0x10 ; offset
 0000012C  0C00      LSR         R0,R0,#0x10
 0000012E  9900      LDR         R1,[R13,#0x0] ; buf
 00000130  1808      ADD         R0,R1,R0
 00000132  7840      LDRB        R0,[R0,#0x1]
 00000134  22F0      MOV         R2,#0xF0
 00000136  4010      AND         R0,R2
 00000138  1C32      MOV         R2,R6 ; next_cluster_addr
 0000013A  0A12      LSR         R2,R2,#0x8 ; next_cluster_addr
 0000013C  230F      MOV         R3,#0xF
 0000013E  401A      AND         R2,R3
 00000140  1880      ADD         R0,R2
 00000142  0600      LSL         R0,R0,#0x18
 00000144  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.42,  fat                                                                   27/03/06  10:45:49  PAGE 18  

 00000146  1C22      MOV         R2,R4 ; offset
 00000148  0412      LSL         R2,R2,#0x10 ; offset
 0000014A  0C12      LSR         R2,R2,#0x10
 0000014C  1889      ADD         R1,R2
 0000014E  7048      STRB        R0,[R1,#0x1]
  165:                 }else{
 00000150  E01A      B           L_34  ; T=0x00000188
 00000152          L_35:
  166:                     buf[offset]=(buf[offset]&0xF)+((next_cluster_addr<<4)&0xF0);
 00000152  1C20      MOV         R0,R4 ; offset
 00000154  0400      LSL         R0,R0,#0x10 ; offset
 00000156  0C00      LSR         R0,R0,#0x10
 00000158  9900      LDR         R1,[R13,#0x0] ; buf
 0000015A  5C08      LDRB        R0,[R1,R0]
 0000015C  220F      MOV         R2,#0xF
 0000015E  4010      AND         R0,R2
 00000160  1C32      MOV         R2,R6 ; next_cluster_addr
 00000162  0112      LSL         R2,R2,#0x4 ; next_cluster_addr
 00000164  23F0      MOV         R3,#0xF0
 00000166  401A      AND         R2,R3
 00000168  1880      ADD         R0,R2
 0000016A  0600      LSL         R0,R0,#0x18
 0000016C  0E00      LSR         R0,R0,#0x18
 0000016E  1C22      MOV         R2,R4 ; offset
 00000170  0412      LSL         R2,R2,#0x10 ; offset
 00000172  0C12      LSR         R2,R2,#0x10
 00000174  5488      STRB        R0,[R1,R2]
  167:                     buf[offset+1]=(next_cluster_addr>>4)&0xFF;
 00000176  1C30      MOV         R0,R6 ; next_cluster_addr
 00000178  0900      LSR         R0,R0,#0x4 ; next_cluster_addr
 0000017A  21FF      MOV         R1,#0xFF
 0000017C  4008      AND         R0,R1
 0000017E  0600      LSL         R0,R0,#0x18
 00000180  0E00      LSR         R0,R0,#0x18
 00000182  1C21      MOV         R1,R4 ; offset
 00000184  040A      LSL         R2,R1,#0x10 ; offset
 00000186  0C12      LSR         R2,R2,#0x10
 00000188  9900      LDR         R1,[R13,#0x0] ; buf
 0000018A  1889      ADD         R1,R2
 0000018C  7048      STRB        R0,[R1,#0x1]
  169:             }
 0000018E          L_34:
  170:             part_relSect(fs->part,buf);
 0000018E  1C28      MOV         R0,R5 ; fs
 00000190  6800      LDR         R0,[R0,#0x0] ; fs
 00000192  9900      LDR         R1,[R13,#0x0] ; buf
 00000194  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 00000196  FF34      BL          part_relSect?T  ; T=0x0001  (2)
  171:             break;
 00000198  E021      B           L_24  ; T=0x000001DE
  172:         case FAT16:
 0000019A          L_27:
  173:             offset=cluster_addr%256;
 0000019A  1C3C      MOV         R4,R7 ; cluster_addr
 0000019C  20FF      MOV         R0,#0xFF
 0000019E  4004      AND         R4,R0
 000001A0  0424      LSL         R4,R4,#0x10
 000001A2  0C24      LSR         R4,R4,#0x10
  174:             *((euint16*)buf+offset)=next_cluster_addr;
 000001A4  1C30      MOV         R0,R6 ; next_cluster_addr
 000001A6  0400      LSL         R0,R0,#0x10 ; next_cluster_addr
 000001A8  0C00      LSR         R0,R0,#0x10
 000001AA  1C21      MOV         R1,R4 ; offset
 000001AC  040A      LSL         R2,R1,#0x10 ; offset
 000001AE  0C12      LSR         R2,R2,#0x10
 000001B0  0052      LSL         R2,R2,#0x1
ARM COMPILER V2.42,  fat                                                                   27/03/06  10:45:49  PAGE 19  

 000001B2  9900      LDR         R1,[R13,#0x0] ; buf
 000001B4  5288      STRH        R0,[R1,R2]
  175:             part_relSect(fs->part,buf);
 000001B6  1C28      MOV         R0,R5 ; fs
 000001B8  6800      LDR         R0,[R0,#0x0] ; fs
 000001BA  9900      LDR         R1,[R13,#0x0] ; buf
 000001BC  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 000001BE  FF20      BL          part_relSect?T  ; T=0x0001  (2)
  176:             break;
 000001C0  E00D      B           L_24  ; T=0x000001DE
  177:         case FAT32:
 000001C2          L_28:
  178:             offset=cluster_addr%128;
 000001C2  1C3C      MOV         R4,R7 ; cluster_addr
 000001C4  207F      MOV         R0,#0x7F
 000001C6  4004      AND         R4,R0
 000001C8  0424      LSL         R4,R4,#0x10
 000001CA  0C24      LSR         R4,R4,#0x10
  179:             *((euint32*)buf+offset)=next_cluster_addr;
 000001CC  1C30      MOV         R0,R6 ; next_cluster_addr
 000001CE  1C21      MOV         R1,R4 ; offset
 000001D0  040A      LSL         R2,R1,#0x10 ; offset
 000001D2  0C12      LSR         R2,R2,#0x10
 000001D4  0092      LSL         R2,R2,#0x2
 000001D6  9900      LDR         R1,[R13,#0x0] ; buf
 000001D8  5088      STR         R0,[R1,R2]
  180:             part_relSect(fs->part,buf);
 000001DA  1C28      MOV         R0,R5 ; fs
 000001DC  6800      LDR         R0,[R0,#0x0] ; fs
 000001DE  9900      LDR         R1,[R13,#0x0] ; buf
 000001E0  F7FF      BL          part_relSect?T  ; T=0x0001  (1)
 000001E2  FF0E      BL          part_relSect?T  ; T=0x0001  (2)
  182:     }
 000001E4            ; SCOPE-END
  184: }
 000001E4          L_24:
 000001E4  B002      ADD         R13,#0x8
 000001E6  BCF0      POP         {R4-R7}
 000001E8  BC08      POP         {R3}
 000001EA  4718      BX          R3
 000001EC          ENDP ; 'fat_setNextClusterAddress?T'


*** CODE SEGMENT '?PR?fat_isEocMarker?T?fat':
  194: eint16 fat_isEocMarker(FileSystem *fs,euint32 fat_entry)
 00000000  1C0A      MOV         R2,R1 ; fat_entry
 00000002  ---- Variable 'fat_entry' assigned to Register 'R2' ----
 00000002  1C01      MOV         R1,R0 ; fs
 00000004  ---- Variable 'fs' assigned to Register 'R1' ----
  196:     switch(fs->type){
 00000004  1C08      MOV         R0,R1 ; fs
 00000006  303C      ADD         R0,#0x3C
 00000008  7800      LDRB        R0,[R0,#0x0]
 0000000A  2802      CMP         R0,#0x2
 0000000C  D009      BEQ         L_39  ; T=0x00000022
 0000000E  2803      CMP         R0,#0x3
 00000010  D00D      BEQ         L_40  ; T=0x0000002E
 00000012  2801      CMP         R0,#0x1
 00000014  D113      BNE         L_37  ; T=0x0000003E
  197:         case FAT12:
 00000016          L_38:
  198:             if(fat_entry<0xFF8){
 00000016  1C10      MOV         R0,R2 ; fat_entry
 00000018  4800      LDR         R1,=0xFF8
 0000001A  4288      CMP         R0,R1 ; fat_entry
 0000001C  D20F      BCS         L_37  ; T=0x0000003E
  199:                 return(0);
 0000001E  2000      MOV         R0,#0x0
ARM COMPILER V2.42,  fat                                                                   27/03/06  10:45:49  PAGE 20  

 00000020  E00E      B           L_42  ; T=0x00000040
  202:         case FAT16:
 00000022          L_39:
  203:             if(fat_entry<0xFFF8){
 00000022  1C10      MOV         R0,R2 ; fat_entry
 00000024  4800      LDR         R1,=0xFFF8
 00000026  4288      CMP         R0,R1 ; fat_entry
 00000028  D209      BCS         L_37  ; T=0x0000003E
  204:                 return(0);
 0000002A  2000      MOV         R0,#0x0
 0000002C  E008      B           L_42  ; T=0x00000040
  207:         case FAT32:
 0000002E          L_40:
  208:             if((fat_entry&0x0FFFFFFF)<0xFFFFFF8){
 0000002E  1C10      MOV         R0,R2 ; fat_entry
 00000030  4800      LDR         R1,=0xF0000000
 00000032  4388      BIC         R0,R1
 00000034  4800      LDR         R1,=0xF0000008
 00000036  42C8      CMN         R0,R1
 00000038  D201      BCS         L_37  ; T=0x0000003E
  209:                 return(0);
 0000003A  2000      MOV         R0,#0x0
 0000003C  E000      B           L_42  ; T=0x00000040
  212:     }
 0000003E          L_37:
  213:     return(1);
 0000003E  2001      MOV         R0,#0x1
  214: }
 00000040          L_42:
 00000040  4770      BX          R14
 00000042          ENDP ; 'fat_isEocMarker?T'


*** CODE SEGMENT '?PR?fat_giveEocMarker?T?fat':
  226: euint32 fat_giveEocMarker(FileSystem *fs)
 00000000  1C01      MOV         R1,R0 ; fs
 00000002  ---- Variable 'fs' assigned to Register 'R1' ----
  228:     switch(fs->type)
 00000002  1C08      MOV         R0,R1 ; fs
 00000004  303C      ADD         R0,#0x3C
 00000006  7800      LDRB        R0,[R0,#0x0]
 00000008  2802      CMP         R0,#0x2
 0000000A  D005      BEQ         L_47  ; T=0x00000018
 0000000C  2803      CMP         R0,#0x3
 0000000E  D005      BEQ         L_48  ; T=0x0000001C
 00000010  2801      CMP         R0,#0x1
 00000012  D105      BNE         L_45  ; T=0x00000020
  230:         case FAT12:
 00000014          L_46:
  231:             return(0xFFF);
 00000014  4800      LDR         R0,=0xFFF
 00000016  E004      B           L_49  ; T=0x00000022
  233:         case FAT16:
 00000018          L_47:
  234:             return(0xFFFF);
 00000018  4800      LDR         R0,=0xFFFF
 0000001A  E002      B           L_49  ; T=0x00000022
  236:         case FAT32:
 0000001C          L_48:
  237:             return(0x0FFFFFFF);
 0000001C  4800      LDR         R0,=0xFFFFFFF
 0000001E  E000      B           L_49  ; T=0x00000022
  239:     }
 00000020          L_45:
  240:     return(0);
 00000020  2000      MOV         R0,#0x0
  241: }
 

⌨️ 快捷键说明

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