#include <stdio.h>
#include <iostream>
#include "timetest.h"
void swap(int &p, int &q){
int temp;
temp = p;
p = q;
q = temp;
}
void swap_asm(int *p, int *q){
__asm{
mov eax, p
mov ebx, q
mov q, eax
mov p, ebx
};
}
int main(){
int i, j, temp;
int p, q;
p = 2;
q = 3;
startTest();
for(i = 0; i < 60000; i++)
for(j = 0; j < 60000; j++){
__asm{
mov eax, p
mov ebx, q
mov q, eax
mov p, ebx
};
}
stopTest();
startTest();
for(i = 0; i < 60000; i++)
for(j = 0; j < 60000; j++){
/*temp = p;
p = q;
q = temp;*/
swap_asm(&p, &q);
}
stopTest();
printf("p = %d, q = %d", p, q);
scanf("%d", &p);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgInRpbWV0ZXN0LmgiCgp2b2lkIHN3YXAoaW50ICZwLCBpbnQgJnEpewoJaW50IHRlbXA7Cgl0ZW1wID0gcDsKCXAgPSBxOwoJcSA9IHRlbXA7Cn0KCnZvaWQgc3dhcF9hc20oaW50ICpwLCBpbnQgKnEpewoJX19hc217CgkJbW92IGVheCwgcAoJCW1vdiBlYngsIHEKCQltb3YgcSwgZWF4CgkJbW92IHAsIGVieAoJfTsKfQoKaW50IG1haW4oKXsKCWludCBpLCBqLCB0ZW1wOwoJaW50IHAsIHE7CgkKCXAgPSAyOwoJcSA9IDM7CgoJc3RhcnRUZXN0KCk7Cglmb3IoaSA9IDA7IGkgPCA2MDAwMDsgaSsrKQoJCWZvcihqID0gMDsgaiA8IDYwMDAwOyBqKyspewoJCQlfX2FzbXsKCQkJCW1vdiBlYXgsIHAKCQkJCW1vdiBlYngsIHEKCQkJCW1vdiBxLCBlYXgKCQkJCW1vdiBwLCBlYngKCQkJfTsKCQl9CglzdG9wVGVzdCgpOwoKCXN0YXJ0VGVzdCgpOwoJZm9yKGkgPSAwOyBpIDwgNjAwMDA7IGkrKykKCQlmb3IoaiA9IDA7IGogPCA2MDAwMDsgaisrKXsKCQkJLyp0ZW1wID0gcDsKCQkJcCA9IHE7CgkJCXEgPSB0ZW1wOyovCgkJCXN3YXBfYXNtKCZwLCAmcSk7CgkJfQoJc3RvcFRlc3QoKTsKCgkKCXByaW50ZigicCA9ICVkLCBxID0gJWQiLCBwLCBxKTsKCXNjYW5mKCIlZCIsICZwKTsKCXJldHVybiAwOwp9