Вернуть значение из функции сборки в вызов функции С++C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Вернуть значение из функции сборки в вызов функции С++

Сообщение Гость »


Я пытаюсь написать проблему коллатца на ассемблере (просто ради удовольствия). Я только что закончил первую часть. Я вызываю ассемблерный код из функции C++ в другом файле:

if (((n / 2) * 2) == n) n = n / 2; иначе n = 3 * n + 1; .code isCN процедура n:dword mov eax, н xor edx, edx мов ecx, 2 мов r8d, eax div ecx мов r9d, eax мул екх cmp eax, r8d я равный ;еще мов Еакс, 3 мул р8д добавить eax, 1 в отставку равный: ; если n четное мов eax, r9d в отставку isCN ENDP конец Я использую такой код:

extern "C" int isCN(int n); в то время как (n > 1) { С++; n = isCN(n); } validNumbers = правда; счетчики [я] = с; Но когда я пытаюсь его использовать, возвращаемое значение — ерунда.

Когда я смотрю на дизассемблирование, кажется, что он правильно возвращается из eax.

Ошибка заключается в том, как я использую код, или в самом коде?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»