📄 ls.lst
字号:
00000022 FFEE BL ls_isValidFileEntry?T ; T=0x0001 (2)
00000024 0600 LSL R0,R0,#0x18 ; ls_isValidFileEntry?T
00000026 1600 ASR R0,R0,#0x18
00000028 2800 CMP R0,#0x0
0000002A D0EB BEQ L_7 ; T=0x00000004
64: dlist->cEntry++;
0000002C 1C20 MOV R0,R4 ; dlist
0000002E 3004 ADD R0,#0x4
00000030 8801 LDRH R1,[R0,#0x0]
00000032 3101 ADD R1,#0x1
00000034 8001 STRH R1,[R0,#0x0]
65: return(0);
00000036 2000 MOV R0,#0x0
66: }
00000038 L_12:
00000038 BC10 POP {R4}
0000003A BC08 POP {R3}
0000003C 4718 BX R3
0000003E ENDP ; 'ls_getNext?T'
*** CODE SEGMENT '?PR?ls_getRealDirEntry?T?ls':
69: esint8 ls_getRealDirEntry(DirList *dlist)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; dlist
00000004 ---- Variable 'dlist' assigned to Register 'R5' ----
70: {
00000004 ; SCOPE-START
73: if(dlist->Cache.FirstCluster<=1)return(-1);
00000004 1C28 MOV R0,R5 ; dlist
00000006 6A80 LDR R0,[R0,#0x28]
00000008 2801 CMP R0,#0x1
0000000A D801 BHI L_13 ; T=0x00000010
0000000C 4800 LDR R0,=0xFFFFFFFF
0000000E E03E B L_14 ; T=0x0000008E
00000010 L_13:
75: if(fat_LogicToDiscCluster(dlist->fs,
00000010 1C28 MOV R0,R5 ; dlist
00000012 6803 LDR R3,[R0,#0x0] ; dlist
00000014 7998 LDRB R0,[R3,#0x6]
00000016 1C01 MOV R1,R0
00000018 0109 LSL R1,R1,#0x4
0000001A 1C28 MOV R0,R5 ; dlist
0000001C 88C0 LDRH R0,[R0,#0x6]
0000001E F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000020 FFEF BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000022 1C08 MOV R0,R1
00000024 1C02 MOV R2,R0
ARM COMPILER V2.42, ls 27/03/06 10:45:51 PAGE 7
00000026 1C18 MOV R0,R3
00000028 1C29 MOV R1,R5 ; dlist
0000002A 311C ADD R1,#0x1C
0000002C F7FF BL fat_LogicToDiscCluster?T ; T=0x0001 (1)
0000002E FFE8 BL fat_LogicToDiscCluster?T ; T=0x0001 (2)
00000030 2800 CMP R0,#0x0 ; fat_LogicToDiscCluster?T
00000032 D001 BEQ L_15 ; T=0x00000038
78: return(-1);
00000034 4800 LDR R0,=0xFFFFFFFF
00000036 E02A B L_14 ; T=0x0000008E
79: }
00000038 L_15:
81: buf = part_getSect(dlist->fs->part,
00000038 1C28 MOV R0,R5 ; dlist
0000003A 6800 LDR R0,[R0,#0x0] ; dlist
0000003C 1C29 MOV R1,R5 ; dlist
0000003E 6A49 LDR R1,[R1,#0x24]
00000040 F7FF BL fs_clusterToSector?T ; T=0x0001 (1)
00000042 FFDE BL fs_clusterToSector?T ; T=0x0001 (2)
00000044 1C03 MOV R3,R0
00000046 1C28 MOV R0,R5 ; dlist
00000048 88C0 LDRH R0,[R0,#0x6]
0000004A 2110 MOV R1,#0x10
0000004C F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
0000004E FFD8 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000050 1C08 MOV R0,R1
00000052 1C29 MOV R1,R5 ; dlist
00000054 680A LDR R2,[R1,#0x0] ; dlist
00000056 7991 LDRB R1,[R2,#0x6]
00000058 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
0000005A FFD2 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
0000005C 1C01 MOV R1,R0
0000005E 1859 ADD R1,R3,R1 ; fs_clusterToSector?T
00000060 6810 LDR R0,[R2,#0x0]
00000062 2201 MOV R2,#0x1
00000064 F7FF BL part_getSect?T ; T=0x0001 (1)
00000066 FFCC BL part_getSect?T ; T=0x0001 (2)
00000068 1C04 MOV R4,R0 ; buf
0000006A ---- Variable 'buf' assigned to Register 'R4' ----
86: ls_fileEntryToDirListEntry(dlist,buf,32*(dlist->rEntry%16));
0000006A 1C28 MOV R0,R5 ; dlist
0000006C 88C0 LDRH R0,[R0,#0x6]
0000006E 2110 MOV R1,#0x10
00000070 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000072 FFC6 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000074 1C01 MOV R1,R0
00000076 014A LSL R2,R1,#0x5
00000078 1C28 MOV R0,R5 ; dlist
0000007A 1C21 MOV R1,R4 ; buf
0000007C F7FF BL ls_fileEntryToDirListEntry?T ; T=0x0001 (1)
0000007E FFC0 BL ls_fileEntryToDirListEntry?T ; T=0x0001 (2)
88: part_relSect(dlist->fs->part,buf);
00000080 1C28 MOV R0,R5 ; dlist
00000082 6800 LDR R0,[R0,#0x0] ; dlist
00000084 6800 LDR R0,[R0,#0x0]
00000086 1C21 MOV R1,R4 ; buf
00000088 F7FF BL part_relSect?T ; T=0x0001 (1)
0000008A FFBA BL part_relSect?T ; T=0x0001 (2)
90: return(0);
0000008C 2000 MOV R0,#0x0
0000008E ; SCOPE-END
91: }
0000008E L_14:
0000008E BC30 POP {R4-R5}
00000090 BC08 POP {R3}
00000092 4718 BX R3
ARM COMPILER V2.42, ls 27/03/06 10:45:51 PAGE 8
00000094 ENDP ; 'ls_getRealDirEntry?T'
*** CODE SEGMENT '?PR?ls_getRootAreaEntry?T?ls':
94: esint8 ls_getRootAreaEntry(DirList *dlist)
00000000 B530 PUSH {R4-R5,LR}
00000002 1C05 MOV R5,R0 ; dlist
00000004 ---- Variable 'dlist' assigned to Register 'R5' ----
95: {
00000004 ; SCOPE-START
96: euint8 *buf=0;
00000004 2400 MOV R4,#0x0
00000006 ---- Variable 'buf' assigned to Register 'R4' ----
98: if((dlist->fs->type != FAT12) && (dlist->fs->type != FAT16))return(-1);
00000006 1C28 MOV R0,R5 ; dlist
00000008 6801 LDR R1,[R0,#0x0] ; dlist
0000000A 1C08 MOV R0,R1
0000000C 303C ADD R0,#0x3C
0000000E 7800 LDRB R0,[R0,#0x0]
00000010 2801 CMP R0,#0x1
00000012 D003 BEQ L_16 ; T=0x0000001C
00000014 2802 CMP R0,#0x2
00000016 D001 BEQ L_16 ; T=0x0000001C
00000018 4800 LDR R0,=0xFFFFFFFF
0000001A E02B B L_17 ; T=0x00000074
0000001C L_16:
99: if(dlist->rEntry>=dlist->fs->volumeId.RootEntryCount)return(-1);
0000001C 8988 LDRH R0,[R1,#0xC]
0000001E 1C02 MOV R2,R0
00000020 1C28 MOV R0,R5 ; dlist
00000022 88C1 LDRH R1,[R0,#0x6]
00000024 1C08 MOV R0,R1
00000026 4290 CMP R0,R2
00000028 D301 BCC L_18 ; T=0x0000002E
0000002A 4800 LDR R0,=0xFFFFFFFF
0000002C E022 B L_17 ; T=0x00000074
0000002E L_18:
101: buf = part_getSect(dlist->fs->part,
0000002E 1C08 MOV R0,R1
00000030 2110 MOV R1,#0x10
00000032 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000034 FFE5 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000036 1C08 MOV R0,R1
00000038 1C02 MOV R2,R0
0000003A 1C28 MOV R0,R5 ; dlist
0000003C 6800 LDR R0,[R0,#0x0] ; dlist
0000003E 6AC1 LDR R1,[R0,#0x2C]
00000040 1889 ADD R1,R2
00000042 1C28 MOV R0,R5 ; dlist
00000044 6800 LDR R0,[R0,#0x0] ; dlist
00000046 6800 LDR R0,[R0,#0x0]
00000048 2201 MOV R2,#0x1
0000004A F7FF BL part_getSect?T ; T=0x0001 (1)
0000004C FFD9 BL part_getSect?T ; T=0x0001 (2)
0000004E 1C04 MOV R4,R0 ; buf
105: ls_fileEntryToDirListEntry(dlist,buf,32*(dlist->rEntry%16));
00000050 1C28 MOV R0,R5 ; dlist
00000052 88C0 LDRH R0,[R0,#0x6]
00000054 2110 MOV R1,#0x10
00000056 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000058 FFD3 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
0000005A 1C01 MOV R1,R0
0000005C 014A LSL R2,R1,#0x5
0000005E 1C28 MOV R0,R5 ; dlist
00000060 1C21 MOV R1,R4 ; buf
00000062 F7FF BL ls_fileEntryToDirListEntry?T ; T=0x0001 (1)
00000064 FFCD BL ls_fileEntryToDirListEntry?T ; T=0x0001 (2)
106: part_relSect(dlist->fs->part,buf);
ARM COMPILER V2.42, ls 27/03/06 10:45:51 PAGE 9
00000066 1C28 MOV R0,R5 ; dlist
00000068 6800 LDR R0,[R0,#0x0] ; dlist
0000006A 6800 LDR R0,[R0,#0x0]
0000006C 1C21 MOV R1,R4 ; buf
0000006E F7FF BL part_relSect?T ; T=0x0001 (1)
00000070 FFC7 BL part_relSect?T ; T=0x0001 (2)
107: return(0);
00000072 2000 MOV R0,#0x0
00000074 ; SCOPE-END
108: }
00000074 L_17:
00000074 BC30 POP {R4-R5}
00000076 BC08 POP {R3}
00000078 4718 BX R3
0000007A ENDP ; 'ls_getRootAreaEntry?T'
*** CODE SEGMENT '?PR?ls_isValidFileEntry?T?ls':
111: esint8 ls_isValidFileEntry(ListDirEntry *entry)
00000000 1C01 MOV R1,R0 ; entry
00000002 ---- Variable 'entry' assigned to Register 'R1' ----
113: if(entry->FileName[0] == 0 || entry->FileName[0] == 0xE5 || entry->FileName[0] == '.')return(0);
00000002 1C08 MOV R0,R1 ; entry
00000004 7800 LDRB R0,[R0,#0x0] ; entry
00000006 2800 CMP R0,#0x0
00000008 D003 BEQ L_20 ; T=0x00000012
0000000A 28E5 CMP R0,#0xE5
0000000C D001 BEQ L_20 ; T=0x00000012
0000000E 282E CMP R0,#0x2E
00000010 D101 BNE L_19 ; T=0x00000016
00000012 L_20:
00000012 2000 MOV R0,#0x0
00000014 E008 B L_21 ; T=0x00000028
00000016 L_19:
114: if((entry->Attribute&0x0F)==0x0F)return(0);
00000016 1C08 MOV R0,R1 ; entry
00000018 7C00 LDRB R0,[R0,#0x10]
0000001A 210F MOV R1,#0xF
0000001C 4008 AND R0,R1
0000001E 280F CMP R0,#0xF
00000020 D101 BNE L_22 ; T=0x00000026
00000022 2000 MOV R0,#0x0
00000024 E000 B L_21 ; T=0x00000028
00000026 L_22:
115: return(1);
00000026 2001 MOV R0,#0x1
116: }
00000028 L_21:
00000028 4770 BX R14
0000002A ENDP ; 'ls_isValidFileEntry?T'
*** CODE SEGMENT '?PR?ls_fileEntryToDirListEntry?T?ls':
119: void ls_fileEntryToDirListEntry(DirList *dlist, euint8* buf, euint16 offset)
00000000 B530 PUSH {R4-R5,LR}
00000002 ---- Variable 'offset' assigned to Register 'R2' ----
00000002 1C0D MOV R5,R1 ; buf
00000004 ---- Variable 'buf' assigned to Register 'R5' ----
00000004 1C04 MOV R4,R0 ; dlist
00000006 ---- Variable 'dlist' assigned to Register 'R4' ----
121: if(offset>480 || offset%32)return;
00000006 1C10 MOV R0,R2 ; offset
00000008 0400 LSL R0,R0,#0x10 ; offset
0000000A 0C00 LSR R0,R0,#0x10
0000000C 4978 LDR R1,=0x1E0
0000000E 4288 CMP R0,R1
00000010 D81C BHI L_25 ; T=0x0000004C
00000012 1C10 MOV R0,R2 ; offset
00000014 0400 LSL R0,R0,#0x10 ; offset
00000016 0C00 LSR R0,R0,#0x10
ARM COMPILER V2.42, ls 27/03/06 10:45:51 PAGE 10
00000018 2120 MOV R1,#0x20
0000001A F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
0000001C FFF1 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
0000001E 1C01 MOV R1,R0
00000020 2900 CMP R1,#0x0
00000022 D113 BNE L_25 ; T=0x0000004C
123: buf+=offset;
00000024 1C10 MOV R0,R2 ; offset
00000026 0400 LSL R0,R0,#0x10 ; offset
00000028 0C00 LSR R0,R0,#0x10
0000002A 182D ADD R5,R0 ; buf
124: memCpy(buf+OFFSET_DE_FILENAME,dlist->currentEntry.FileName,LIST_MAXLENFILENAME);
0000002C 1C28 MOV R0,R5 ; buf
0000002E 1C21 MOV R1,R4 ; dlist
00000030 3108 ADD R1,#0x8
00000032 220C MOV R2,#0xC
00000034 F7FF BL memCpy?T ; T=0x0001 (1)
00000036 FFE4 BL memCpy?T ; T=0x0001 (2)
125: dlist->currentEntry.Attribute = *(buf+OFFSET_DE_ATTRIBUTE);
00000038 1C28 MOV R0,R5 ; buf
0000003A 7AC1 LDRB R1,[R0,#0xB]
0000003C 1C20 MOV R0,R4 ; dlist
0000003E 7601 STRB R1,[R0,#0x18]
126: dlist->currentEntry.FileSize = ex_getb32(buf,OFFSET_DE_FILESIZE);
00000040 1C28 MOV R0,R5 ; buf
00000042 211C MOV R1,#0x1C
00000044 F7FF BL ex_getb32?T ; T=0x0001 (1)
00000046 FFDC BL ex_getb32?T ; T=0x0001 (2)
00000048 1C21 MOV R1,R4 ; dlist
0000004A 6148 STR R0,[R1,#0x14]
127: }
0000004C L_25:
0000004C BC30 POP {R4-R5}
0000004E BC08 POP {R3}
00000050 4718 BX R3
00000052 ENDP ; 'ls_fileEntryToDirListEntry?T'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -