Вернуть значение из функции сборки в вызов функции С++ ⇐ 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.
Ошибка заключается в том, как я использую код, или в самом коде?
Я пытаюсь написать проблему коллатца на ассемблере (просто ради удовольствия). Я только что закончил первую часть. Я вызываю ассемблерный код из функции 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.
Ошибка заключается в том, как я использую код, или в самом коде?
Мобильная версия