Передача аргументов в функцию 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= большое положительное значение

0 ответов

Другие вопросы по тегам