Нет ничего, что восходит. jge
- это не вызов функции, это просто переход, который нигде не сохраняет старое местоположение.
Так что это в основном просто операторы if
и else
. В псевдокоде это может быть записано как
if (ge) {
// .L4
movq -16(%rbp), %rax
imulq -24(%rbp), %rax
movq %rax, -40(%rbp)
} else {
movq $76, -16(%rbp)
movq $87, -24(%rbp)
}
// .L5
do more stuff
. Обратите внимание, что порядок блоков if/else
противоположен порядку кода сборки, потому что jge
перепрыгивает сразу после следующего блока, когда условие верно.