Rev 2973 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2973 | Rev 3313 | ||
---|---|---|---|
Line 6... | Line 6... | ||
6 | ;; 23.01.2010 turbanoff - support 70.0 70.1 ;; |
6 | ;; 23.01.2010 turbanoff - support 70.0 70.1 ;; |
7 | ;; ;; |
7 | ;; ;; |
8 | ;; ;; |
8 | ;; ;; |
9 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
9 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 10... | Line 10... | ||
10 | 10 | ||
Line 11... | Line 11... | ||
11 | $Revision: 2973 $ |
11 | $Revision: 3313 $ |
12 | 12 | ||
13 | EXT2_BAD_INO = 1 |
13 | EXT2_BAD_INO = 1 |
14 | EXT2_ROOT_INO = 2 |
14 | EXT2_ROOT_INO = 2 |
Line 893... | Line 893... | ||
893 | jb .size_great_less |
893 | jb .size_great_less |
894 | cmp [ebp + EXT2_INODE_STRUC.i_size], eax |
894 | cmp [ebp + EXT2_INODE_STRUC.i_size], eax |
895 | jae .size_great_great |
895 | jae .size_great_great |
Line 896... | Line 896... | ||
896 | 896 | ||
897 | .size_great_less: |
- | |
898 | push 1 |
897 | .size_great_less: |
899 | ; or [EXT2_files_in_folder], 1 ;читаем по границе размера |
898 | push 1 ;читаем по границе размера |
900 | mov ecx, [ebp + EXT2_INODE_STRUC.i_size] |
899 | mov ecx, [ebp + EXT2_INODE_STRUC.i_size] |
901 | sub ecx, [esi] ;(размер - старт) = сколько читать |
900 | sub ecx, [esi] ;(размер - старт) = сколько читать |
Line 902... | Line 901... | ||
902 | jmp @F |
901 | jmp @F |
903 | - | ||
904 | .size_great_great: |
902 | |
Line 905... | Line 903... | ||
905 | push 0 |
903 | .size_great_great: |
906 | ; and [EXT2_files_in_folder], 0 ;читаем столько сколько запросили |
904 | push 0 ;читаем столько сколько запросили |
907 | 905 | ||
908 | @@: |
906 | @@: |
Line 917... | Line 915... | ||
917 | ;получим кусок из первого блока |
915 | ;получим кусок из первого блока |
918 | mov edx, [esi+4] |
916 | mov edx, [esi+4] |
919 | mov eax, [esi] |
917 | mov eax, [esi] |
920 | div [ext2_data.block_size] |
918 | div [ext2_data.block_size] |
Line 921... | Line 919... | ||
921 | 919 | ||
Line 922... | Line 920... | ||
922 | push eax ;номер блока запоминаем |
920 | push eax ;счетчик блоков ложим в стек |
923 | 921 | ||
924 | push ecx |
922 | push ecx |
925 | mov ecx, eax |
923 | mov ecx, eax |
Line 947... | Line 945... | ||
947 | rep movsb ;кусок 1-го блока |
945 | rep movsb ;кусок 1-го блока |
948 | jmp .calc_blocks_count |
946 | jmp .calc_blocks_count |
Line 949... | Line 947... | ||
949 | 947 | ||
950 | .zero_start: |
948 | .zero_start: |
951 | mov eax, ecx |
949 | mov eax, ecx |
952 | push 0 ;счетчик блоков |
950 | push 0 ;счетчик блоков ложим в стек |
953 | ;теперь в eax кол-во оставшихся байт для чтения |
951 | ;теперь в eax кол-во оставшихся байт для чтения |
954 | .calc_blocks_count: |
952 | .calc_blocks_count: |
955 | mov ebx, edi ;чтение блока прям в ->ebx |
953 | mov ebx, edi ;чтение блока прям в ->ebx |
956 | xor edx, edx |
954 | xor edx, edx |
Line 992... | Line 990... | ||
992 | jnz .error_at_finish_block |
990 | jnz .error_at_finish_block |
Line 993... | Line 991... | ||
993 | 991 | ||
994 | mov ecx, edx |
992 | mov ecx, edx |
995 | mov esi, ebx |
993 | mov esi, ebx |
- | 994 | rep movsb ;кусок last блока |
|
- | 995 | jmp @F |
|
996 | rep movsb ;кусок last блока |
996 | |
- | 997 | .end_read: |
|
997 | .end_read: |
998 | pop ecx ;счетчик блоков, который хранился в стеке |
998 | pop ebx |
999 | @@: |
- | 1000 | pop ebx ;количество считанных байт |
|
999 | pop eax |
1001 | pop eax ; 1 или 0 - достигли ли конца файла |
1000 | test eax, eax |
1002 | test eax, eax |
Line 1001... | Line 1003... | ||
1001 | jz @F |
1003 | jz @F |
1002 | 1004 |