Здравствуйте уважаемые форумчане, недавно начал ознакомление с ассемблером, и ввиду пока что слабой осведомленности в данном вопросе сразу столкнулся с следующей проблемой: в университете у нас на всех машинах стоят 32х разрядные системы и соответственно преподают нам язык именно с расчетом на учебные компьютеры, дома же у меня стоит 64х разрядная система, а так как синтаксис для данных, как мне удалось разузнать(спасибо дедушке гуглу за это). Теперь перейду к конкретным примерам.
Функция для поиска среднего арифметического трех чисел:
.intel_syntax noprefix
.globl avg3_asm
.type avg3_asm, @function
avg3_asm:
push rdx
push rbx
mov rax, [rsp + 12]
add rax, [rsp + 16]
add rax, [rsp + 20]
mov rbx, 3
cltd
idiv rbx
pop rbx
pop rdx
ret
//Функция для запуска на си:
# include <stdio.h>
extern int avg3_asm(int, int, int);
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%d\n", avg3_asm(a, b, c));
return 0;
}
Ввод: 1,2,3 Вывод: 4195845
А теперь вопрос, чего я не понимаю в этой жизни, что не так с моим кодом, и что собственно возвращает функция на ассемблере, т.к. предполагалась, что это будет целое число?