Написать код на ассемблере - Написать функцию Swap, которая меняет местами содержимое двух областей памяти одинаковой длины. void Swap(void *Mem1, void *Mem2, long Len) Mem1 — указатель на первую область памяти, Mem2 — на вторую, Len — их длина в байтах (работоспособность функции при 0 ? Len < 231). В коде реализовать цикл обмена областей памяти блоками по 8 байтов (четверные слова) с помощью двух команд fild и двух команд fistp. Т.е. в качестве буфера обмена будет использоваться стек математического сопроцессора: на каждом проходе цикла в стек FPU помещаются 8 байтов из области памяти Mem1 и 8 байтов из памяти Mem2, затем каждое из них выгружается в другую область памяти. Оставшиеся после цикла обмена четверных слов байты (их может быть от 0 до 7) обменять любым удобным способом. Рассмотреть примеры работы функции. В каждом примере берутся два массива одного вида и одинаковой длины, но с разным содержанием (допустимо использовать как статические, так и динамические массивы). Для них вызывается функция Swap. Массивы рассмотреть двух видов: — вещественных чисел типа float; — символов char (т.е. заполняется некоторой строкой). При этом для каждого вида массивов рассмотреть два случая с разной длиной, т.е. функцию Swap для каждого вида массивов запускать дважды. Всего получается 4 примера. Вывести результаты на экран (два массива до и после вызова функции Swap).
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |