📄 file.lst
字号:
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 + -