Автор Quantum. В eax одно из значений {0,-1,1} 1. Сделать инъектную реализацию функциональной зависимости 0 -> 0 -1 -> 1 1 -> 2 2. Сделать обратную задачу в eax {0,1,2}(таким образом в сумме задач получаем биектное функциональное отношение) 0 -> 0 1 ->-1 2 -> 1 Безбранчевый код. Оптимизация по размеру.
Первая (8 байт) rol eax,1 adc eax,0 adc eax,0 или еще (8 байт) rol eax,1 xor ebx,ebx adc eax,ebx adc eax,ebx
Quantum Именно. Предполагал, что нулевой регистр найдется заранее, т.е. размер будет 6 байт. С пустым регистром вторая задача тоже уменьшается до 4 байт.
По поводу биектности - это я поторопился сказать. В одном отношении 1 переводится в -1 а в другом в 2. Так что биектности не получается. Так что задачу суммирующую условия обеих не решить. Их можно решать только по отдельности (что все и делали) Хорошо что успел я это заметить первым, никому психоческой травмы не нанёс. Прошу прощения за упоминание биектности в условиях.