Почему большое сравнение стало 1 строкой ассемблерного кода? - PullRequest
0 голосов
/ 01 декабря 2018

Следуя предложению в комментарии здесь , я пытаюсь понять, как Compiler Explorer работает.Мой ввод - следующий фрагмент кода:

int main() {
    double x,y,x0,y0,x1,y1;
    x = 10;
    y = 10;
    x0 = 5;
    y0 = 5;
    x1 = 15;
    y1 = 15;
    if (x > x0 && x < x1 && y > y0 && y < y1)
        return 1;
    return 0;
}

Результат:

    mov     eax, 1
    ret

Я изучил основы ассемблера много лет назад, но я не знаю,или как, это имеет какой-то смысл.Является ли?(Что я пытался найти, так это то, что добавление «else» между двумя возвратами будет иметь какую-то разницу в производительности. По мнению этого сайта, это не так. Но правильно ли я понимаю?)

1 Ответ

0 голосов
/ 01 декабря 2018

Условие верно.Компилятор оптимизирует это;генерирует код для return 1;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...