|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 17, 2004 20:38:27 Как это можно оптимизировать ? ;esi указатель на комм. строку mov al,byte ptr [esi]
test al,al
ja params_found
mov ecx,SIZEOF Usage_str
mov esi,offset Usage_str
call cStdOut
jmp quit
skip_spaces:
xor ah,ah
and byte ptr [esi],0
next_byte:
inc esi
mov al,byte ptr [esi]
params_found:
cmp al,20h
je skip_spaces
ja nonspace_present
cmp al,0
ja invalid_param
je end_of_string
nonspace_present:
and ah,1
jnz next_byte
or ah,1
cmp al,2fh
je options_present
mov edx,[fname]
and edx,-1
jz take_main_param
jmp too_many_parans
take_main_param:
mov [fname],esi
jmp next_byte
options_present:
;разбор параметров
jmp next_byte
end_of_string:
mov edx,[fname]
and edx,-1
jnz needed_params_present
missing_main_param:
mov ecx,SIZEOF nema_parametra_str
mov esi,offset nema_parametra_str
call cStdOut
jmp quit
too_many_parans:
mov ecx,SIZEOF too_many_parans_str
mov esi,offset too_many_parans_str
call cStdOut
jmp quit
invalid_param:
mov ecx,SIZEOF invalid_param_str
mov esi,offset invalid_param_str
call cStdOut
jmp quit
|
|
|
Дата: Сен 17, 2004 21:00:28 Как минимум это call cStdOut можно сделать через регистр всё остальное требует больше данных, что ищет парсер?, если только параметры командной строки, не проверяя сами эти параметры, то можно сделать короче, что за функция cStdOut ? |
|
|
Дата: Сен 18, 2004 02:30:32 Параметры проверяются и разбиваются на группы, не копируются никуда. Скорсть не критична а вот размер хотел бы уменьшить. сStdout - вывод в stdout |
|
|
Дата: Сен 18, 2004 05:01:23 Не вникая в принцип работы, можно сразу делать такие замены: xor ah,ah and byte ptr [esi],0 на xor ah,ah and byte ptr [esi],ah cmp al,0 на test al,al and ah,1 на and ah,ah and edx,-1 на and edx,edx Ещё, если операнд <=127 mov ecx,SIZEOF Usage_str то лучше push SIZEOF Usage_str pop ecx |
|
|
Дата: Сен 19, 2004 18:04:42 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.104 |