Доброго времени суток. встал на ровном месте и не могу разобраться в условиях перехода. есть такой код, его смысл найти первое значение большего «е».
foo: ; begin = rdi, end = rsi, e = rdx
section .text
pop rbp
mov rbp, rsp
sub rsp, 8
mov [rbp-8], rdi
.again:
cmp rdx, [rdi]
jl .yes
add rdi, 4
cmp rdi, rsi
jl .again
cmp rdi, rsi
je .no
.yes:
sub rdi, [rbp-8]
mov rax, rdi
jmp .exit
.no:
mov eax, -1
.exit:
push rbp
ret
int foo(int *begin, int *end, int e)
{
int *start = begin;
while(begin < end)
{
if(e < *begin)
break;
begin++;
}
return (begin == end) ? -1 : begin - start;
}