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

📄 file.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:

 0000013E  9801      LDR         R0,[R13,#0x4] ; size_left
 00000140  2800      CMP         R0,#0x0
 00000142  D886      BHI         L_7  ; T=0x00000052
   84:     return(bytes_read);
 00000144  9800      LDR         R0,[R13,#0x0] ; bytes_read
 00000146            ; SCOPE-END
   85: }
 00000146          L_2:
 00000146  B004      ADD         R13,#0x10
 00000148  BCF0      POP         {R4-R7}
 0000014A  BC08      POP         {R3}
 0000014C  4718      BX          R3
 0000014E          ENDP ; 'file_fread?T'


*** CODE SEGMENT '?PR?file_read?T?file':
   94: euint32 file_read(File *file,euint32 size,euint8 *buf)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C15      MOV         R5,R2 ; buf
 00000004  ---- Variable 'buf' assigned to Register 'R5' ----
 00000004  1C0B      MOV         R3,R1 ; size
 00000006  ---- Variable 'size' assigned to Register 'R3' ----
 00000006  1C04      MOV         R4,R0 ; file
 00000008  ---- Variable 'file' assigned to Register 'R4' ----
   95: {
 00000008            ; SCOPE-START
   98:     r=file_fread(file,file->FilePtr,size,buf);
 00000008  1C20      MOV         R0,R4 ; file
 0000000A  6C81      LDR         R1,[R0,#0x48]
 0000000C  1C20      MOV         R0,R4 ; file
 0000000E  1C1A      MOV         R2,R3 ; size
 00000010  1C2B      MOV         R3,R5 ; buf
 00000012  F7FF      BL          file_fread?T  ; T=0x0001  (1)
 00000014  FFF5      BL          file_fread?T  ; T=0x0001  (2)
 00000016  1C01      MOV         R1,R0 ; r
 00000018  ---- Variable 'r' assigned to Register 'R1' ----
   99:     file->FilePtr+=r;
 00000018  1C0B      MOV         R3,R1 ; r
 0000001A  1C20      MOV         R0,R4 ; file
 0000001C  6C82      LDR         R2,[R0,#0x48]
 0000001E  18D2      ADD         R2,R3 ; r
 00000020  1C20      MOV         R0,R4 ; file
 00000022  6482      STR         R2,[R0,#0x48]
  100:     return(r);
 00000024  1C08      MOV         R0,R1 ; r
 00000026            ; SCOPE-END
  101: }
 00000026  BC30      POP         {R4-R5}
 00000028  BC08      POP         {R3}
 0000002A  4718      BX          R3
 0000002C          ENDP ; 'file_read?T'


*** CODE SEGMENT '?PR?file_write?T?file':
  110: euint32 file_write(File *file, euint32 size,euint8 *buf)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C15      MOV         R5,R2 ; buf
 00000004  ---- Variable 'buf' assigned to Register 'R5' ----
 00000004  1C0B      MOV         R3,R1 ; size
 00000006  ---- Variable 'size' assigned to Register 'R3' ----
 00000006  1C04      MOV         R4,R0 ; file
 00000008  ---- Variable 'file' assigned to Register 'R4' ----
  111: {
 00000008            ; SCOPE-START
  114:     r=file_fwrite(file,file->FilePtr,size,buf);
 00000008  1C20      MOV         R0,R4 ; file
 0000000A  6C81      LDR         R1,[R0,#0x48]
 0000000C  1C20      MOV         R0,R4 ; file
 0000000E  1C1A      MOV         R2,R3 ; size
 00000010  1C2B      MOV         R3,R5 ; buf
ARM COMPILER V2.42,  file                                                                  27/03/06  10:45:50  PAGE 14  

 00000012  F7FF      BL          file_fwrite?T  ; T=0x0001  (1)
 00000014  FFF5      BL          file_fwrite?T  ; T=0x0001  (2)
 00000016  1C01      MOV         R1,R0 ; r
 00000018  ---- Variable 'r' assigned to Register 'R1' ----
  115:     file->FilePtr+=r;
 00000018  1C0B      MOV         R3,R1 ; r
 0000001A  1C20      MOV         R0,R4 ; file
 0000001C  6C82      LDR         R2,[R0,#0x48]
 0000001E  18D2      ADD         R2,R3 ; r
 00000020  1C20      MOV         R0,R4 ; file
 00000022  6482      STR         R2,[R0,#0x48]
  116:     return(r);
 00000024  1C08      MOV         R0,R1 ; r
 00000026            ; SCOPE-END
  117: }
 00000026  BC30      POP         {R4-R5}
 00000028  BC08      POP         {R3}
 0000002A  4718      BX          R3
 0000002C          ENDP ; 'file_write?T'


*** CODE SEGMENT '?PR?file_setpos?T?file':
  126: esint16 file_setpos(File *file,euint32 pos)
 00000000  B410      PUSH        {R4}
 00000002  1C0B      MOV         R3,R1 ; pos
 00000004  ---- Variable 'pos' assigned to Register 'R3' ----
 00000004  1C02      MOV         R2,R0 ; file
 00000006  ---- Variable 'file' assigned to Register 'R2' ----
  128:     if(pos<=file->FileSize){
 00000006  1C10      MOV         R0,R2 ; file
 00000008  6CC4      LDR         R4,[R0,#0x4C]
 0000000A  1C18      MOV         R0,R3 ; pos
 0000000C  42A0      CMP         R0,R4 ; pos
 0000000E  D804      BHI         L_19  ; T=0x0000001A
  129:         file->FilePtr=pos;
 00000010  1C19      MOV         R1,R3 ; pos
 00000012  1C10      MOV         R0,R2 ; file
 00000014  6481      STR         R1,[R0,#0x48]
  130:         return(0);
 00000016  2000      MOV         R0,#0x0
 00000018  E000      B           L_20  ; T=0x0000001C
  131:     }
 0000001A          L_19:
  132:     return(-1);
 0000001A  4800      LDR         R0,=0xFFFFFFFF
  133: }
 0000001C          L_20:
 0000001C  BC10      POP         {R4}
 0000001E  4770      BX          R14
 00000020          ENDP ; 'file_setpos?T'


*** CODE SEGMENT '?PR?file_fwrite?T?file':
  142: euint32 file_fwrite(File* file,euint32 offset,euint32 size,euint8* buf)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C1E      MOV         R6,R3 ; buf
 00000004  ---- Variable 'buf' assigned to Register 'R6' ----
 00000004  1C17      MOV         R7,R2 ; size
 00000006  ---- Variable 'size' assigned to Register 'R7' ----
 00000006  1C0D      MOV         R5,R1 ; offset
 00000008  ---- Variable 'offset' assigned to Register 'R5' ----
 00000008  1C04      MOV         R4,R0 ; file
 0000000A  ---- Variable 'file' assigned to Register 'R4' ----
 0000000A  B085      SUB         R13,#0x14
  143: {
 0000000C            ; SCOPE-START
  146:     euint32 size_left=size,bytes_written=0;
 0000000C  1C38      MOV         R0,R7 ; size
 0000000E  9001      STR         R0,[R13,#0x4] ; size_left
 00000010  2000      MOV         R0,#0x0
ARM COMPILER V2.42,  file                                                                  27/03/06  10:45:50  PAGE 15  

 00000012  9002      STR         R0,[R13,#0x8] ; bytes_written
  148:     euint32 coffset=offset;
 00000014  1C28      MOV         R0,R5 ; offset
 00000016  9003      STR         R0,[R13,#0xC] ; coffset
  152:     if(!file_getAttr(file,FILE_STATUS_OPEN) || !file_getAttr(file,FILE_STATUS_WRITE))return(0);
 00000018  1C20      MOV         R0,R4 ; file
 0000001A  2100      MOV         R1,#0x0
 0000001C  F7FF      BL          file_getAttr?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          file_getAttr?T  ; T=0x0001  (2)
 00000020  0600      LSL         R0,R0,#0x18 ; file_getAttr?T
 00000022  0E00      LSR         R0,R0,#0x18
 00000024  2800      CMP         R0,#0x0
 00000026  D007      BEQ         L_22  ; T=0x00000038
 00000028  1C20      MOV         R0,R4 ; file
 0000002A  2101      MOV         R1,#0x1
 0000002C  F7FF      BL          file_getAttr?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          file_getAttr?T  ; T=0x0001  (2)
 00000030  0600      LSL         R0,R0,#0x18 ; file_getAttr?T
 00000032  0E00      LSR         R0,R0,#0x18
 00000034  2800      CMP         R0,#0x0
 00000036  D101      BNE         L_21  ; T=0x0000003C
 00000038          L_22:
 00000038  2000      MOV         R0,#0x0
 0000003A  E0B9      B           L_23  ; T=0x000001B0
 0000003C          L_21:
  154:     if(offset>file->FileSize){
 0000003C  1C20      MOV         R0,R4 ; file
 0000003E  6CC0      LDR         R0,[R0,#0x4C]
 00000040  1C29      MOV         R1,R5 ; offset
 00000042  4281      CMP         R1,R0 ; offset
 00000044  D900      BLS         L_24  ; T=0x00000048
  155:         offset=file->FileSize;
 00000046  1C05      MOV         R5,R0 ; offset
  156:     }
 00000048          L_24:
  158:     need_cluster = file_requiredCluster(file,offset,size);
 00000048  1C20      MOV         R0,R4 ; file
 0000004A  1C29      MOV         R1,R5 ; offset
 0000004C  1C3A      MOV         R2,R7 ; size
 0000004E  F7FF      BL          file_requiredCluster?T  ; T=0x0001  (1)
 00000050  FFD7      BL          file_requiredCluster?T  ; T=0x0001  (2)
 00000052  1C01      MOV         R1,R0 ; need_cluster
 00000054  ---- Variable 'need_cluster' assigned to Register 'R1' ----
  160:     if(need_cluster){
 00000054  1C08      MOV         R0,R1 ; need_cluster
 00000056  2800      CMP         R0,#0x0 ; need_cluster
 00000058  D00D      BEQ         L_30  ; T=0x00000076
  161:         if(fat_allocClusterChain(file->fs,&(file->Cache),need_cluster+CLUSTER_PREALLOC_FILE)!=0){
 0000005A  1C20      MOV         R0,R4 ; file
 0000005C  6A80      LDR         R0,[R0,#0x28]
 0000005E  1C0A      MOV         R2,R1 ; need_cluster
 00000060  3202      ADD         R2,#0x2
 00000062  1C21      MOV         R1,R4 ; file
 00000064  312C      ADD         R1,#0x2C
 00000066  F7FF      BL          fat_allocClusterChain?T  ; T=0x0001  (1)
 00000068  FFCB      BL          fat_allocClusterChain?T  ; T=0x0001  (2)
 0000006A  0400      LSL         R0,R0,#0x10 ; fat_allocClusterChain?T
 0000006C  1400      ASR         R0,R0,#0x10
 0000006E  2800      CMP         R0,#0x0
 00000070  D001      BEQ         L_30  ; T=0x00000076
  162:             return(0);
 00000072  2000      MOV         R0,#0x0
 00000074  E09C      B           L_23  ; T=0x000001B0
  166:     while(size_left>0){
 00000076          L_30:
 00000076  E08B      B           L_27  ; T=0x00000190
ARM COMPILER V2.42,  file                                                                  27/03/06  10:45:50  PAGE 16  

 00000078          L_29:
  168:         cclus = coffset/(512*file->fs->volumeId.SectorsPerCluster);
 00000078  1C20      MOV         R0,R4 ; file
 0000007A  6A87      LDR         R7,[R0,#0x28]
 0000007C  79BA      LDRB        R2,[R7,#0x6]
 0000007E  1C11      MOV         R1,R2
 00000080  0249      LSL         R1,R1,#0x9
 00000082  9803      LDR         R0,[R13,#0xC] ; coffset
 00000084  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000086  FFBC      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000088  1C08      MOV         R0,R1
 0000008A  1C03      MOV         R3,R0 ; cclus
 0000008C  ---- Variable 'cclus' assigned to Register 'R3' ----
  169:         csec = (coffset/(512))%file->fs->volumeId.SectorsPerCluster;
 0000008C  1C11      MOV         R1,R2
 0000008E  9803      LDR         R0,[R13,#0xC] ; coffset
 00000090  0A40      LSR         R0,R0,#0x9
 00000092  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000094  FFB5      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000096  1C01      MOV         R1,R0
 00000098  9100      STR         R1,[R13,#0x0] ; csec
  170:         cbyte = coffset%512;
 0000009A  9A03      LDR         R2,[R13,#0xC] ; coffset
 0000009C  4800      LDR         R0,=0x1FF
 0000009E  4002      AND         R2,R0
 000000A0  ---- Variable 'cbyte' assigned to Register 'R2' ----
  172:         if(cbyte!=0 || size_left<512){
 000000A0  1C11      MOV         R1,R2 ; cbyte
 000000A2  2900      CMP         R1,#0x0 ; cbyte
 000000A4  D103      BNE         L_32  ; T=0x000000AE
 000000A6  9901      LDR         R1,[R13,#0x4] ; size_left
 000000A8  4A80      LDR         R2,=0x200
 000000AA  4291      CMP         R1,R2
 000000AC  D211      BCS         L_31  ; T=0x000000D2
 000000AE          L_32:
  173:             btr = 512-(coffset%512)>=size_left?size_left:512-(coffset%512);
 000000AE  9A03      LDR         R2,[R13,#0xC] ; coffset
 000000B0  4002      AND         R2,R0
 000000B2  4880      LDR         R0,=0x200
 000000B4  1A81      SUB         R1,R0,R2
 000000B6  9A01      LDR         R2,[R13,#0x4] ; size_left
 000000B8  4291      CMP         R1,R2
 000000BA  D301      BCC         L_33  ; T=0x000000C0
 000000BC  9901      LDR         R1,[R13,#0x4] ; size_left
 000000BE  E003      B           L_34  ; T=0x000000C8
 000000C0          L_33:
 000000C0  9A03      LDR         R2,[R13,#0xC] ; coffset
 000000C2  4800      LDR         R1,=0x1FF
 000000C4  400A      AND         R2,R1
 000000C6  1A81      SUB         R1,R0,R2
 000000C8          L_34:

⌨️ 快捷键说明

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