zoukankan      html  css  js  c++  java
  • VC简单嵌入汇编

    转自:http://blog.csdn.net/arcsinsin/article/details/8126473

    内嵌汇编的使用方法是:
    __asm

          语句

    }
    你可以把它插入程序中的任何位置,非常灵活。

    让我们看一个可以将两个正整数相加的程序:

    • #include <iostream>
    • using namespace std;  
    • void main( )  
    • {  
    •     unsigned int a,b;  
    •     cin >> a;  
    •     cin >> b;  
    •     __asm //下面是内嵌汇编...
    •     {  
    •         mov eax, a  ;可以像这样直接对eax赋值  
    •         mov ebx, b;  
    •         add eax, ebx 
    •         mov a, eax ;可以直接将eax的值赋给a  
    •     } 
    • //内嵌汇编部分结束...
    •     cout<<a<<endl;  
    • }  

    编译运行之后的结果和C/C++写是一样的!
    1 2

    3

     

    那既然汇编和C++实现的结果都一样,而且写汇编还要考虑烦琐的细节,写起来比C/C++慢。不像C/C++这样的高级语言方便。为什么我们还有必要用汇编呢?

    因为汇编更接近底层,更接近机器语言,直接对硬件调用,执行起来效率更高。像写一些要求比较高的软件,就需要写部分汇编。

    之前,测试程序运行时间的问题,更精确的方法就是用汇编写的。

    • // VC 6.0 中的ASM 代码
    • long HighStart,LowStart; 
    • long numhigh,numlow; 
    • //获取代码运行开始时cpu内部计数器的值
    • __asm 
    • CPUID 
    • RDTSC 
    • mov HighStart, edx 
    • mov LowStart, eax 
    • //这里放你要测试的代码
    • //获取代码结束时cpu内部计数器的值,并减去初值
    • __asm 
    • CPUID 
    • RDTSC 
    • sub eax, LowStart 
    • mov numlow, eax 
    • mov eax,edx 
    • sbb eax,HighStart 
    • mov numhigh,eax 
    具体可以参看:http://blog.sina.com.cn/s/blog_71ded6bf01015vxd.html
  • 相关阅读:
    Linux下MongoDB的基本操作
    PHP curl及并发curl封装函数实现
    根据ip地址获取地区信息的接口
    修改Samba服务的监听端口
    定时脚本更新svn文件
    第一次直面http的301跳转
    ASP.NET MVC 学习之路-6
    ASP.NET MVC 学习之路-5
    C#静态构造函数
    HTML5新特性学习-2
  • 原文地址:https://www.cnblogs.com/qinfengxiaoyue/p/3481060.html
Copyright © 2011-2022 走看看