Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void makeSwaps(int* arr, int len) {
- int num1;
- int num2;
- int sizeofInt;
- __asm {
- //num1 = 0
- mov num1, 0
- //num2 = len - 1
- mov eax, len
- mov num2, eax
- dec num2
- //len = len / 2
- mov eax, len
- shr len, 1
- //sizeofInt = sizeof(int)
- mov sizeofInt, type arr
- //set counter to len
- mov ecx, len
- swap:
- //eax = arr[num1]
- //mov eax, num1 //eax = num1
- //mul sizeofInt //eax *= sizeofInt
- //add eax, arr //eax += arr
- //push eax
- mov ebx, arr //ebx = arr
- mov eax, num1 //eax = num1
- mul sizeofInt //eax /= sizeofInt
- lea eax, [ebx + eax] //eax = ebx + eax
- push eax
- //eax = arr[num2]
- //mov eax, num2 //eax = num2
- //mul sizeofInt //eax *= sizeofInt
- //add eax, arr //eax += arr
- mov eax, arr //eax = arr
- mov edi, num2 //edi = num2
- lea eax, [eax + 4 * edi] //eax = eax + 4 * edi
- pop edx //edx = arr[num1]
- //eax contains addres of i element, edx contains address of j element
- //swap
- push [eax]
- push [edx]
- pop dword ptr [eax]
- pop dword ptr [edx]
- inc num1 //num1++
- dec num2 //num2++
- loop swap //do until ecx == 0
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement