?? fdt.lst
字號:
1 .file "fdt.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
83 .global _Z15ReadRootFDTInfojP4_FDT
85 _Z15ReadRootFDTInfojP4_FDT:
1:fdt.c **** /*
2:fdt.c **** ;**************************************************************************************************
3:fdt.c **** ;* Copyright (c) 2006 by JiaoJinXing.
4:fdt.c **** ;* All rights reserved.
5:fdt.c **** ;*
6:fdt.c **** ;*---- 文件信息 -----------------------------------------------------------------------------------
7:fdt.c **** ;* 文 件 名 : fdt.c
8:fdt.c **** ;* 創(chuàng) 建 人 : 焦進星
9:fdt.c **** ;* 描 述 : 根目錄項文件
10:fdt.c **** ;*
11:fdt.c **** ;*---- 歷史版本信息 -------------------------------------------------------------------------------
12:fdt.c **** ;* 日 期 : 2008年 12 月 15 日
13:fdt.c **** ;* 創(chuàng) 建 人 : 焦進星
14:fdt.c **** ;* 描 述 : 建立版本 V1.0.0
15:fdt.c **** ;*
16:fdt.c **** ;*---- 聯系方式 -----------------------------------------------------------------------------------
17:fdt.c **** ;* Email : wyoujtg@163.com
18:fdt.c **** ;* Web : http://wyoujtg.blog.163.com
19:fdt.c **** ;**************************************************************************************************
20:fdt.c **** ;*/
21:fdt.c ****
22:fdt.c **** #include "minifs.h"
23:fdt.c ****
24:fdt.c **** /*
25:fdt.c **** ;**************************************************************************************************
26:fdt.c **** ;* 函數名稱 : ReadRootFDTInfo
27:fdt.c **** ;* 描 述 : 讀取指定根目錄項
28:fdt.c **** ;* 輸 入 : FDTIndex: 目錄項索引, pFDT: 目錄項指針
29:fdt.c **** ;*
30:fdt.c **** ;* 輸 出 : TRUE OR FALSE
31:fdt.c **** ;**************************************************************************************************
32:fdt.c **** ;*/
33:fdt.c **** uint8 ReadRootFDTInfo(uint16 FDTIndex, FDT *pFDT)
34:fdt.c **** {
87 .LM1:
88 /* prologue: frame size=0 */
89 0000 EF92 push r14
90 0002 FF92 push r15
91 0004 0F93 push r16
92 0006 1F93 push r17
93 0008 CF93 push r28
94 000a DF93 push r29
95 /* prologue end (size=6) */
96 000c AC01 movw r20,r24
97 000e 7B01 movw r14,r22
98 .LBB2:
99 .LBB3:
35:fdt.c **** uint16 SecIndex, ByteOffset;
36:fdt.c **** uint8 *Buf;
37:fdt.c ****
38:fdt.c **** if (FDTIndex >= MAX_FDT_NUM) /* 索引無效 */
101 .LM2:
102 0010 8091 0000 lds r24,FS_RootEntCnt
103 0014 9091 0000 lds r25,(FS_RootEntCnt)+1
104 0018 4817 cp r20,r24
105 001a 5907 cpc r21,r25
106 001c 18F0 brlo .L2
39:fdt.c **** {
40:fdt.c **** return FALSE;
108 .LM3:
109 001e 60E0 ldi r22,lo8(0)
110 0020 70E0 ldi r23,hi8(0)
111 0022 43C0 rjmp .L1
112 .L2:
41:fdt.c **** }
42:fdt.c ****
43:fdt.c **** SecIndex = FDTIndex*32 / 512 + FS_RootDirStartSec;/* 扇區(qū)號 */
114 .LM4:
115 0024 75E0 ldi r23,5
116 0026 440F 1: lsl r20
117 0028 551F rol r21
118 002a 7A95 dec r23
119 002c E1F7 brne 1b
120 002e 9A01 movw r18,r20
121 0030 232F mov r18,r19
122 0032 3327 clr r19
123 0034 2695 lsr r18
124 0036 8091 0000 lds r24,FS_RootDirStartSec
125 003a 9091 0000 lds r25,(FS_RootDirStartSec)+1
126 003e 280F add r18,r24
127 0040 391F adc r19,r25
44:fdt.c **** ByteOffset = FDTIndex*32 % 512; /* 字節(jié)偏移 */
129 .LM5:
130 0042 8A01 movw r16,r20
131 0044 1170 andi r17,hi8(511)
45:fdt.c ****
46:fdt.c **** Buf = OpenSector(SecIndex); /* 打開扇區(qū) */
133 .LM6:
134 0046 C901 movw r24,r18
135 0048 AA27 clr r26
136 004a BB27 clr r27
137 004c BC01 movw r22,r24
138 004e CD01 movw r24,r26
139 0050 0E94 0000 call _Z10OpenSectorm
140 0054 EC01 movw r28,r24
47:fdt.c **** if (Buf == NULL)
142 .LM7:
143 0056 0097 sbiw r24,0
144 0058 11F4 brne .L3
48:fdt.c **** {
49:fdt.c **** return FALSE;
146 .LM8:
147 005a BC01 movw r22,r24
148 005c 26C0 rjmp .L1
149 .L3:
50:fdt.c **** }
51:fdt.c ****
52:fdt.c **** Buf += ByteOffset; /* 調整扇區(qū)讀寫指針 */
151 .LM9:
152 005e C00F add r28,r16
153 0060 D11F adc r29,r17
53:fdt.c ****
54:fdt.c **** CopyNbyte(pFDT->Name, Buf, 11); /* 名字 */
155 .LM10:
156 0062 4BE0 ldi r20,lo8(11)
157 0064 50E0 ldi r21,hi8(11)
158 0066 BE01 movw r22,r28
159 0068 C701 movw r24,r14
160 006a 0E94 0000 call _Z9CopyNbytePvS_j
55:fdt.c ****
56:fdt.c **** pFDT->FstClusLO = GET_UINT16(Buf, 26); /* 首簇號 */
162 .LM11:
163 006e 8A8D ldd r24,Y+26
164 0070 282F mov r18,r24
165 0072 3327 clr r19
166 0074 8B8D ldd r24,Y+27
167 0076 9927 clr r25
168 0078 982F mov r25,r24
169 007a 8827 clr r24
170 007c 282B or r18,r24
171 007e 392B or r19,r25
172 0080 F701 movw r30,r14
173 0082 2487 std Z+12,r18
174 0084 3587 std Z+13,r19
57:fdt.c ****
58:fdt.c **** pFDT->FileSize = GET_UINT16(Buf, 28); /* 大小 */
176 .LM12:
177 0086 8C8D ldd r24,Y+28
178 0088 282F mov r18,r24
179 008a 3327 clr r19
180 008c 8D8D ldd r24,Y+29
181 008e 9927 clr r25
182 0090 982F mov r25,r24
183 0092 8827 clr r24
184 0094 282B or r18,r24
185 0096 392B or r19,r25
186 0098 C901 movw r24,r18
187 009a AA27 clr r26
188 009c BB27 clr r27
189 009e 8687 std Z+14,r24
190 00a0 9787 std Z+15,r25
191 00a2 A08B std Z+16,r26
192 00a4 B18B std Z+17,r27
59:fdt.c ****
60:fdt.c **** return TRUE;
194 .LM13:
195 00a6 61E0 ldi r22,lo8(1)
196 00a8 70E0 ldi r23,hi8(1)
197 .L1:
198 .LBE3:
199 .LBE2:
61:fdt.c **** }
201 .LM14:
202 00aa CB01 movw r24,r22
203 /* epilogue: frame size=0 */
204 00ac DF91 pop r29
205 00ae CF91 pop r28
206 00b0 1F91 pop r17
207 00b2 0F91 pop r16
208 00b4 FF90 pop r15
209 00b6 EF90 pop r14
210 00b8 0895 ret
211 /* epilogue end (size=7) */
212 /* function uint8 ReadRootFDTInfo(uint16, FDT*) size 94 (81) */
220 .global _Z16WriteRootFDTInfojP4_FDT
222 _Z16WriteRootFDTInfojP4_FDT:
62:fdt.c ****
63:fdt.c **** /*
64:fdt.c **** ;**************************************************************************************************
65:fdt.c **** ;* 函數名稱 : WriteRootFDTInfo
66:fdt.c **** ;* 描 述 : 寫指定根目錄項
67:fdt.c **** ;* 輸 入 : FDTIndex: 目錄項索引, pFDT: 目錄項指針
68:fdt.c **** ;*
69:fdt.c **** ;* 輸 出 : TRUE OR FALSE
70:fdt.c **** ;**************************************************************************************************
71:fdt.c **** ;*/
72:fdt.c **** uint8 WriteRootFDTInfo(uint16 FDTIndex, FDT *pFDT)
73:fdt.c **** {
224 .LM15:
225 /* prologue: frame size=0 */
226 00ba EF92 push r14
227 00bc FF92 push r15
228 00be 0F93 push r16
229 00c0 1F93 push r17
230 00c2 CF93 push r28
231 00c4 DF93 push r29
232 /* prologue end (size=6) */
233 00c6 AC01 movw r20,r24
234 00c8 7B01 movw r14,r22
235 .LBB4:
236 .LBB5:
74:fdt.c **** uint16 SecIndex, ByteOffset;
75:fdt.c **** uint8 *Buf;
76:fdt.c ****
77:fdt.c **** if (FDTIndex >= MAX_FDT_NUM) /* 索引無效 */
238 .LM16:
239 00ca 8091 0000 lds r24,FS_RootEntCnt
240 00ce 9091 0000 lds r25,(FS_RootEntCnt)+1
241 00d2 4817 cp r20,r24
242 00d4 5907 cpc r21,r25
243 00d6 18F0 brlo .L5
78:fdt.c **** {
79:fdt.c **** return FALSE;
245 .LM17:
246 00d8 80E0 ldi r24,lo8(0)
247 00da 90E0 ldi r25,hi8(0)
248 00dc 3AC0 rjmp .L4
249 .L5:
80:fdt.c **** }
81:fdt.c ****
82:fdt.c **** SecIndex = FDTIndex*32 / 512 + FS_RootDirStartSec;/* 扇區(qū)號 */
251 .LM18:
252 00de C5E0 ldi r28,5
253 00e0 440F 1: lsl r20
254 00e2 551F rol r21
255 00e4 CA95 dec r28
256 00e6 E1F7 brne 1b
257 00e8 9A01 movw r18,r20
258 00ea 232F mov r18,r19
259 00ec 3327 clr r19
260 00ee 2695 lsr r18
261 00f0 8091 0000 lds r24,FS_RootDirStartSec
262 00f4 9091 0000 lds r25,(FS_RootDirStartSec)+1
263 00f8 280F add r18,r24
264 00fa 391F adc r19,r25
83:fdt.c **** ByteOffset = FDTIndex*32 % 512; /* 字節(jié)偏移 */
266 .LM19:
267 00fc 8A01 movw r16,r20
268 00fe 1170 andi r17,hi8(511)
84:fdt.c ****
85:fdt.c **** Buf = OpenSector(SecIndex); /* 打開扇區(qū) */
270 .LM20:
271 0100 C901 movw r24,r18
272 0102 AA27 clr r26
273 0104 BB27 clr r27
274 0106 BC01 movw r22,r24
275 0108 CD01 movw r24,r26
276 010a 0E94 0000 call _Z10OpenSectorm
277 010e EC01 movw r28,r24
86:fdt.c **** if (Buf == NULL)
279 .LM21:
280 0110 0097 sbiw r24,0
281 0112 F9F0 breq .L4
87:fdt.c **** {
88:fdt.c **** return FALSE;
89:fdt.c **** }
90:fdt.c ****
91:fdt.c **** Buf += ByteOffset; /* 調整扇區(qū)讀寫指針 */
283 .LM22:
284 0114 C00F add r28,r16
285 0116 D11F adc r29,r17
92:fdt.c ****
93:fdt.c **** CopyNbyte(Buf, pFDT->Name, 11); /* 名字 */
287 .LM23:
288 0118 4BE0 ldi r20,lo8(11)
289 011a 50E0 ldi r21,hi8(11)
290 011c B701 movw r22,r14
291 011e CE01 movw r24,r28
292 0120 0E94 0000 call _Z9CopyNbytePvS_j
94:fdt.c ****
95:fdt.c **** SET_UINT16(Buf, 26, pFDT->FstClusLO); /* 首簇號 */
294 .LM24:
295 0124 F701 movw r30,r14
296 0126 8485 ldd r24,Z+12
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -