forked from KolibriOS/kolibrios
Optimization a code for repne scasb instruction.
git-svn-id: svn://kolibrios.org@1167 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
7cb34de2df
commit
49698c69f7
@ -89,7 +89,6 @@ pushad
|
|||||||
mov dword [save_ecx],ecx
|
mov dword [save_ecx],ecx
|
||||||
add ebp, 32 ;ñìåùàåìñÿ äî ÁÄÂÊ
|
add ebp, 32 ;ñìåùàåìñÿ äî ÁÄÂÊ
|
||||||
mov dword [save_ebp],ebp
|
mov dword [save_ebp],ebp
|
||||||
; mov dword [save_point_nt],ebp
|
|
||||||
cld ;óñòàíîâêà ôëàãà íàïðàâëåíèÿ
|
cld ;óñòàíîâêà ôëàãà íàïðàâëåíèÿ
|
||||||
align 4
|
align 4
|
||||||
.start_loop:
|
.start_loop:
|
||||||
@ -97,21 +96,10 @@ align 4
|
|||||||
lea edi,[ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
|
lea edi,[ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov ecx,263
|
mov ecx,263
|
||||||
align 4
|
repne scasb ;íàéäåì êîíåö ñòðîêè
|
||||||
.again: mov al,byte[edi]
|
|
||||||
test al,al
|
|
||||||
jz .next_a
|
|
||||||
dec ecx
|
|
||||||
inc edi
|
|
||||||
jnz .again
|
|
||||||
jmp @f
|
|
||||||
; repe scasb ;íàéäåì êîíåö ñòðîêè
|
|
||||||
; jnz @f
|
|
||||||
;;;; èìÿ ïðèñóòñòâóåò, ïðîâåðèì ÿâëÿòñÿ ëè èìÿ ôàéëà ñ ðàñøèðåíèåì fnt )
|
|
||||||
; sub edi,6 ;.ksf,0
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
.next_a:
|
.next_a:
|
||||||
sub edi,4 ;.ksf,0
|
sub edi,5 ;.ksf,0
|
||||||
mov esi,dword name_font
|
mov esi,dword name_font
|
||||||
mov ecx,name_font_e-name_font
|
mov ecx,name_font_e-name_font
|
||||||
repe cmpsb
|
repe cmpsb
|
||||||
@ -164,18 +152,6 @@ align 4
|
|||||||
; â íà÷àëî áóôåðà
|
; â íà÷àëî áóôåðà
|
||||||
|
|
||||||
mov dword [save_point_nt],ebp
|
mov dword [save_point_nt],ebp
|
||||||
; mov esi, ebp
|
|
||||||
; mov ecx,304/4
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;align 4
|
|
||||||
;.transfer:
|
|
||||||
; lodsd
|
|
||||||
; stosd
|
|
||||||
; loop .transfer
|
|
||||||
; add dword [save_point_nt],304 ;óêàçàòåëü íà ñëåäóþùèé áëîê
|
|
||||||
;;; ñäåëàëè òàðíñôåð ïåðåìåùåíèå äàííûõ
|
|
||||||
pop ecx
|
pop ecx
|
||||||
mov dword [esp+28],0
|
mov dword [esp+28],0
|
||||||
popad
|
popad
|
||||||
@ -202,15 +178,12 @@ get_font:
|
|||||||
; ïîèñê â ìàññèâå øðèôòà ïðè ñîâïàäåíèè ócëîâèé çàãðóçêà øðèôòà
|
; ïîèñê â ìàññèâå øðèôòà ïðè ñîâïàäåíèè ócëîâèé çàãðóçêà øðèôòà
|
||||||
; esp+4 = dd width font shl 16 +hight font
|
; esp+4 = dd width font shl 16 +hight font
|
||||||
; esp+0 = dd back
|
; esp+0 = dd back
|
||||||
pop eax
|
;pop eax
|
||||||
pop dword [font_x_y]
|
; pop dword [font_x_y]
|
||||||
push eax
|
;push eax
|
||||||
; pop eax
|
|
||||||
; mov dword [font_x_y],eax
|
|
||||||
pushad
|
pushad
|
||||||
|
mov eax,dword [esp+32+4]
|
||||||
|
mov dword [font_x_y],eax
|
||||||
|
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
mov dword [number_function],eax
|
mov dword [number_function],eax
|
||||||
mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ
|
mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ
|
||||||
@ -223,10 +196,6 @@ pushad
|
|||||||
mov dword [offset_to_string],edi
|
mov dword [offset_to_string],edi
|
||||||
|
|
||||||
|
|
||||||
; mov ecx,dword [save_ecx] ; êîë-âî èòåðàöèé ò.å. ïðîõîäîâ
|
|
||||||
align 4
|
|
||||||
;.start_check:
|
|
||||||
; push ecx
|
|
||||||
mov eax,70
|
mov eax,70
|
||||||
mov ebx,dword struct_f_info
|
mov ebx,dword struct_f_info
|
||||||
mcall
|
mcall
|
||||||
@ -235,36 +204,11 @@ align 4
|
|||||||
mov eax,dword [file_buffer]
|
mov eax,dword [file_buffer]
|
||||||
mov ebx,dword [type_fnt]
|
mov ebx,dword [type_fnt]
|
||||||
cmp eax,ebx
|
cmp eax,ebx
|
||||||
; jnz @f
|
|
||||||
|
|
||||||
|
|
||||||
; xor eax,eax
|
|
||||||
; mov dword [number_function],eax
|
|
||||||
; add eax,8
|
|
||||||
; mov dword [read_block],eax
|
|
||||||
; mov dword [buffer_read_d],file_buffer
|
|
||||||
; mov ebx,dword struct_f_info
|
|
||||||
; mov eax,70
|
|
||||||
;align 4
|
|
||||||
;.start_check:
|
|
||||||
;çàãðóçèì çàãîëîâîê ôàéëà è óçíàåì åãî ðàçìåð ãëèôà.
|
|
||||||
; lea edi, [ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
|
|
||||||
; mov dword [offset_to_string],edi
|
|
||||||
;get in buffer info above own file
|
|
||||||
; mcall
|
|
||||||
;;;;;;;;;;;;;;;; ïðîâåðèì ôîðìàò çàãîëîâêà
|
|
||||||
; mov ecx,dword [file_buffer.type_fnt]
|
|
||||||
; mov edx,dword [type_fnt]
|
|
||||||
; cmp ecx,edx
|
|
||||||
; jnz @f
|
|
||||||
|
|
||||||
mov ecx,dword [file_buffer.font_size]
|
mov ecx,dword [file_buffer.font_size]
|
||||||
mov edx,dword [font_x_y]
|
mov edx,dword [font_x_y]
|
||||||
cmp ecx,edx
|
cmp ecx,edx
|
||||||
; jnz @f ;óïñ íåóäà÷à âûøëà
|
|
||||||
;øðèôò ñîâïàë ò.å. ýòî íàø,íóæíûé íàì øðèôò, ìû åãî äîëæíû çàãðóçèòü â ÎÇÓ
|
|
||||||
|
|
||||||
; mov ebp,dword [save_point_nt]
|
|
||||||
mov ecx, 4096;dword [ebp+32] ;ðàçìåð ôàéëà äî 4294967296 áàéò ò.å. 4 Ãá
|
mov ecx, 4096;dword [ebp+32] ;ðàçìåð ôàéëà äî 4294967296 áàéò ò.å. 4 Ãá
|
||||||
|
|
||||||
mov dword [read_block],ecx
|
mov dword [read_block],ecx
|
||||||
@ -292,22 +236,14 @@ align 4
|
|||||||
mov dword [esp+28],0
|
mov dword [esp+28],0
|
||||||
; pop ecx
|
; pop ecx
|
||||||
popad
|
popad
|
||||||
ret
|
ret 4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;here error file system
|
;here error file system
|
||||||
align 4
|
align 4
|
||||||
@@:
|
@@:
|
||||||
; pop ecx
|
|
||||||
; add ebp,304
|
|
||||||
; dec ecx
|
|
||||||
; jnz .start_check
|
|
||||||
|
|
||||||
or dword [esp+28],-1 ;âåðíåì îøèáêó
|
or dword [esp+28],-1 ;âåðíåì îøèáêó
|
||||||
popad
|
popad
|
||||||
ret
|
ret 4
|
||||||
|
|
||||||
|
|
||||||
; ïîèñê âûâîä ñòîðî÷êè ïî ñèìâîëüíî ñôîðèðîâàííîãî øðèôòîì òåêñòà
|
; ïîèñê âûâîä ñòîðî÷êè ïî ñèìâîëüíî ñôîðèðîâàííîãî øðèôòîì òåêñòà
|
||||||
@ -324,39 +260,16 @@ pushad
|
|||||||
mov ecx,dword [font_x_y] ;ðàçìåð ãëèôà x shl 16 +y
|
mov ecx,dword [font_x_y] ;ðàçìåð ãëèôà x shl 16 +y
|
||||||
mov edi,dword [esp+8+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà
|
mov edi,dword [esp+8+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà
|
||||||
xor ebp,ebp ;ñì 65 ôóíêöèþ ))
|
xor ebp,ebp ;ñì 65 ôóíêöèþ ))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
; pushad
|
|
||||||
; mov ebp, dword [esp+4+32+32]
|
|
||||||
; mov ebp, dword [save_point_nt]
|
|
||||||
; lea edi, [ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
|
|
||||||
; sub edi,4 ;.ksf,0
|
|
||||||
; mov eax,4
|
|
||||||
; mov ebx,dword [show_dir]
|
|
||||||
; add dword [show_dir],10
|
|
||||||
; mov ecx,0x80000000;DDBBCC
|
|
||||||
; mov edx,ebp;[ebp+0x28];eax;edi
|
|
||||||
; xor esi,esi
|
|
||||||
;mov esi,8
|
|
||||||
; mcall
|
|
||||||
; popad
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
cld
|
cld
|
||||||
align 4
|
align 4
|
||||||
@@: ;pushad
|
@@: ;pushad
|
||||||
xor eax,eax
|
xor eax,eax
|
||||||
lodsb
|
lodsb
|
||||||
test al,al
|
test al,al
|
||||||
jz .exit
|
jz .return
|
||||||
; movzx eax,al
|
|
||||||
shl eax,4 ;óìíîæàåì íà 16 ò.ê. ýòî âûñîòà ãëèôà
|
shl eax,4 ;óìíîæàåì íà 16 ò.ê. ýòî âûñîòà ãëèôà
|
||||||
; imul eax,16
|
|
||||||
|
|
||||||
mov ebx,dword [font_array_data] ; òóò ðàñïîëîãàþòñÿ ãëèôû ñèìâîëîâ
|
mov ebx,dword [font_array_data] ; òóò ðàñïîëîãàþòñÿ ãëèôû ñèìâîëîâ
|
||||||
; add eax,ebx
|
|
||||||
; mov ebx,dword [ebx+8] ; ñìåùåíèå
|
|
||||||
; add eax,ebx
|
|
||||||
add ebx,eax
|
add ebx,eax
|
||||||
push esi
|
push esi
|
||||||
mov esi,1
|
mov esi,1
|
||||||
@ -365,11 +278,6 @@ align 4
|
|||||||
pop esi
|
pop esi
|
||||||
add edx,8 shl 16 ;ñëåäóþùèé ñèìâîë øèðèíà ñèìâîëà = 8 òî÷êàì
|
add edx,8 shl 16 ;ñëåäóþùèé ñèìâîë øèðèíà ñèìâîëà = 8 òî÷êàì
|
||||||
jmp @b
|
jmp @b
|
||||||
align 4
|
|
||||||
.exit: ;popad
|
|
||||||
|
|
||||||
; add edx,16
|
|
||||||
; loop .next
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
.return:
|
.return:
|
||||||
@ -393,7 +301,6 @@ align 4
|
|||||||
mov esi,1
|
mov esi,1
|
||||||
mov eax,65
|
mov eax,65
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
popad
|
popad
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
@ -506,8 +413,6 @@ font_array_point dd 0x0
|
|||||||
font_array_data dd 0x0 ; ðåàëüíûå äàííûå ò.å. ìàòðèöà øðèôòà
|
font_array_data dd 0x0 ; ðåàëüíûå äàííûå ò.å. ìàòðèöà øðèôòà
|
||||||
save_ebp dd 0x0
|
save_ebp dd 0x0
|
||||||
save_point_nt dd 0x0
|
save_point_nt dd 0x0
|
||||||
;name_of_file db 263 dup(0x0)
|
|
||||||
;name_of_file db '/sys/FONTS/font01.ksf',0
|
|
||||||
name_fulder db '/sys/FONTS',0
|
name_fulder db '/sys/FONTS',0
|
||||||
name_fuld_end= ($-name_fulder) -1
|
name_fuld_end= ($-name_fulder) -1
|
||||||
name_font db '.ksf'
|
name_font db '.ksf'
|
||||||
|
@ -24,8 +24,8 @@
|
|||||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
;*****************************************************************************
|
;*****************************************************************************
|
||||||
|
|
||||||
Простая библиотека шрифтов.
|
Библиотека шрифтов.
|
||||||
Альфа версия 0.00002 Автор Теплов Алексей. <Lrz>
|
Альфа версия 0.00003 Автор Теплов Алексей. <Lrz>
|
||||||
Для демострации примера вам необходимо сделать следующее:
|
Для демострации примера вам необходимо сделать следующее:
|
||||||
1) поместить библиотека fonts_lib.obj в дирректорию с примером font_ex.kex или лучше будет поместить библиотеку в /sys/lib
|
1) поместить библиотека fonts_lib.obj в дирректорию с примером font_ex.kex или лучше будет поместить библиотеку в /sys/lib
|
||||||
2) скопировать файл font01.ksf в дирректорию /sys/FONTS причем имя файла может быть любое обязательно только расширение *.ksf
|
2) скопировать файл font01.ksf в дирректорию /sys/FONTS причем имя файла может быть любое обязательно только расширение *.ksf
|
||||||
|
Loading…
Reference in New Issue
Block a user