|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 11, 2004 22:24:30 А никто не пробовал запихнуть if(temp1=='1'){ Flag1++; Flag3++; } if(temp2=='1'){ Flag2++; Flag3 = 1; } в С'шный компилятор от MS и Intel, интересно что они скажут по этому поводу.. Я имел ввиду способны ли оптимизирующие компиляторы это соптимизировать, хотелось бы видеть результат.. |
|
|
Дата: Июн 11, 2004 22:28:05 · Поправил: volodya Я скомпилю это мгновенно, но я не понимаю смысла Flag3 = 1... 8-( |
|
|
Дата: Июн 11, 2004 22:51:46 · Поправил: S_T_A_S_ Если я нигде не ошибся, то можно так: mov al, '1' xor edx, edx xor ecx, ecx cmp temp1, al setz dl cmp temp2, al setz cl sub al, '0' and edx, eax and ecx, eax add Flag1, edx add Flag2, ecx or edx, ecx add Flag3, edx |
|
|
Дата: Июн 11, 2004 23:24:12 S_T_A_S_ Вроде не ошибся, мне нравится, только в начале нужно mov eax, '1' или xor eax, eax mov al, '1' |
|
|
Дата: Июн 11, 2004 23:33:58 S_T_A_S_ Только не проще ли заменить sub al, '0' and edx, eax and ecx, eax add Flag1, edx add Flag2, ecx на mov Flag1, edx mov Flag2, ecx |
|
|
Дата: Июн 11, 2004 23:47:20 · Поправил: S_T_A_S_ Да, что-то я перемудрил, лучше так:
cmp temp1, '1'
setz al
cmp temp2, '1'
setz cl
and eax, 1
and ecx, 1
add Flag1, eax
add Flag2, ecx
or eax, ecx
add Flag3, eax > Только не проще ли заменить.. Чёт я не пойму, надо увеличисвать Flag или просто в 1 устанавливать? |
|
|
Дата: Июн 12, 2004 00:36:26 В TRUE устанавливать ;-) Во, так в самый раз! Всем спасибо за идеи, вопрос кажется исчерпан :-) |
|
|
Дата: Июн 12, 2004 00:38:37 Хотя, блин, опять не пойму, зачем делать and al, 1 and cl, 1 |
|
|
Дата: Июн 12, 2004 02:11:24 · Поправил: S_T_A_S_ Ну если те надо просто изменить 0 на не-0, тогда, конечно and al, 1 не надо, можно и add Flag, reg заменить на mov Flag, reg. Дык такое уже постили - coban2k, например. Вот немного переделанный вариант:
cmp temp1, '1'
setz al
cmp temp2, '1'
setz cl
mov Flag1, al
mov Flag2, cl
or al, cl
mov Flag3, al |
|
|
Дата: Июн 12, 2004 02:36:30 > Дык такое уже постили - coban2k Да, почти такое, но побайтно я не сравнивал чей вариант короче, в данном случае конечно нужна оптимизация по размеру. > Вот немного переделанный вариант Ты всё-таки предлагаешь сделать один флаг размером BYTE, ну можно в принципе. |
|
|
Дата: Июн 12, 2004 02:45:28 Asterix А почему он будет BYTE? Это мы просто меняем младший байт у DWORD'а ;-) Кстати, с тем вариантом по размеру сравнивать не надо - там ошибка. |
|
|
Дата: Июн 12, 2004 03:00:21 · Поправил: Asterix S_T_A_S_ Кстати, с тем вариантом по размеру сравнивать не надо - там ошибка. Ok. Я не программлю без отладчика, так что все ошибки всплывут ;-) > А почему он будет BYTE? Это мы просто меняем младший байт у DWORD'а ;-) А команда setz разве не с байтом работает, masm не будет ругаться? |
|
|
Дата: Июн 12, 2004 03:20:52 · Поправил: S_T_A_S_ Asterix Кстати, у темы очень правильное название - это про меня. Ошибка была у меня, щас (вроде бы ;-) исправил :)
|
|
|
Дата: Июн 12, 2004 03:51:12 S_T_A_S_ > Ошибка была у меня, щас (вроде бы ;-) исправил :) Я вдумчиво прошёлся по твоему варианту(предыдущему) вроде не было ошибок никаких.. |
|
|
Дата: Июн 12, 2004 05:15:16 Были - если Flag1=1, но Flag2=0, то Flag3 не устанавливался. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067 |