Как использовать внешнюю функцию C в сборке? - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю код, который вызывает функцию C, которая получает квадрат root целого числа. Функция C является внешней и находится в моей папке. При вызове я не знаю, как задать ему параметр, чтобы он знал, что рассчитать

Я использую NASM Intel x86_64, Ассемблер g cc, я не знаю текущую редакцию. Я использую Linux

В настоящее время мой код:

xor rsi, rsi       ;just clears rsi
mov rsi, r15       ;r15 held the value that is supposed to be the parameter
call square

В настоящее время он просто печатает 0, поскольку не принимает правильное значение.

Как мне получить его в параметре?

Спасибо.

1 Ответ

1 голос
/ 28 апреля 2020

В соответствии с Соглашением о вызовах AMD64 ABI System V первый аргумент должен быть в регистре rdi.

Вам необходимо скопировать значение в rdi вместо rsi.

...