Задать вопрос
dushu_pitona
@dushu_pitona

Как поменять на ассемблере значения двух массивов местами?

Написал такой код, меняет местами только первые 8 символов, а дальше не знаю как продолжить.
void Swap(void* Mem1, void* Mem2, long Len)
{
	_asm
	{
		xor eax, eax
		mov ecx, Len
		mov esi, Mem1
		mov eax, Mem2
		pool :
			fild qword ptr[eax]
			fild qword ptr[esi]
			fistp qword ptr[eax]
			fistp qword ptr[esi]
			loop pool
	}
}
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой 6 комментариев
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Написал такой код, меняет местами только первые 8 символов, а дальше не знаю как продолжить.

Надо ответить себе на следующие вопросы:
- что именно эта функция меняет местами
- почему используются опкоды fild и fistp
- в каких единицах измеряется аргумент Len
- как должны меняться eax и esi внутри цикла
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы