· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Можно ли соптимизировать (туплю конкретно :(

<< . 1 . 2 . 3 . 4 . >>

Посл.отвђт Сообщенiе


Дата: Июн 11, 2004 19:34:59

Quantum
Мне кажется что не правильно, else if выполниться только если первое условие не удовлетворяется, так? Или я опять туплю..


Дата: Июн 11, 2004 19:46:19

> Так это ж нефик делать тогда :))

Это мне напомнило, когда на реверсинге был задан простейший вопрос, но ответов не последовало и чел взмолился "ну что никто что-ли не знает", то Dr.Golova ответил, что типа это, "вопрос уж больно лёгкий, боялись подвоха" ;-)


Дата: Июн 11, 2004 19:51:02 · Поправил: masquer

Если там только 0 или 1 может быть, то так:
xor ebx, ebx ; f1
	xor ecx, ecx ; f2
	mov edi, 1 ; for f3
	
	mov eax, 31h ; for ex
	mov edx, 31h ; for ex
	and eax, 1
	and edx, 1
	xor edi, eax
	xor edi, edx
	add ebx, eax
	add ecx, eax
	add f3, edi

Вот и тоже боюсь подвоха :)


Дата: Июн 11, 2004 19:52:10

Asterix
Уже давно исправил. Ты быстро читаешь :-)


Дата: Июн 11, 2004 19:53:24

А никто не пробовал запихнуть
if(temp1=='1'){ Flag1++; Flag3++; }
if(temp2=='1'){ Flag2++; Flag3 = 1; }

в С'шный компилятор от MS и Intel, интересно что они скажут по этому поводу..


Дата: Июн 11, 2004 19:53:59

Quantum
Да, уже увидел :-)


Дата: Июн 11, 2004 19:59:24

masquer

Нужно использовать два push'a и два pop'а для edi и ebx - это не радует.


Дата: Июн 11, 2004 20:01:27 · Поправил: masquer

Asterix
так обрисуй что можно :) можно кусок кода кинуть. Я ж регистры для флагов использовал, можно все в один регистр кидать, или если они у тебя на стеке висять, то с ними и работать.


Дата: Июн 11, 2004 20:05:02

Quantum

Я абсолютно не понял, откуда ты взял Flag3 = 1;

Что до алгоритма, то, как мне кажется, можно вывернутся так:
.IF temp1=='1'
      inc Flag1
      inc Flag3
    .IF temp2=='1'
         inc Flag2
         .IF !temp1
            inc Flag3
         .ENDIF
    .ENDIF
.ENDIF


Дата: Июн 11, 2004 20:14:14 · Поправил: Black_mirror

Asterix

Если требуется именно inc:
xor reg,reg
   .IF temp1=='1'
       inc Flag1
       mov reg,1
   .ENDIF
   .IF temp2=='1'
       inc Flag2
       mov reg,1
   .ENDIF
   add Flag3,reg


Дата: Июн 11, 2004 20:17:41

Black_mirror

А ты уверен, что там именно 1?

Asterix

Еж твою медь, хоть бы диапазон роста объявил бы...


Дата: Июн 11, 2004 21:10:01

> Я абсолютно не понял, откуда ты взял Flag3 = 1

Потому что второй раз делать inc Flag3 нельзя.

volodya

Проверь почту..


Дата: Июн 11, 2004 21:52:57

Потому что второй раз делать inc Flag3 нельзя.


Т.е. это означает, что flag3 может принимать только два значения? 0 и 1?


Дата: Июн 11, 2004 21:56:08

Asterix

Диапазон возможных значений temp1 и temp2? Под ASCII что понимать?


Дата: Июн 11, 2004 22:19:23

volodya
> Т.е. это означает, что flag3 может принимать только два значения? 0 и 1?

Да, как и два других флага.

S_T_A_S_
> Под ASCII что понимать?

Любой символ который может содержать byte, хотя я не уверен что он не выйдет из формата ASCII ;-)

<< . 1 . 2 . 3 . 4 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.057