даны переменные a,b,c типа int 32 бита установить значение в a в зависимости от равенства переменных b,c нулю: a <- 0 if b != 0 & c != 0 a <- 1 if b == 0 & c != 0 a <- 2 if b != 0 & c == 0 a <- 3 if b == 0 & c == 0 Безбранчевая оптимизация по размеру.
Быстрое решение: Код (Text): xor eax,eax neg ecx rcl eax,1 neg edx rcl eax,1 xor al,3 12 байт. a: eax b: edx c: ecx
dinoweb Во втором варианте результаты соответствуют условию задачи в обратном порядке. Поэтому я и добавил xor в своё решение.
Если устроит 8-битный результат, то можно сэкономить 2 байта: Код (Text): test ecx,ecx sete al sub edx,1 adc eax,eax 10 байт a: al b: edx c: ecx ЗЫ: Для полного соответствия условию следует добавить xor eax,eax в самом начале (опять 12 байт). В таком случае единственным плюсом будет сохранение регистра ecx.