Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Есть ли во встроенном (с++, delphi) ассемблере команда присвоения по условию. T.e. как je (например) , только присвоения?

[PRO]Vitaly Ученик (149), закрыт 11 лет назад
T.e. как je (например) , только присвоения. Если нет может есть во в не встроенном?
Дополнен 11 лет назад
Нет, имеется ввиду на ассемблере
Дополнен 11 лет назад
Макрос, уже не 1 команда, но спасибо за мнение.
Дополнен 11 лет назад
Понятно. Логично. Надо для оптимизации. Я не оч разбираюсь в этом языке.

например:

например в ax и bx 2 числа.
их складываем например, и по результату что-то присваbваем в cx

т. е. если сумма 5 то cx=3, если сумма 7 то cx =10....

получается
add ax,bx
cmp ax,7
je ...
cmp ax,3
je....

если бы было про то что я спрашиваю, то я обошелся бы без кучи ближних прыжков, сразу бы присвоив после cmp

Может подскажете реализацию покороче

Дополнен 11 лет назад
Можно в агенте пару минуток поговорить?
Дополнен 11 лет назад
как нибудь поподробнее про тернарный оператор. Желательно с примером, если не сложно
Дополнен 11 лет назад
Как я понимаю в ASM нет тернарных операторов
Лучший ответ
vasileman1984 Гуру (4302) 11 лет назад
mov cx, 0 ; значение по умолчанию, то есть если ax + bx != 7
add ax, bx
cmp ax, 7
cmove cx, 1 ; значение 1 записывается только если ax + bx == 7
Я крут, правда? Даже без джампов. Но, вообще, не рекомендую использовать ассемблер - компиляторы уже давно оптимизируют гораздо круче, чем человек. Получите только проблемы с переносимостью, понятностью, и головную боль.
Остальные ответы
kaiu Высший разум (115780) 11 лет назад
На сколько знаю нет, может макросом делать чтот такое можно.

А что такое команда?
Имея шину данных обмена с памятью надо загрузить 1 данные в регистр, потом другие, сравнить их и по условию присвоить регистру или памяти, то бишь это множество команд и 1 из нее не сделать.
Если в процессоре будет 2 шины адреса и данных, тогда возможно появится и такая команда быстрого сравнения за условный такт.. .
все это теоритически, лучше бы сказал зачем тебе это надо?
Павел Ихалайнен Искусственный Интеллект (107205) 11 лет назад
смещение будет задано только после выполнения оператора сравнения далее присваивание
Alexandr Мастер (1162) 11 лет назад
Здесь похоже нужен тернарный оператор.

Например ch = ax + bx == 5? 7 : 10;
Похожие вопросы