📄 fat.cod
字号:
000f8 e0000392 mul r0, r2, r3
000fc e59d3000 ldr r3, [sp]
00100 e283100b add r1, r3, #0xB
00104 e5d13001 ldrb r3, [r1, #1]
00108 e1a03403 mov r3, r3, lsl #8
0010c e1a02803 mov r2, r3, lsl #16
00110 e1a02822 mov r2, r2, lsr #16
00114 e5d13000 ldrb r3, [r1]
00118 e1833002 orr r3, r3, r2
0011c e2433001 sub r3, r3, #1
00120 e080e003 add lr, r0, r3
00124 e59d3000 ldr r3, [sp]
00128 e283100b add r1, r3, #0xB
0012c e5d13001 ldrb r3, [r1, #1]
00130 e1a03403 mov r3, r3, lsl #8
00134 e1a02803 mov r2, r3, lsl #16
00138 e1a02822 mov r2, r2, lsr #16
0013c e5d13000 ldrb r3, [r1]
00140 e1833002 orr r3, r3, r2
00144 e1a00003 mov r0, r3
00148 e1a0100e mov r1, lr
0014c eb000000 bl __rt_sdiv
00150 e59d323c ldr r3, [sp, #0x23C]
00154 e0803003 add r3, r0, r3
00158 e59f1778 ldr r1, [pc, #0x778]
0015c e5c13025 strb r3, [r1, #0x25]
00160 e1a02423 mov r2, r3, lsr #8
00164 e1a03002 mov r3, r2
00168 e5c13026 strb r3, [r1, #0x26]
0016c e1a02422 mov r2, r2, lsr #8
00170 e1a03002 mov r3, r2
00174 e5c13027 strb r3, [r1, #0x27]
00178 e1a03422 mov r3, r2, lsr #8
0017c e5c13028 strb r3, [r1, #0x28]
; 639 :
; 640 : // Determine size of FAT tables...
; 641 : if ( pBPB->SectsPerFAT16 != 0 )
00180 e59d3000 ldr r3, [sp]
00184 e2831016 add r1, r3, #0x16
00188 e5d13001 ldrb r3, [r1, #1]
0018c e1a03403 mov r3, r3, lsl #8
00190 e1a02803 mov r2, r3, lsl #16
00194 e1a02822 mov r2, r2, lsr #16
00198 e5d13000 ldrb r3, [r1]
0019c e1833002 orr r3, r3, r2
001a0 e3530000 cmp r3, #0
001a4 0a000012 beq |$L38329|
; 642 : {
; 643 : g_FATParms.SectorsPerFAT = pBPB->SectsPerFAT16;
001a8 e59d3000 ldr r3, [sp]
001ac e2831016 add r1, r3, #0x16
001b0 e5d13001 ldrb r3, [r1, #1]
001b4 e1a03403 mov r3, r3, lsl #8
001b8 e1a02803 mov r2, r3, lsl #16
001bc e1a02822 mov r2, r2, lsr #16
001c0 e5d13000 ldrb r3, [r1]
001c4 e1833002 orr r3, r3, r2
001c8 e59f1708 ldr r1, [pc, #0x708]
001cc e5c13029 strb r3, [r1, #0x29]
001d0 e1a02423 mov r2, r3, lsr #8
001d4 e1a03002 mov r3, r2
001d8 e5c1302a strb r3, [r1, #0x2A]
001dc e1a02422 mov r2, r2, lsr #8
001e0 e1a03002 mov r3, r2
001e4 e5c1302b strb r3, [r1, #0x2B]
001e8 e1a03422 mov r3, r2, lsr #8
001ec e5c1302c strb r3, [r1, #0x2C]
; 644 : }
; 645 : else
001f0 ea000014 b |$L38330|
001f4 |$L38329|
; 646 : {
; 647 : // it is beginning to look a lot like FAT32!!!
; 648 : // but we are not done yet!
; 649 : g_FATParms.SectorsPerFAT = pFAT32Extension->SectsPerFAT32;
001f4 e59d121c ldr r1, [sp, #0x21C]
001f8 e5d13003 ldrb r3, [r1, #3]
001fc e1a02403 mov r2, r3, lsl #8
00200 e5d13002 ldrb r3, [r1, #2]
00204 e1833002 orr r3, r3, r2
00208 e1a02403 mov r2, r3, lsl #8
0020c e5d13001 ldrb r3, [r1, #1]
00210 e1833002 orr r3, r3, r2
00214 e1a02403 mov r2, r3, lsl #8
00218 e5d13000 ldrb r3, [r1]
0021c e1833002 orr r3, r3, r2
00220 e59f16b0 ldr r1, [pc, #0x6B0]
00224 e5c13029 strb r3, [r1, #0x29]
00228 e1a02423 mov r2, r3, lsr #8
0022c e1a03002 mov r3, r2
00230 e5c1302a strb r3, [r1, #0x2A]
00234 e1a02422 mov r2, r2, lsr #8
00238 e1a03002 mov r3, r2
0023c e5c1302b strb r3, [r1, #0x2B]
00240 e1a03422 mov r3, r2, lsr #8
00244 e5c1302c strb r3, [r1, #0x2C]
00248 |$L38330|
; 650 : }
; 651 :
; 652 : if ( pBPB->TotalSectors16 != 0 )
00248 e59d3000 ldr r3, [sp]
0024c e2831013 add r1, r3, #0x13
00250 e5d13001 ldrb r3, [r1, #1]
00254 e1a03403 mov r3, r3, lsl #8
00258 e1a02803 mov r2, r3, lsl #16
0025c e1a02822 mov r2, r2, lsr #16
00260 e5d13000 ldrb r3, [r1]
00264 e1833002 orr r3, r3, r2
00268 e3530000 cmp r3, #0
0026c 0a000012 beq |$L38331|
; 653 : {
; 654 : g_FATParms.TotalSectors = pBPB->TotalSectors16;
00270 e59d3000 ldr r3, [sp]
00274 e2831013 add r1, r3, #0x13
00278 e5d13001 ldrb r3, [r1, #1]
0027c e1a03403 mov r3, r3, lsl #8
00280 e1a02803 mov r2, r3, lsl #16
00284 e1a02822 mov r2, r2, lsr #16
00288 e5d13000 ldrb r3, [r1]
0028c e1833002 orr r3, r3, r2
00290 e59f1640 ldr r1, [pc, #0x640]
00294 e5c1302d strb r3, [r1, #0x2D]
00298 e1a02423 mov r2, r3, lsr #8
0029c e1a03002 mov r3, r2
002a0 e5c1302e strb r3, [r1, #0x2E]
002a4 e1a02422 mov r2, r2, lsr #8
002a8 e1a03002 mov r3, r2
002ac e5c1302f strb r3, [r1, #0x2F]
002b0 e1a03422 mov r3, r2, lsr #8
002b4 e5c13030 strb r3, [r1, #0x30]
; 655 : }
; 656 : else
002b8 ea000015 b |$L38332|
002bc |$L38331|
; 657 : {
; 658 : g_FATParms.TotalSectors = pBPB->TotalSectors32;
002bc e59d3000 ldr r3, [sp]
002c0 e2831020 add r1, r3, #0x20
002c4 e5d13003 ldrb r3, [r1, #3]
002c8 e1a02403 mov r2, r3, lsl #8
002cc e5d13002 ldrb r3, [r1, #2]
002d0 e1833002 orr r3, r3, r2
002d4 e1a02403 mov r2, r3, lsl #8
002d8 e5d13001 ldrb r3, [r1, #1]
002dc e1833002 orr r3, r3, r2
002e0 e1a02403 mov r2, r3, lsl #8
002e4 e5d13000 ldrb r3, [r1]
002e8 e1833002 orr r3, r3, r2
002ec e59f15e4 ldr r1, [pc, #0x5E4]
002f0 e5c1302d strb r3, [r1, #0x2D]
002f4 e1a02423 mov r2, r3, lsr #8
002f8 e1a03002 mov r3, r2
002fc e5c1302e strb r3, [r1, #0x2E]
00300 e1a02422 mov r2, r2, lsr #8
00304 e1a03002 mov r3, r2
00308 e5c1302f strb r3, [r1, #0x2F]
0030c e1a03422 mov r3, r2, lsr #8
00310 e5c13030 strb r3, [r1, #0x30]
00314 |$L38332|
; 659 : }
; 660 :
; 661 :
; 662 : g_FATParms.NumFATs = pBPB->NumFATs;
00314 e59d3000 ldr r3, [sp]
00318 e2833010 add r3, r3, #0x10
0031c e5d32000 ldrb r2, [r3]
00320 e59f35b0 ldr r3, [pc, #0x5B0]
00324 e5c32015 strb r2, [r3, #0x15]
; 663 : g_FATParms.ReservedSects = pBPB->RsvdSects;
00328 e59d3000 ldr r3, [sp]
0032c e283100e add r1, r3, #0xE
00330 e5d13001 ldrb r3, [r1, #1]
00334 e1a03403 mov r3, r3, lsl #8
00338 e1a02803 mov r2, r3, lsl #16
0033c e1a02822 mov r2, r2, lsr #16
00340 e5d13000 ldrb r3, [r1]
00344 e1832002 orr r2, r3, r2
00348 e59f3588 ldr r3, [pc, #0x588]
0034c e1c321b8 strh r2, [r3, #0x18]
; 664 : g_FATParms.NumHiddenSectors = pBPB->NumHiddenSectors;
00350 e59d3000 ldr r3, [sp]
00354 e283101c add r1, r3, #0x1C
00358 e5d13003 ldrb r3, [r1, #3]
0035c e1a02403 mov r2, r3, lsl #8
00360 e5d13002 ldrb r3, [r1, #2]
00364 e1833002 orr r3, r3, r2
00368 e1a02403 mov r2, r3, lsl #8
0036c e5d13001 ldrb r3, [r1, #1]
00370 e1833002 orr r3, r3, r2
00374 e1a02403 mov r2, r3, lsl #8
00378 e5d13000 ldrb r3, [r1]
0037c e1833002 orr r3, r3, r2
00380 e59f2550 ldr r2, [pc, #0x550]
00384 e1c231ba strh r3, [r2, #0x1A]
00388 e1a03823 mov r3, r3, lsr #16
0038c e1c231bc strh r3, [r2, #0x1C]
; 665 :
; 666 :
; 667 : g_FATParms.DataRegionSectors =
; 668 : g_FATParms.TotalSectors -
; 669 : (g_FATParms.ReservedSects + (g_FATParms.NumFATs * g_FATParms.SectorsPerFAT) +
; 670 : g_FATParms.RootDirSectors);
00390 e59f3540 ldr r3, [pc, #0x540]
00394 e1d3e1b8 ldrh lr, [r3, #0x18]
00398 e59f3538 ldr r3, [pc, #0x538]
0039c e5d30015 ldrb r0, [r3, #0x15]
003a0 e59f1530 ldr r1, [pc, #0x530]
003a4 e5d1302c ldrb r3, [r1, #0x2C]
003a8 e1a02403 mov r2, r3, lsl #8
003ac e5d1302b ldrb r3, [r1, #0x2B]
003b0 e1833002 orr r3, r3, r2
003b4 e1a02403 mov r2, r3, lsl #8
003b8 e5d1302a ldrb r3, [r1, #0x2A]
003bc e1833002 orr r3, r3, r2
003c0 e1a02403 mov r2, r3, lsl #8
003c4 e5d13029 ldrb r3, [r1, #0x29]
003c8 e1833002 orr r3, r3, r2
003cc e0030390 mul r3, r0, r3
003d0 e08e0003 add r0, lr, r3
003d4 e59f14fc ldr r1, [pc, #0x4FC]
003d8 e5d13028 ldrb r3, [r1, #0x28]
003dc e1a02403 mov r2, r3, lsl #8
003e0 e5d13027 ldrb r3, [r1, #0x27]
003e4 e1833002 orr r3, r3, r2
003e8 e1a02403 mov r2, r3, lsl #8
003ec e5d13026 ldrb r3, [r1, #0x26]
003f0 e1833002 orr r3, r3, r2
003f4 e1a02403 mov r2, r3, lsl #8
003f8 e5d13025 ldrb r3, [r1, #0x25]
003fc e1833002 orr r3, r3, r2
00400 e0800003 add r0, r0, r3
00404 e59f14cc ldr r1, [pc, #0x4CC]
00408 e5d13030 ldrb r3, [r1, #0x30]
0040c e1a02403 mov r2, r3, lsl #8
00410 e5d1302f ldrb r3, [r1, #0x2F]
00414 e1833002 orr r3, r3, r2
00418 e1a02403 mov r2, r3, lsl #8
0041c e5d1302e ldrb r3, [r1, #0x2E]
00420 e1833002 orr r3, r3, r2
00424 e1a02403 mov r2, r3, lsl #8
00428 e5d1302d ldrb r3, [r1, #0x2D]
0042c e1833002 orr r3, r3, r2
00430 e0433000 sub r3, r3, r0
00434 e59f149c ldr r1, [pc, #0x49C]
00438 e5c13031 strb r3, [r1, #0x31]
0043c e1a02423 mov r2, r3, lsr #8
00440 e1a03002 mov r3, r2
00444 e5c13032 strb r3, [r1, #0x32]
00448 e1a02422 mov r2, r2, lsr #8
0044c e1a03002 mov r3, r2
00450 e5c13033 strb r3, [r1, #0x33]
00454 e1a03422 mov r3, r2, lsr #8
00458 e5c13034 strb r3, [r1, #0x34]
; 671 :
; 672 : if( !pBPB->SectsPerClust )
0045c e59d3000 ldr r3, [sp]
00460 e283300d add r3, r3, #0xD
00464 e5d33000 ldrb r3, [r3]
00468 e3530000 cmp r3, #0
0046c 1a000002 bne |$L38333|
; 673 : return(FALSE);
00470 e3a03000 mov r3, #0
00474 e58d3224 str r3, [sp, #0x224]
00478 ea000111 b |$L38312|
0047c |$L38333|
; 674 : // It is okay that the following calculation rounds down!
; 675 : g_FATParms.CountOfClusters = g_FATParms.DataRegionSectors / pBPB->SectsPerClust;
0047c e59d3000 ldr r3, [sp]
00480 e283300d add r3, r3, #0xD
00484 e5d30000 ldrb r0, [r3]
00488 e59f1448 ldr r1, [pc, #0x448]
0048c e5d13034 ldrb r3, [r1, #0x34]
00490 e1a02403 mov r2, r3, lsl #8
00494 e5d13033 ldrb r3, [r1, #0x33]
00498 e1833002 orr r3, r3, r2
0049c e1a02403 mov r2, r3, lsl #8
004a0 e5d13032 ldrb r3, [r1, #0x32]
004a4 e1833002 orr r3, r3, r2
004a8 e1a02403 mov r2, r3, lsl #8
004ac e5d13031 ldrb r3, [r1, #0x31]
004b0 e1831002 orr r1, r3, r2
004b4 eb000000 bl __rt_udiv
004b8 e59f1418 ldr r1, [pc, #0x418]
004bc e1a03000 mov r3, r0
004c0 e5c13035 strb r3, [r1, #0x35]
004c4 e1a02423 mov r2, r3, lsr #8
004c8 e1a03002 mov r3, r2
004cc e5c13036 strb r3, [r1, #0x36]
004d0 e1a02422 mov r2, r2, lsr #8
004d4 e1a03002 mov r3, r2
004d8 e5c13037 strb r3, [r1, #0x37]
004dc e1a03422 mov r3, r2, lsr #8
004e0 e5c13038 strb r3, [r1, #0x38]
; 676 :
; 677 : if ( g_FATParms.CountOfClusters < 4085 )
004e4 e59f13ec ldr r1, [pc, #0x3EC]
004e8 e5d13038 ldrb r3, [r1, #0x38]
004ec e1a02403 mov r2, r3, lsl #8
004f0 e5d13037 ldrb r3, [r1, #0x37]
004f4 e1833002 orr r3, r3, r2
004f8 e1a02403 mov r2, r3, lsl #8
004fc e5d13036 ldrb r3, [r1, #0x36]
00500 e1833002 orr r3, r3, r2
00504 e1a02403 mov r2, r3, lsl #8
00508 e5d13035 ldrb r3, [r1, #0x35]
0050c e1832002 orr r2, r3, r2
00510 e3a03eff mov r3, #0xFF, 28
00514 e3833005 orr r3, r3, #5
00518 e1520003 cmp r2, r3
0051c 2a000003 bcs |$L38334|
; 678 : {
; 679 : g_FATParms.FATType = FAT_12;
00520 e59f23b0 ldr r2, [pc, #0x3B0]
00524 e3a03000 mov r3, #0
00528 e5823000 str r3, [r2]
; 680 : }
; 681 : else if ( g_FATParms.CountOfClusters < 65525 )
0052c ea000015 b |$L38335|
00530 |$L38334|
00530 e59f13a0 ldr r1, [pc, #0x3A0]
00534 e5d13038 ldrb r3, [r1, #0x38]
00538 e1a02403 mov r2, r3, lsl #8
0053c e5d13037 ldrb r3, [r1, #0x37]
00540 e1833002 orr r3, r3, r2
00544 e1a02403 mov r2, r3, lsl #8
00548 e5d13036 ldrb r3, [r1, #0x36]
0054c e1833002 orr r3, r3, r2
00550 e1a02403 mov r2, r3, lsl #8
00554 e5d13035 ldrb r3, [r1, #0x35]
00558 e1832002 orr r2, r3, r2
0055c e3a03cff mov r3, #0xFF, 24
00560 e38330f5 orr r3, r3, #0xF5
00564 e1520003 cmp r2, r3
00568 2a000003 bcs |$L38336|
; 682 : {
; 683 : g_FATParms.FATType = FAT_16;
0056c e59f2364 ldr r2, [pc, #0x364]
00570 e3a03001 mov r3, #1
00574 e5823000 str r3, [r2]
; 684 : }
; 685 : else
00578 ea000002 b |$L38337|
0057c |$L38336|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -