Использование cmov для реализации C if / else if / else без ответвлений, без jmp - PullRequest
0 голосов
/ 14 апреля 2020

Для меня задача использовать cmov в сборке для реализации фрагментов кода C, как я могу перейти к остановке после каждой операции без использования какой-либо команды jmp? Я в замешательстве

C код:

if (x > y){
    z = x - y;
}else if (y > x){
    z = y - x;
}else{
    z = 0;
}

Сборка:

cmpl %eax, %ebx
cmovll %eax, %ecx    # x > y, z = x
subl %ebx, %ecx      # z = x - y

cmpl %eax, %ebx 
cmovgl %ebx, %ecx   # y > x, z = y
subl %eax, %ecx     # z = y - x

cmpl %eax, %ebx 
cmovel $0, %ecx     # z = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...