Я пытаюсь настроить два параметра для функции compare(int x, int y)
, но когда я передаю их, я не получаю ожидаемых результатов, и когда я проверяю регистры с помощью gdb, кажется, что они не имеютправильные значения в них.
Я устанавливаю параметры и вызываю функцию следующим образом:
movl $10, (%esp)
movl $10, 8(%esp)
call compare
И эта функция возвращает 1, если x==y
, и 0, если x!=y
compare:
pushl %ebp
movl %esp, %ebp
movl (%ebp), %eax
movl 8(%ebp), %edx
cmpl %eax, %edx
jne .L28
.L29:
movl $1, %eax
jmp .L30
.L28:
movl $0, %eax
jmp .L30
.L30:
popl %ebp
ret
Я устанавливаю обе переменные равными 10 для целей тестирования, но я все еще получаю результат 0