Как выполняется оператор if на машинном уровне?

как выполняется оператор условия(if) на машинном уровне.


Ответы (1 шт):

Автор решения: AivanF.

Код:

#include <stdio.h>
#include <string.h>

int main() {
    int x = 3;
    if (x > 4) {
        printf("Larger");
    } else {
        printf("Smaller");
    }
}

Результат:

.LC0:
        .string "Larger"
.LC1:
        .string "Smaller"
main:
        pushq   %rbp
        movq    %rsp, %rbp
        subq    $16, %rsp

        // int x = 3;
        // mov – инструкция для перемещения значения
        movl    $3, -4(%rbp)

        // if (x > 4)
        // cmp – инструкция для сравнения значений
        cmpl    $4, -4(%rbp)
        // Если значение больше или равно, перейти к .L2
        jle     .L2

        // Иначе выполняется следующий код
        movl    $.LC0, %edi
        movl    $0, %eax
        call    printf
        // Перепрыгиваем блок else
        jmp     .L3

        // Блок else
.L2:
        movl    $.LC1, %edi
        movl    $0, %eax
        call    printf

        // Блок после if-else, окончание функции
.L3:
        movl    $0, %eax
        leave
        ret

Полезные ссылки:

→ Ссылка