?? file.lst
字號:
1 .file "file.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:
80 .lcomm FileManage,27
82 .global _Z7FS_Initv
84 _Z7FS_Initv:
1:file.c **** /*
2:file.c **** ;**************************************************************************************************
3:file.c **** ;* Copyright (c) 2006 by JiaoJinXing.
4:file.c **** ;* All rights reserved.
5:file.c **** ;*
6:file.c **** ;*---- 文件信息 -----------------------------------------------------------------------------------
7:file.c **** ;* 文 件 名 : file.c
8:file.c **** ;* 創 建 人 : 焦進星
9:file.c **** ;* 描 述 : 文件操作文件
10:file.c **** ;*
11:file.c **** ;*---- 歷史版本信息 -------------------------------------------------------------------------------
12:file.c **** ;* 日 期 : 2008年 12 月 15 日
13:file.c **** ;* 創 建 人 : 焦進星
14:file.c **** ;* 描 述 : 建立版本 V1.0.0
15:file.c **** ;*
16:file.c **** ;*---- 聯系方式 -----------------------------------------------------------------------------------
17:file.c **** ;* Email : wyoujtg@163.com
18:file.c **** ;* Web : http://wyoujtg.blog.163.com
19:file.c **** ;**************************************************************************************************
20:file.c **** ;*/
21:file.c ****
22:file.c **** #include "minifs.h"
23:file.c ****
24:file.c **** /*
25:file.c **** ;**************************************************************************************************
26:file.c **** ;* 變量名稱 : FileManageInfo
27:file.c **** ;* 描 述 : 文件管理器
28:file.c **** ;**************************************************************************************************
29:file.c **** ;*/
30:file.c **** static struct FileManageInfo FileManage[MAX_FILE_OPEN];
31:file.c ****
32:file.c **** /*
33:file.c **** ;**************************************************************************************************
34:file.c **** ;* 函數名稱 : FS_Init
35:file.c **** ;* 描 述 : 文件系統初始化
36:file.c **** ;* 輸 入 : 無
37:file.c **** ;*
38:file.c **** ;* 輸 出 : TRUE OR FALSE
39:file.c **** ;**************************************************************************************************
40:file.c **** ;*/
41:file.c **** uint8 FS_Init(void)
42:file.c **** {
86 .LM1:
87 /* prologue: frame size=0 */
88 /* prologue end (size=0) */
89 .LBB2:
90 .LBB3:
43:file.c **** M_FILE pf = FileManage;
44:file.c **** uint8 i;
45:file.c ****
46:file.c **** /* 扇區緩存器初始化 */
47:file.c **** Cache_Init();
92 .LM2:
93 0000 0E94 0000 call _Z10Cache_Initv
48:file.c ****
49:file.c **** /* 文件管理器初始化 */
50:file.c **** for (i = 0; i < MAX_FILE_OPEN; i++, pf++)
51:file.c **** {
52:file.c **** ClearNbyte((uint8 *)pf, sizeof(struct FileManageInfo));
95 .LM3:
96 0004 6BE1 ldi r22,lo8(27)
97 0006 70E0 ldi r23,hi8(27)
98 0008 80E0 ldi r24,lo8(FileManage)
99 000a 90E0 ldi r25,hi8(FileManage)
100 000c 0E94 0000 call _Z10ClearNbytePvj
53:file.c **** }
54:file.c ****
55:file.c **** /* 磁盤初始化 */
56:file.c **** return Disk_Init();
102 .LM4:
103 0010 0E94 0000 call _Z9Disk_Initv
104 .LBE3:
105 .LBE2:
57:file.c **** }
107 .LM5:
108 0014 9927 clr r25
109 /* epilogue: frame size=0 */
110 0016 0895 ret
111 /* epilogue end (size=1) */
112 /* function uint8 FS_Init() size 12 (11) */
115 .global _Z14GetFreeFileManv
117 _Z14GetFreeFileManv:
58:file.c ****
59:file.c **** /*
60:file.c **** ;**************************************************************************************************
61:file.c **** ;* 函數名稱 : GetFreeFileMan
62:file.c **** ;* 描 述 : 分配空閑文件管理器
63:file.c **** ;* 輸 入 : 無
64:file.c **** ;*
65:file.c **** ;* 輸 出 : 文件指針
66:file.c **** ;**************************************************************************************************
67:file.c **** ;*/
68:file.c **** M_FILE GetFreeFileMan(void)
69:file.c **** {
119 .LM6:
120 /* prologue: frame size=0 */
121 /* prologue end (size=0) */
122 .LBB4:
123 .LBB5:
70:file.c **** M_FILE pf = FileManage;
71:file.c **** uint8 i;
72:file.c ****
73:file.c **** for (i = 0; i < MAX_FILE_OPEN; i++, pf++)
74:file.c **** {
75:file.c **** if (pf->Flag == 0x00)
125 .LM7:
126 0018 8091 0000 lds r24,FileManage+18
127 001c 8823 tst r24
128 001e 31F4 brne .L18
76:file.c **** {
77:file.c **** pf->Flag = FILE_OPEN;
130 .LM8:
131 0020 81E0 ldi r24,lo8(1)
132 0022 8093 0000 sts FileManage+18,r24
78:file.c **** return pf;
134 .LM9:
135 0026 80E0 ldi r24,lo8(FileManage)
136 0028 90E0 ldi r25,hi8(FileManage)
137 002a 0895 ret
138 .L18:
79:file.c **** }
80:file.c **** }
81:file.c **** return ((M_FILE)0);
140 .LM10:
141 002c 80E0 ldi r24,lo8(0)
142 002e 90E0 ldi r25,hi8(0)
143 .LBE5:
144 .LBE4:
82:file.c **** }
146 .LM11:
147 0030 0895 ret
148 /* epilogue: frame size=0 */
149 0032 0895 ret
150 /* epilogue end (size=1) */
151 /* function FileManageInfo* GetFreeFileMan() size 14 (13) */
155 .global _Z11_IsFileOpenPc
157 _Z11_IsFileOpenPc:
83:file.c ****
84:file.c **** /*
85:file.c **** ;**************************************************************************************************
86:file.c **** ;* 函數名稱 : _IsFileOpen
87:file.c **** ;* 描 述 : 判斷文件是否已打開
88:file.c **** ;* 輸 入 : Filename[11]: 內部文件名
89:file.c **** ;*
90:file.c **** ;* 輸 出 : 文件指針
91:file.c **** ;**************************************************************************************************
92:file.c **** ;*/
93:file.c **** M_FILE _IsFileOpen(char Filename[11])
94:file.c **** {
159 .LM12:
160 /* prologue: frame size=0 */
161 0034 CF93 push r28
162 0036 DF93 push r29
163 /* prologue end (size=2) */
164 0038 BC01 movw r22,r24
165 .LBB6:
166 .LBB7:
95:file.c **** M_FILE pf = FileManage;
168 .LM13:
169 003a C0E0 ldi r28,lo8(FileManage)
170 003c D0E0 ldi r29,hi8(FileManage)
96:file.c **** uint8 i;
97:file.c ****
98:file.c **** for (i = 0; i < MAX_FILE_OPEN; i++, pf++)
99:file.c **** {
100:file.c **** if (pf->Flag & FILE_OPEN)
172 .LM14:
173 003e 8091 0000 lds r24,FileManage+18
174 0042 9927 clr r25
175 0044 8170 andi r24,lo8(1)
176 0046 9070 andi r25,hi8(1)
177 0048 8823 tst r24
178 004a 49F0 breq .L30
101:file.c **** {
102:file.c **** if (IsEqual(pf->fFDT.Name, Filename, 11))
180 .LM15:
181 004c 4BE0 ldi r20,lo8(11)
182 004e 50E0 ldi r21,hi8(11)
183 0050 CE01 movw r24,r28
184 0052 0E94 0000 call _Z7IsEqualPvS_j
185 0056 8823 tst r24
186 0058 11F0 breq .L30
103:file.c **** {
104:file.c **** return pf;
188 .LM16:
189 005a CE01 movw r24,r28
190 005c 02C0 rjmp .L21
191 .L30:
105:file.c **** }
106:file.c **** }
107:file.c **** }
108:file.c **** return ((M_FILE)0);
193 .LM17:
194 005e 80E0 ldi r24,lo8(0)
195 0060 90E0 ldi r25,hi8(0)
196 .L21:
197 .LBE7:
198 .LBE6:
199 /* epilogue: frame size=0 */
200 0062 DF91 pop r29
201 0064 CF91 pop r28
202 0066 0895 ret
203 /* epilogue end (size=3) */
204 /* function FileManageInfo* _IsFileOpen(char*) size 26 (21) */
211 .global _Z10IsFileOpenPc
213 _Z10IsFileOpenPc:
109:file.c **** }
110:file.c ****
111:file.c **** /*
112:file.c **** ;**************************************************************************************************
113:file.c **** ;* 函數名稱 : IsFileOpen
114:file.c **** ;* 描 述 : 判斷文件是否已打開
115:file.c **** ;* 輸 入 : NameStr[11]: 外部文件名
116:file.c **** ;*
117:file.c **** ;* 輸 出 : 文件指針
118:file.c **** ;**************************************************************************************************
119:file.c **** ;*/
120:file.c **** M_FILE IsFileOpen(char NameStr[11])
121:file.c **** {
215 .LM18:
216 /* prologue: frame size=11 */
217 0068 CF93 push r28
218 006a DF93 push r29
219 006c CDB7 in r28,__SP_L__
220 006e DEB7 in r29,__SP_H__
221 0070 2B97 sbiw r28,11
222 0072 0FB6 in __tmp_reg__,__SREG__
223 0074 F894 cli
224 0076 DEBF out __SP_H__,r29
225 0078 0FBE out __SREG__,__tmp_reg__
226 007a CDBF out __SP_L__,r28
227 /* prologue end (size=10) */
228 .LBB8:
229 .LBB9:
122:file.c **** char Filename[11];
123:file.c ****
124:file.c **** /* 轉化為內部文件名 */
125:file.c **** if (!FileNameChange(NameStr, Filename))
231 .LM19:
232 007c BE01 movw r22,r28
233 007e 6F5F subi r22,lo8(-(1))
234 0080 7F4F sbci r23,hi8(-(1))
235 0082 0E94 0000 call _Z14FileNameChangePcS_
236 0086 8823 tst r24
237 0088 19F4 brne .L34
126:file.c **** {
127:file.c **** return ((M_FILE)0);
239 .LM20:
240 008a 80E0 ldi r24,lo8(0)
241 008c 90E0 ldi r25,hi8(0)
242 008e 04C0 rjmp .L33
243 .L34:
128:file.c **** }
129:file.c ****
130:file.c **** return _IsFileOpen(Filename);
245 .LM21:
246 0090 CE01 movw r24,r28
247 0092 0196 adiw r24,1
248 0094 0E94 0000 call _Z11_IsFileOpenPc
249 .L33:
250 .LBE9:
251 .LBE8:
252 /* epilogue: frame size=11 */
253 0098 2B96 adiw r28,11
254 009a 0FB6 in __tmp_reg__,__SREG__
255 009c F894 cli
256 009e DEBF out __SP_H__,r29
257 00a0 0FBE out __SREG__,__tmp_reg__
258 00a2 CDBF out __SP_L__,r28
259 00a4 DF91 pop r29
260 00a6 CF91 pop r28
261 00a8 0895 ret
262 /* epilogue end (size=9) */
263 /* function FileManageInfo* IsFileOpen(char*) size 33 (14) */
270 .global _Z11FreeFileManP14FileManageInfo
272 _Z11FreeFileManP14FileManageInfo:
131:file.c **** }
132:file.c ****
133:file.c **** /*
134:file.c **** ;**************************************************************************************************
135:file.c **** ;* 函數名稱 : FreeFileMan
136:file.c **** ;* 描 述 : 釋放文件管理器
137:file.c **** ;* 輸 入 : M_FILE: 文件指針
138:file.c **** ;*
139:file.c **** ;* 輸 出 : 無
140:file.c **** ;**************************************************************************************************
141:file.c **** ;*/
142:file.c **** void FreeFileMan(M_FILE pf)
143:file.c **** {
274 .LM22:
275 /* prologue: frame size=0 */
276 /* prologue end (size=0) */
277 .LBB10:
144:file.c **** ClearNbyte((uint8 *)pf, sizeof(struct FileManageInfo));
279 .LM23:
280 00aa 6BE1 ldi r22,lo8(27)
281 00ac 70E0 ldi r23,hi8(27)
282 00ae 0E94 0000 call _Z10ClearNbytePvj
283 .LBE10:
284 /* epilogue: frame size=0 */
285 00b2 0895 ret
286 /* epilogue end (size=1) */
287 /* function void FreeFileMan(FileManageInfo*) size 5 (4) */
291 .global _Z11_CreateFilePc
293 _Z11_CreateFilePc:
145:file.c **** }
146:file.c ****
147:file.c **** /*
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -