?? file.lst
字號:
546 .LM49:
547 020a 0097 sbiw r24,0
548 020c 71F1 breq .L53
260:file.c **** {
261:file.c **** return ((M_FILE)0);
262:file.c **** }
263:file.c ****
264:file.c **** /* 查找是否已存在該文件 */
265:file.c **** FDTIndex = FindSYSNameRootFDT(Filename, &(fp->fFDT));
550 .LM50:
551 020e BC01 movw r22,r24
552 0210 CE01 movw r24,r28
553 0212 0196 adiw r24,1
554 0214 0E94 0000 call _Z18FindSYSNameRootFDTPcP4_FDT
555 0218 7C01 movw r14,r24
266:file.c ****
267:file.c **** if (FDTIndex == FDT_NO_FOUND)
557 .LM51:
558 021a 8091 0000 lds r24,FS_RootEntCnt
559 021e 9091 0000 lds r25,(FS_RootEntCnt)+1
560 0222 E816 cp r14,r24
561 0224 F906 cpc r15,r25
562 0226 B1F4 brne .L51
268:file.c **** {
269:file.c **** /* 不存在, 則創建 */
270:file.c **** FDTIndex = _CreateFile(Filename);
564 .LM52:
565 0228 CE01 movw r24,r28
566 022a 0196 adiw r24,1
567 022c 0E94 0000 call _Z11_CreateFilePc
568 0230 7C01 movw r14,r24
271:file.c ****
272:file.c **** if (FDTIndex == MAX_FDT_NUM)
570 .LM53:
571 0232 8091 0000 lds r24,FS_RootEntCnt
572 0236 9091 0000 lds r25,(FS_RootEntCnt)+1
573 023a E816 cp r14,r24
574 023c F906 cpc r15,r25
575 023e 31F4 brne .L52
273:file.c **** {
274:file.c **** /* 不成功, 則釋放文件管理器 */
275:file.c **** FreeFileMan(fp);
577 .LM54:
578 0240 C801 movw r24,r16
579 0242 0E94 0000 call _Z11FreeFileManP14FileManageInfo
580 .L54:
276:file.c **** return ((M_FILE)0);
582 .LM55:
583 0246 60E0 ldi r22,lo8(0)
584 0248 70E0 ldi r23,hi8(0)
585 024a 10C0 rjmp .L47
586 .L52:
277:file.c **** }
278:file.c **** /* 獲得文件信息 */
279:file.c **** ReadRootFDTInfo(FDTIndex, &(fp->fFDT));
588 .LM56:
589 024c B801 movw r22,r16
590 024e C701 movw r24,r14
591 0250 0E94 0000 call _Z15ReadRootFDTInfojP4_FDT
592 .L51:
280:file.c **** }
281:file.c ****
282:file.c **** /* 文件目錄項索引 */
283:file.c **** fp->FdtIndex = FDTIndex;
594 .LM57:
595 0254 F801 movw r30,r16
596 0256 E38A std Z+19,r14
597 0258 F48A std Z+20,r15
284:file.c ****
285:file.c **** /* 讀寫指針所在簇 */
286:file.c **** fp->CurClus = fp->fFDT.FstClusLO;
599 .LM58:
600 025a 8485 ldd r24,Z+12
601 025c 9585 ldd r25,Z+13
602 025e 858B std Z+21,r24
603 0260 968B std Z+22,r25
287:file.c ****
288:file.c **** /* 讀寫指針偏移 */
289:file.c **** fp->Offset = 0;
605 .LM59:
606 0262 178A std Z+23,__zero_reg__
607 0264 108E std Z+24,__zero_reg__
608 0266 118E std Z+25,__zero_reg__
609 0268 128E std Z+26,__zero_reg__
610 .L53:
290:file.c ****
291:file.c **** return fp;
612 .LM60:
613 026a B801 movw r22,r16
614 .L47:
615 .LBE16:
616 .LBE15:
292:file.c **** }
618 .LM61:
619 026c CB01 movw r24,r22
620 /* epilogue: frame size=11 */
621 026e 2B96 adiw r28,11
622 0270 0FB6 in __tmp_reg__,__SREG__
623 0272 F894 cli
624 0274 DEBF out __SP_H__,r29
625 0276 0FBE out __SREG__,__tmp_reg__
626 0278 CDBF out __SP_L__,r28
627 027a DF91 pop r29
628 027c CF91 pop r28
629 027e 1F91 pop r17
630 0280 0F91 pop r16
631 0282 FF90 pop r15
632 0284 EF90 pop r14
633 0286 0895 ret
634 /* epilogue end (size=13) */
635 /* function FileManageInfo* OpenFile(char*) size 94 (67) */
644 .global _Z9CloseFileP14FileManageInfo
646 _Z9CloseFileP14FileManageInfo:
293:file.c ****
294:file.c **** /*
295:file.c **** ;**************************************************************************************************
296:file.c **** ;* 函數名稱 : CloseFile
297:file.c **** ;* 描 述 : 關閉文件
298:file.c **** ;* 輸 入 : fp: 文件指針
299:file.c **** ;*
300:file.c **** ;* 輸 出 : 文件指針
301:file.c **** ;**************************************************************************************************
302:file.c **** ;*/
303:file.c **** uint8 CloseFile(M_FILE fp)
304:file.c **** {
648 .LM62:
649 /* prologue: frame size=0 */
650 0288 CF93 push r28
651 028a DF93 push r29
652 /* prologue end (size=2) */
653 .LBB17:
305:file.c **** if (!fp)
655 .LM63:
656 028c 0097 sbiw r24,0
657 028e 11F4 brne .L56
306:file.c **** {
307:file.c **** return FALSE;
659 .LM64:
660 0290 BC01 movw r22,r24
661 0292 16C0 rjmp .L55
662 .L56:
308:file.c **** }
309:file.c ****
310:file.c **** /* 文件是否已打開 */
311:file.c **** fp = _IsFileOpen(fp->fFDT.Name);
664 .LM65:
665 0294 0E94 0000 call _Z11_IsFileOpenPc
666 0298 EC01 movw r28,r24
312:file.c **** if (fp)
668 .LM66:
669 029a 0097 sbiw r24,0
670 029c 79F0 breq .L57
313:file.c **** {
314:file.c **** if (WriteRootFDTInfo(fp->FdtIndex, &(fp->fFDT)))
672 .LM67:
673 029e BC01 movw r22,r24
674 02a0 8B89 ldd r24,Y+19
675 02a2 9C89 ldd r25,Y+20
676 02a4 0E94 0000 call _Z16WriteRootFDTInfojP4_FDT
677 02a8 8823 tst r24
678 02aa 41F0 breq .L57
315:file.c **** {
316:file.c **** CacheWriteBack();
680 .LM68:
681 02ac 0E94 0000 call _Z14CacheWriteBackv
317:file.c **** FreeFileMan(fp);
683 .LM69:
684 02b0 CE01 movw r24,r28
685 02b2 0E94 0000 call _Z11FreeFileManP14FileManageInfo
318:file.c **** return TRUE;
687 .LM70:
688 02b6 61E0 ldi r22,lo8(1)
689 02b8 70E0 ldi r23,hi8(1)
690 02ba 02C0 rjmp .L55
691 .L57:
319:file.c **** }
320:file.c **** }
321:file.c **** return FALSE;
693 .LM71:
694 02bc 60E0 ldi r22,lo8(0)
695 02be 70E0 ldi r23,hi8(0)
696 .L55:
697 .LBE17:
322:file.c **** }
699 .LM72:
700 02c0 CB01 movw r24,r22
701 /* epilogue: frame size=0 */
702 02c2 DF91 pop r29
703 02c4 CF91 pop r28
704 02c6 0895 ret
705 /* epilogue end (size=3) */
706 /* function uint8 CloseFile(FileManageInfo*) size 32 (27) */
710 .global _Z17GetFristSecOfClusj
712 _Z17GetFristSecOfClusj:
323:file.c ****
324:file.c **** /*
325:file.c **** ;**************************************************************************************************
326:file.c **** ;* 函數名稱 : GetFristSecOfClus
327:file.c **** ;* 描 述 : 獲得指定簇的開始扇區號
328:file.c **** ;* 輸 入 : ClusIndex: 簇號
329:file.c **** ;*
330:file.c **** ;* 輸 出 : 簇的開始扇區號
331:file.c **** ;**************************************************************************************************
332:file.c **** ;*/
333:file.c **** uint32 GetFristSecOfClus(uint16 ClusIndex)
334:file.c **** {
714 .LM73:
715 /* prologue: frame size=0 */
716 /* prologue end (size=0) */
717 .LBB18:
335:file.c **** return FS_DataStartSec + (ClusIndex - 2) * FS_SecPerClus;
719 .LM74:
720 02c8 9C01 movw r18,r24
721 02ca 2250 subi r18,lo8(-(-2))
722 02cc 3040 sbci r19,hi8(-(-2))
723 02ce 8091 0000 lds r24,FS_SecPerClus
724 02d2 9927 clr r25
725 02d4 289F mul r18,r24
726 02d6 A001 movw r20,r0
727 02d8 299F mul r18,r25
728 02da 500D add r21,r0
729 02dc 389F mul r19,r24
730 02de 500D add r21,r0
731 02e0 1124 clr r1
732 02e2 CA01 movw r24,r20
733 02e4 9C01 movw r18,r24
734 02e6 4427 clr r20
735 02e8 5527 clr r21
736 02ea 8091 0000 lds r24,FS_DataStartSec
737 02ee 9091 0000 lds r25,(FS_DataStartSec)+1
738 02f2 A091 0000 lds r26,(FS_DataStartSec)+2
739 02f6 B091 0000 lds r27,(FS_DataStartSec)+3
740 02fa 820F add r24,r18
741 02fc 931F adc r25,r19
742 02fe A41F adc r26,r20
743 0300 B51F adc r27,r21
744 .LBE18:
336:file.c **** }
746 .LM75:
747 0302 BC01 movw r22,r24
748 0304 CD01 movw r24,r26
749 /* epilogue: frame size=0 */
750 0306 0895 ret
751 /* epilogue end (size=1) */
752 /* function uint32 GetFristSecOfClus(uint16) size 32 (31) */
756 .global _Z9GetchFileP14FileManageInfo
758 _Z9GetchFileP14FileManageInfo:
337:file.c ****
338:file.c **** /*
339:file.c **** ;**************************************************************************************************
340:file.c **** ;* 函數名稱 : GetchFile
341:file.c **** ;* 描 述 : 從文件讀取一個字節
342:file.c **** ;* 輸 入 : fp: 文件指針
343:file.c **** ;*
344:file.c **** ;* 輸 出 : 文件讀取到的一個字節
345:file.c **** ;**************************************************************************************************
346:file.c **** ;*/
347:file.c **** uint8 GetchFile(M_FILE fp)
348:file.c **** {
760 .LM76:
761 /* prologue: frame size=0 */
762 0308 AF92 push r10
763 030a BF92 push r11
764 030c CF92 push r12
765 030e DF92 push r13
766 0310 EF92 push r14
767 0312 FF92 push r15
768 0314 0F93 push r16
769 0316 1F93 push r17
770 0318 CF93 push r28
771 031a DF93 push r29
772 /* prologue end (size=10) */
773 031c EC01 movw r28,r24
774 .LBB19:
775 .LBB20:
349:file.c **** uint8 *Buf;
350:file.c **** uint8 ch;
351:file.c **** uint32 SecOffset;
352:file.c **** uint32 SecIndex;
353:file.c **** uint32 ReadPoint;
354:file.c **** uint16 ByteOffset;
355:file.c ****
356:file.c **** /* 參數無效 */
357:file.c **** if (!fp)
777 .LM77:
778 031e 0097 sbiw r24,0
779 0320 29F0 breq .L68
358:file.c **** {
359:file.c **** return '\0';
360:file.c **** }
361:file.c ****
362:file.c **** /* 判斷文件是否已打開 */
363:file.c **** fp = IsFileOpen(fp->fFDT.Name);
781 .LM78:
782 0322 0E94 0000 call _Z10IsFileOpenPc
783 0326 EC01 movw r28,r24
364:file.c **** if (!fp)
785 .LM79:
786 0328 892B or r24,r25
787 032a 11F4 brne .L62
788 .L68:
365:file.c **** {
366:file.c **** return '\0';
790 .LM80:
791 032c CE01 movw r24,r28
792 032e 5EC0 rjmp .L60
793 .L62:
367:file.c **** }
368:file.c ****
369:file.c **** if (fp->fFDT.FileSize == 0)
795 .LM81:
796 0330 8E85 ldd r24,Y+14
797 0332 9F85 ldd r25,Y+15
798 0334 A889 ldd r26,Y+16
799 0336 B989 ldd r27,Y+17
800 0338 0097 sbiw r24,0
801 033a A105 cpc r26,__zero_reg__
802 033c B105 cpc r27,__zero_reg__
803 033e 49F0 breq .L67
370:file.c **** {
371:file.c **** return '\0';
372:file.c **** }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -