это возврат из процедуры
в ассемблере нет понятия возврата чего-либо, есть только инструкции переходов и перекладывания данных между регистрами и памятью
А как мне поместить результат выполнения асм процедуры в переменную в c++ коде
в самом простом случае нужно перед выходом из процедуры, поместить возвращаемое значение в eax/rax
само значение из регистра никуда не денется после возврата, просто код который сделал call будет сам читать из этого регистра
Ret возвращает указатель на следующую команду, после которой была вызвана функция. То есть совершает прыжок по адресу в стеке. Возврат значения в eax/rax не более, чем языковое соглашение для функций, всё, что надо сделать - поместить значение для возврата в этот регистр и всё.
Примерно так: UINT _XXX_read() { UINT result; _asm { mov eax, 123 mov result, eax } return result; }
и какой размер у uint в х64? ему rax нужен, а это, если не ошибаюсь, long uint
UINT - всегда 32 бит, UINT_PTR - может быть 32/64. Но это всё не важно, потому что у x64 нету директивы _asm.
скорее всего 32 бита
Обсуждают сегодня