Передача аргументов в функцию Assebly
Я пытаюсь передать некоторые аргументы в функцию, но она не получает их правильно. Я хочу умножить некоторые матрицы, и я хочу передать: адрес матрицы 1, адрес матрицы 2, адрес матрицы, в которой я хочу получить результат, и размер матрицы.
matrix_mult:
pushl %ebp
pushl %ebx
pushl %edi
pushl %esi
movl %esp, %ebp
movl 8(%ebp), %edi
movl 12(%ebp), %esi
movl 16(%ebp), %ebx
movl 20(%ebp), %ecx
*the rest of the algorithm*
После этих строк значения в , , , неверны.
Вызов функции выглядит так — попытка умножения на себя и сохранение результата вmatrix2
. matrix
иmsizze
хранятся правильно.
main:
*reading msize and matrix*
pushl msize
pushl $matrix2
pushl $matrix
pushl $matrix
call matrix_mult
addl $16, %esp
В отладчике мне показывает, что:edi
= 2esi
= большое отрицательное значениеebx
= большое положительное значениеecx
= большое положительное значение