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
|
||||
add ebp, 32 ;ñìåùàåìñÿ äî ÁÄÂÊ
|
||||
mov dword [save_ebp],ebp
|
||||
; mov dword [save_point_nt],ebp
|
||||
cld ;óñòàíîâêà ôëàãà íàïðàâëåíèÿ
|
||||
align 4
|
||||
.start_loop:
|
||||
@ -97,21 +96,10 @@ align 4
|
||||
lea edi,[ebp+0x28] ;â edi óêàçàòåëü íà íà÷àëî èìåíè.
|
||||
xor eax,eax
|
||||
mov ecx,263
|
||||
align 4
|
||||
.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
|
||||
repne scasb ;íàéäåì êîíåö ñòðîêè
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
.next_a:
|
||||
sub edi,4 ;.ksf,0
|
||||
sub edi,5 ;.ksf,0
|
||||
mov esi,dword name_font
|
||||
mov ecx,name_font_e-name_font
|
||||
repe cmpsb
|
||||
@ -164,18 +152,6 @@ align 4
|
||||
; â íà÷àëî áóôåðà
|
||||
|
||||
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
|
||||
mov dword [esp+28],0
|
||||
popad
|
||||
@ -202,15 +178,12 @@ get_font:
|
||||
; ïîèñê â ìàññèâå øðèôòà ïðè ñîâïàäåíèè ócëîâèé çàãðóçêà øðèôòà
|
||||
; esp+4 = dd width font shl 16 +hight font
|
||||
; esp+0 = dd back
|
||||
pop eax
|
||||
pop dword [font_x_y]
|
||||
push eax
|
||||
; pop eax
|
||||
; mov dword [font_x_y],eax
|
||||
;pop eax
|
||||
; pop dword [font_x_y]
|
||||
;push eax
|
||||
pushad
|
||||
|
||||
|
||||
|
||||
mov eax,dword [esp+32+4]
|
||||
mov dword [font_x_y],eax
|
||||
xor eax,eax
|
||||
mov dword [number_function],eax
|
||||
mov dword [index_start_block],eax ;ïîçèöèÿ â ôàéëå äëÿ ÷òåíèÿ äàííûõ
|
||||
@ -223,10 +196,6 @@ pushad
|
||||
mov dword [offset_to_string],edi
|
||||
|
||||
|
||||
; mov ecx,dword [save_ecx] ; êîë-âî èòåðàöèé ò.å. ïðîõîäîâ
|
||||
align 4
|
||||
;.start_check:
|
||||
; push ecx
|
||||
mov eax,70
|
||||
mov ebx,dword struct_f_info
|
||||
mcall
|
||||
@ -235,36 +204,11 @@ align 4
|
||||
mov eax,dword [file_buffer]
|
||||
mov ebx,dword [type_fnt]
|
||||
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 edx,dword [font_x_y]
|
||||
cmp ecx,edx
|
||||
; jnz @f ;óïñ íåóäà÷à âûøëà
|
||||
;øðèôò ñîâïàë ò.å. ýòî íàø,íóæíûé íàì øðèôò, ìû åãî äîëæíû çàãðóçèòü â ÎÇÓ
|
||||
|
||||
; mov ebp,dword [save_point_nt]
|
||||
mov ecx, 4096;dword [ebp+32] ;ðàçìåð ôàéëà äî 4294967296 áàéò ò.å. 4 Ãá
|
||||
|
||||
mov dword [read_block],ecx
|
||||
@ -292,22 +236,14 @@ align 4
|
||||
mov dword [esp+28],0
|
||||
; pop ecx
|
||||
popad
|
||||
ret
|
||||
|
||||
|
||||
|
||||
ret 4
|
||||
|
||||
;here error file system
|
||||
align 4
|
||||
@@:
|
||||
; pop ecx
|
||||
; add ebp,304
|
||||
; dec ecx
|
||||
; jnz .start_check
|
||||
|
||||
or dword [esp+28],-1 ;âåðíåì îøèáêó
|
||||
popad
|
||||
ret
|
||||
ret 4
|
||||
|
||||
|
||||
; ïîèñê âûâîä ñòîðî÷êè ïî ñèìâîëüíî ñôîðèðîâàííîãî øðèôòîì òåêñòà
|
||||
@ -324,39 +260,16 @@ pushad
|
||||
mov ecx,dword [font_x_y] ;ðàçìåð ãëèôà x shl 16 +y
|
||||
mov edi,dword [esp+8+32] ;óêàçàòåëü íà ïàëèòðó èç öâåòà è ôîíà
|
||||
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
|
||||
align 4
|
||||
@@: ;pushad
|
||||
xor eax,eax
|
||||
lodsb
|
||||
test al,al
|
||||
jz .exit
|
||||
; movzx eax,al
|
||||
jz .return
|
||||
shl eax,4 ;óìíîæàåì íà 16 ò.ê. ýòî âûñîòà ãëèôà
|
||||
; imul eax,16
|
||||
|
||||
mov ebx,dword [font_array_data] ; òóò ðàñïîëîãàþòñÿ ãëèôû ñèìâîëîâ
|
||||
; add eax,ebx
|
||||
; mov ebx,dword [ebx+8] ; ñìåùåíèå
|
||||
; add eax,ebx
|
||||
add ebx,eax
|
||||
push esi
|
||||
mov esi,1
|
||||
@ -365,11 +278,6 @@ align 4
|
||||
pop esi
|
||||
add edx,8 shl 16 ;ñëåäóþùèé ñèìâîë øèðèíà ñèìâîëà = 8 òî÷êàì
|
||||
jmp @b
|
||||
align 4
|
||||
.exit: ;popad
|
||||
|
||||
; add edx,16
|
||||
; loop .next
|
||||
|
||||
align 4
|
||||
.return:
|
||||
@ -393,7 +301,6 @@ align 4
|
||||
mov esi,1
|
||||
mov eax,65
|
||||
mcall
|
||||
|
||||
popad
|
||||
ret 4
|
||||
|
||||
@ -506,8 +413,6 @@ font_array_point dd 0x0
|
||||
font_array_data dd 0x0 ; ðåàëüíûå äàííûå ò.å. ìàòðèöà øðèôòà
|
||||
save_ebp 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_fuld_end= ($-name_fulder) -1
|
||||
name_font db '.ksf'
|
||||
|
@ -24,8 +24,8 @@
|
||||
; 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
|
||||
2) скопировать файл font01.ksf в дирректорию /sys/FONTS причем имя файла может быть любое обязательно только расширение *.ksf
|
||||
|
Loading…
Reference in New Issue
Block a user