📄 fdt.lst
字号:
189:fdt.c ****
190:fdt.c **** if (extp != 0) /* 有扩展名 */
532 .LM50:
533 0240 4423 tst r20
534 0242 E9F0 breq .L40
191:fdt.c **** {
192:fdt.c **** i = len - 1; /* 名字末字节位置 */
536 .LM51:
537 0244 932F mov r25,r19
538 0246 9150 subi r25,lo8(-(-1))
193:fdt.c **** /* 将扩展名移到最后 */
194:fdt.c **** for (z = 10; i > extp; i--, z--)
540 .LM52:
541 0248 2AE0 ldi r18,lo8(10)
542 024a 4917 cp r20,r25
543 024c 68F4 brsh .L56
544 024e DB01 movw r26,r22
545 0250 A90F add r26,r25
546 0252 B11D adc r27,__zero_reg__
547 .L44:
195:fdt.c **** {
196:fdt.c **** Filename[z] = Filename[i];
549 .LM53:
550 0254 FB01 movw r30,r22
551 0256 E20F add r30,r18
552 0258 F11D adc r31,__zero_reg__
553 025a 8C91 ld r24,X
554 025c 1197 sbiw r26,1
555 025e 8083 st Z,r24
557 .LM54:
558 0260 9150 subi r25,lo8(-(-1))
559 0262 2150 subi r18,lo8(-(-1))
560 0264 4917 cp r20,r25
561 0266 B0F3 brlo .L44
562 .L56:
197:fdt.c **** }
198:fdt.c **** /* 中间填入空格 */
199:fdt.c **** for (; z >= extp; z--)
564 .LM55:
565 0268 2417 cp r18,r20
566 026a A0F0 brlo .L49
567 026c 80E2 ldi r24,lo8(32)
568 .L48:
200:fdt.c **** {
201:fdt.c **** Filename[z] = ' ';
570 .LM56:
571 026e FB01 movw r30,r22
572 0270 E20F add r30,r18
573 0272 F11D adc r31,__zero_reg__
574 0274 8083 st Z,r24
576 .LM57:
577 0276 2150 subi r18,lo8(-(-1))
578 0278 2417 cp r18,r20
579 027a C8F7 brsh .L48
580 027c 0BC0 rjmp .L49
581 .L40:
202:fdt.c **** }
203:fdt.c **** }
204:fdt.c **** else /* 无扩展名 */
205:fdt.c **** {
206:fdt.c **** i = len; /* 名字后的位置 */
583 .LM58:
584 027e 932F mov r25,r19
207:fdt.c **** for (; i < 11; i++) /* 余下的空间填入空格 */
586 .LM59:
587 0280 3B30 cpi r19,lo8(11)
588 0282 40F4 brsh .L49
589 0284 80E2 ldi r24,lo8(32)
590 0286 FB01 movw r30,r22
591 0288 E30F add r30,r19
592 028a F11D adc r31,__zero_reg__
593 .L53:
208:fdt.c **** {
209:fdt.c **** Filename[i] = ' ';
595 .LM60:
596 028c 8193 st Z+,r24
598 .LM61:
599 028e 9F5F subi r25,lo8(-(1))
600 0290 9B30 cpi r25,lo8(11)
601 0292 E0F3 brlo .L53
602 .L49:
210:fdt.c **** }
211:fdt.c **** }
212:fdt.c **** return TRUE;
604 .LM62:
605 0294 81E0 ldi r24,lo8(1)
606 0296 90E0 ldi r25,hi8(1)
607 .LBE9:
608 .LBE8:
213:fdt.c **** }
610 .LM63:
611 0298 0895 ret
612 /* epilogue: frame size=0 */
613 029a 0895 ret
614 /* epilogue end (size=1) */
615 /* function uint8 FileNameChange(char*, char*) size 113 (112) */
627 .global _Z18FindSYSNameRootFDTPcP4_FDT
629 _Z18FindSYSNameRootFDTPcP4_FDT:
214:fdt.c ****
215:fdt.c **** /*
216:fdt.c **** ;**************************************************************************************************
217:fdt.c **** ;* 函数名称 : FindSYSNameRootFDT
218:fdt.c **** ;* 描 述 : 查找指定内部名字的根目录项
219:fdt.c **** ;* 输 入 : Filename[11]: 内部文件名
220:fdt.c **** ;*
221:fdt.c **** ;* 输 出 : 目录项索引
222:fdt.c **** ;**************************************************************************************************
223:fdt.c **** ;*/
224:fdt.c **** uint16 FindSYSNameRootFDT(char Filename[11], FDT *pFDT)
225:fdt.c **** {
631 .LM64:
632 /* prologue: frame size=0 */
633 029c EF92 push r14
634 029e FF92 push r15
635 02a0 0F93 push r16
636 02a2 1F93 push r17
637 02a4 CF93 push r28
638 02a6 DF93 push r29
639 /* prologue end (size=6) */
640 02a8 7C01 movw r14,r24
641 02aa 8B01 movw r16,r22
642 .LBB10:
643 .LBB11:
226:fdt.c **** uint16 i;
227:fdt.c ****
228:fdt.c **** for (i = 0; i < MAX_FDT_NUM; i++)
645 .LM65:
646 02ac C0E0 ldi r28,lo8(0)
647 02ae D0E0 ldi r29,hi8(0)
648 .L69:
650 .LM66:
651 02b0 8091 0000 lds r24,FS_RootEntCnt
652 02b4 9091 0000 lds r25,(FS_RootEntCnt)+1
653 02b8 C817 cp r28,r24
654 02ba D907 cpc r29,r25
655 02bc A8F4 brsh .L63
229:fdt.c **** {
230:fdt.c **** if (!ReadRootFDTInfo(i, pFDT)) /* 读取第i号根目录项 */
657 .LM67:
658 02be B801 movw r22,r16
659 02c0 CE01 movw r24,r28
660 02c2 0E94 0000 call _Z15ReadRootFDTInfojP4_FDT
661 02c6 8823 tst r24
662 02c8 29F4 brne .L65
231:fdt.c **** {
232:fdt.c **** return FDT_NO_FOUND;
664 .LM68:
665 02ca 8091 0000 lds r24,FS_RootEntCnt
666 02ce 9091 0000 lds r25,(FS_RootEntCnt)+1
667 02d2 0BC0 rjmp .L61
668 .L65:
233:fdt.c **** }
234:fdt.c **** if (IsEqual(Filename, pFDT->Name, 11)) /* 同名,找到 */
670 .LM69:
671 02d4 4BE0 ldi r20,lo8(11)
672 02d6 50E0 ldi r21,hi8(11)
673 02d8 B801 movw r22,r16
674 02da C701 movw r24,r14
675 02dc 0E94 0000 call _Z7IsEqualPvS_j
676 02e0 8823 tst r24
677 02e2 11F4 brne .L63
679 .LM70:
680 02e4 2196 adiw r28,1
681 02e6 E4CF rjmp .L69
682 .L63:
235:fdt.c **** {
236:fdt.c **** break;
237:fdt.c **** }
238:fdt.c **** }
239:fdt.c **** return i;
684 .LM71:
685 02e8 CE01 movw r24,r28
686 .L61:
687 .LBE11:
688 .LBE10:
689 /* epilogue: frame size=0 */
690 02ea DF91 pop r29
691 02ec CF91 pop r28
692 02ee 1F91 pop r17
693 02f0 0F91 pop r16
694 02f2 FF90 pop r15
695 02f4 EF90 pop r14
696 02f6 0895 ret
697 /* epilogue end (size=7) */
698 /* function uint16 FindSYSNameRootFDT(char*, FDT*) size 46 (33) */
706 .global _Z19FindUSERNameRootFDTPcP4_FDT
708 _Z19FindUSERNameRootFDTPcP4_FDT:
240:fdt.c **** }
241:fdt.c ****
242:fdt.c **** /*
243:fdt.c **** ;**************************************************************************************************
244:fdt.c **** ;* 函数名称 : FindUSERNameRootFDT
245:fdt.c **** ;* 描 述 : 查找指定外部名字的根目录项
246:fdt.c **** ;* 输 入 : NameStr[11]: 外部文件名
247:fdt.c **** ;*
248:fdt.c **** ;* 输 出 : 目录项索引
249:fdt.c **** ;**************************************************************************************************
250:fdt.c **** ;*/
251:fdt.c **** uint16 FindUSERNameRootFDT(char NameStr[11], FDT *pFDT)
252:fdt.c **** {
710 .LM72:
711 /* prologue: frame size=11 */
712 02f8 0F93 push r16
713 02fa 1F93 push r17
714 02fc CF93 push r28
715 02fe DF93 push r29
716 0300 CDB7 in r28,__SP_L__
717 0302 DEB7 in r29,__SP_H__
718 0304 2B97 sbiw r28,11
719 0306 0FB6 in __tmp_reg__,__SREG__
720 0308 F894 cli
721 030a DEBF out __SP_H__,r29
722 030c 0FBE out __SREG__,__tmp_reg__
723 030e CDBF out __SP_L__,r28
724 /* prologue end (size=12) */
725 0310 8B01 movw r16,r22
726 .LBB12:
727 .LBB13:
253:fdt.c **** char Filename[11];
254:fdt.c ****
255:fdt.c **** if (!FileNameChange(NameStr, Filename)) /* 将外部名字转化为内部名字 */
729 .LM73:
730 0312 BE01 movw r22,r28
731 0314 6F5F subi r22,lo8(-(1))
732 0316 7F4F sbci r23,hi8(-(1))
733 0318 0E94 0000 call _Z14FileNameChangePcS_
734 031c 8823 tst r24
735 031e 29F4 brne .L71
256:fdt.c **** {
257:fdt.c **** return FDT_NO_FOUND;
737 .LM74:
738 0320 8091 0000 lds r24,FS_RootEntCnt
739 0324 9091 0000 lds r25,(FS_RootEntCnt)+1
740 0328 05C0 rjmp .L70
741 .L71:
258:fdt.c **** }
259:fdt.c **** return FindSYSNameRootFDT(Filename, pFDT); /* 查找内部名字的根目录项 */
743 .LM75:
744 032a B801 movw r22,r16
745 032c CE01 movw r24,r28
746 032e 0196 adiw r24,1
747 0330 0E94 0000 call _Z18FindSYSNameRootFDTPcP4_FDT
748 .L70:
749 .LBE13:
750 .LBE12:
751 /* epilogue: frame size=11 */
752 0334 2B96 adiw r28,11
753 0336 0FB6 in __tmp_reg__,__SREG__
754 0338 F894 cli
755 033a DEBF out __SP_H__,r29
756 033c 0FBE out __SREG__,__tmp_reg__
757 033e CDBF out __SP_L__,r28
758 0340 DF91 pop r29
759 0342 CF91 pop r28
760 0344 1F91 pop r17
761 0346 0F91 pop r16
762 0348 0895 ret
763 /* epilogue end (size=11) */
764 /* function uint16 FindUSERNameRootFDT(char*, FDT*) size 41 (18) */
769 .text
771 Letext:
772 /* File "fdt.c": code 425 = 0x01a9 ( 339), prologues 42, epilogues 44 */
DEFINED SYMBOLS
*ABS*:00000000 fdt.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:85 .text:00000000 _Z15ReadRootFDTInfojP4_FDT
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:222 .text:000000ba _Z16WriteRootFDTInfojP4_FDT
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:343 .text:00000160 _Z14GetFreeRootFDTv
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:423 .text:000001be _Z14FileNameChangePcS_
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:629 .text:0000029c _Z18FindSYSNameRootFDTPcP4_FDT
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:708 .text:000002f8 _Z19FindUSERNameRootFDTPcP4_FDT
C:\Users\ADMINI~1\AppData\Local\Temp/ccWyaaaa.s:771 .text:0000034a Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
FS_RootEntCnt
FS_RootDirStartSec
_Z10OpenSectorm
_Z9CopyNbytePvS_j
_Z11WriteSectorv
_Z7IsEqualPvS_j
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -