内联汇编的好处!

Feb262008
0 评论

code

  1. #include

  2. int main(void)
  3. {
  4. int a = 10;
  5. int b = 20;
  6. int result;

  7. __asm__("cmp %1, %2\n\t"
  8. "jge greater\n\t"
  9. "movl %1, %0\n\t"
  10. "jmp end\n"
  11. "greater:\n\t"
  12. "movl %2, %0\n"
  13. "end:"
  14. :"=r"(result)
  15. :"r"(a), "r"(b));
  16. printf("The larger value is %d\n", result);
  17. return 0;
  18. }

  1. #include

  2. int main()
  3. {
  4. int a = 10;
  5. int b = 20;
  6. int result;

  7. result = a > b ? a : b;
  8. printf("The larger value is %d\n", result);
  9. return 0;
  10. }
Result
zhili-hus-computer:~/Documents zhilihu$ ls -l test a.out 
-rwxr-xr-x   1 zhilihu  zhilihu  13380 Feb 26 19:18 a.out
-rwxr-xr-x   1 zhilihu  zhilihu  13344 Feb 26 19:27 test
zhili-hus-computer:~/Documents zhilihu$ time ./a.out 
The larger value is 20

real    0m0.032s
user    0m0.002s
sys     0m0.007s
zhili-hus-computer:~/Documents zhilihu$ time ./test  
The larger value is 20

real    0m0.062s
user    0m0.002s
sys     0m0.010s