当前位置: 首页 > news >正文

最好的网站建设公司哪家好英文网站建设的请示怎么写

最好的网站建设公司哪家好,英文网站建设的请示怎么写,营销网站建设技术,wordpress用户权限在哪改http://blog.csdn.net/gengshenghong/article/details/7007100我们知道#xff0c;在C/C代码中#xff0c;可以插入汇编代码提高性能。现在的指令集有了很多的高级指令#xff0c;如果我们希望使用这些高级指令来实现一些高效的算法#xff0c;就可以在代码中嵌入汇编… http://blog.csdn.net/gengshenghong/article/details/7007100 我们知道在C/C代码中可以插入汇编代码提高性能。现在的指令集有了很多的高级指令如果我们希望使用这些高级指令来实现一些高效的算法就可以在代码中嵌入汇编使用SSE等高级指令这是可行的但是如果对汇编不太熟悉不愿意使用汇编的人来说其实也是可以的这就是Compiler Intrinsicshttp://msdn.microsoft.com/zh-cn/site/26td21ds。 PS下面的内容以Windows平台为主对于Linux下也有类似的方法。 1什么是Intrinsics Intrinsics是对MMX、SSE等指令集的指令的一种封装以函数的形式提供使得程序员更容易编写和使用这些高级指令在编译的时候这些函数会被内联为汇编不会产生函数调用的开销。在理解intrinsics指令之前先理解intrinsics函数。 3#pragma intrinsic和#pragma function #pragma intrinsic(function[,function][,function]...)表示后面的函数将进行intrinsic替换为内部函数去掉了函数调用的开销注意有些地方解释为内联但是和内联并不完全相同对于内联可以指定任意函数为内联但是此pragma intrinsic只能适用于编译器规定的一部分函数不是所有函数都能使用而且inline关键字一般用于指定自定义的函数intrinsic则是系统库函数的一部分。参考http://technet.microsoft.com/zh-cn/library/tzkfha43.aspx获取详细的说明。 下面分析这个例子 #include math.h   void foo()   {       double var  cos(10);   }   使用VS2010的32bit的command line编译 cl /c test.c /FA 输出得到其汇编文件 ; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.30319.01           TITLE   C:\tempLab\test.c       .686P       .XMM       include listing.inc       .model  flat      INCLUDELIB LIBCMT   INCLUDELIB OLDNAMES      PUBLIC  __real4024000000000000   PUBLIC  _foo   EXTRN   _cos:PROC   EXTRN   __fltused:DWORD   ;   COMDAT __real4024000000000000   ; File c:\templab\test.c   CONST   SEGMENT   __real4024000000000000 DQ 04024000000000000r   ; 10   ; Function compile flags: /Odtp   CONST   ENDS   _TEXT   SEGMENT   _var$  -8                      ; size  8   _foo    PROC   ; Line 3       push    ebp       mov ebp, esp       sub esp, 8   ; Line 4       sub esp, 8       fld QWORD PTR __real4024000000000000       fstp    QWORD PTR [esp]       call    _cos       add esp, 8       fstp    QWORD PTR _var$[ebp]   ; Line 5       mov esp, ebp       pop ebp       ret 0   _foo    ENDP   _TEXT   ENDS   END   可以看到这里调用了call _cos函数进行运算下面代码修改如下 #include math.h   #pragma intrinsic(cos)   void foo()   {       double var  cos(10);   }   同样的命令编译得到汇编如下 ; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.30319.01           TITLE   C:\tempLab\test.c       .686P       .XMM       include listing.inc       .model  flat      INCLUDELIB LIBCMT   INCLUDELIB OLDNAMES      PUBLIC  __real4024000000000000   PUBLIC  _foo   EXTRN   __fltused:DWORD   EXTRN   __CIcos:PROC   ;   COMDAT __real4024000000000000   ; File c:\templab\test.c   CONST   SEGMENT   __real4024000000000000 DQ 04024000000000000r   ; 10   ; Function compile flags: /Odtp   CONST   ENDS   _TEXT   SEGMENT   _var$  -8                      ; size  8   _foo    PROC   ; Line 4       push    ebp       mov ebp, esp       sub esp, 8   ; Line 5       fld QWORD PTR __real4024000000000000       call    __CIcos       fstp    QWORD PTR _var$[ebp]   ; Line 6       mov esp, ebp       pop ebp       ret 0   _foo    ENDP   _TEXT   ENDS   END   对比之后它们的主要区别的代码段如下 sub esp, 8       fld QWORD PTR __real4024000000000000          fstp    QWORD PTR [esp]       call    _cos       add esp, 8   fld QWORD PTR __real4024000000000000   call    __CIcos   显然使用了Intrinsics之后的cos函数的指令少了很多其调用的内部函数是_CIcos(http://msdn.microsoft.com/zh-cn/library/ff770589.aspx)此函数会计算对栈顶的元素直接进行cos运算所以节省了很多函数调用参数传递等的指令。 仍然参考MSDNhttp://technet.microsoft.com/zh-cn/library/tzkfha43.aspx可以看到其中一段话 The floating-point functions listed below do not have true intrinsic forms. Instead they have versions that pass arguments directly to the floating-point chip rather than pushing them onto the program stack. 当然这是描述其中一部分Intrinsics函数的Intrinsics也有不同的方式进行优化/内联具体参考MSDN查询哪些函数可以使用Intrinsics以及是如何工作的http://msdn.microsoft.com/zh-cn/site/26td21ds。 #pragma function使用格式和intrinsics一样pragma function用于指定函数不进行intrinsics操作也就是不生成内部函数。 最后要知道的一个内容是一个相关的编译选项/Oi http://technet.microsoft.com/zh-cn/library/f99tchzc.aspx /Oi 仅作为对编译器的请求用于将某些函数调用替换为内部函数为产生更好的性能编译器可能会调用函数而不会将该函数调用替换为内部函数。 简单的理解就是告诉编译器尽量使用intrinsics版本的调用当然最终的实际调用依赖于编译器的判断。 也可以参考wiki中http://en.wikipedia.org/wiki/Intrinsic_function关于intrinsic functions来帮助理解其作用。简单来说可以理解为编译器的“内置函数”编译器会根据情况进行一些优化。 4指令集相关的intrinsics介绍 上面介绍的是pragma对intrinsic函数的使用其中介绍了cos还有很多类似的“内置函数版本”。有时候将上面的这些称之为”intrinsics函数“除此之外intrinsics更广泛的使用是指令集的封装能直接映射到高级指令集从而使得程序员可以以函数调用的方式来实现汇编能达到的功能编译器会生成为对应的SSE等指令集汇编。 1. 如何使用这类函数 在windows上包含#include **mmintrin.h头文件即可不同的指令集扩展的函数可能前缀不一样也可以直接包含#include intrin.h这里面会根据使用环境判断使用ADM的一些兼容扩展。 2. 关于数据类型 这些和指令集相关的函数一般都有自己的数据类型不能使用一般的数据类型传递进行计算一般来说MMX指令是__m64http://msdn.microsoft.com/zh-cn/library/08x3t697(vVS.90).aspx类型的数据SSE是__m128类型的数据等等。 3. 函数名 这类函数名一般以__m开头。函数名称和指令名称有一定的关系。 4. 加法实例 下面使用SSE指令集进行加法运算一条指令对四个浮点数进行运算 #include stdio.h   #include intrin.h      int main(int argc, char* argv[])   {       __m128  a;       __m128  b;              a  _mm_set_ps(1,2,3,4);        // Assign value to a       b  _mm_set_ps(1,2,3,4);        // Assign value to a          __m128 c  _mm_add_ps(a, b);    // c  a  b          printf(0: %lf\n, c.m128_f32[0]);       printf(1: %lf\n, c.m128_f32[1]);       printf(2: %lf\n, c.m128_f32[2]);       printf(3: %lf\n, c.m128_f32[3]);          return 0;   }   从代码看好像很复杂但是生成的汇编的效率会比较高。一条指令就完成了四个浮点数的加法其运行结果如下 5总结 1. Intrinsics函数能提高性能会增大生成代码的大小是编译器的”内置函数“。 2. Intrinsics对指令的封装函数直接映射到汇编指令能简化汇编代码的编写另外隐藏了寄存器分配和调度等。由于涉及到的数据类型、函数等内容较多这里只是一个简单的介绍。
http://www.zqtcl.cn/news/206032/

相关文章:

  • 会议专题网站建设报价单网站代码在哪里修改
  • 怎么用net123做网站怎么给企业制作网站
  • 网站建设合同模板网页设计团队
  • 做排行的网站淘宝流量平台
  • 用dw怎么做网站后台做一个网站需要怎么做
  • 沧州地区阿里巴巴做网站修改wordpress标题图片
  • 怎么判断网站开发语言互联网推广模式
  • 做电影网站被找版权问题怎么处理网站做的简单是什么意思
  • 九江网站建设网站制作深圳seo优化服务商
  • 上海网站推广珈维做映射后 内网无法通过域名访问网站
  • 太原网站关键词优化常州企业网站建设公司
  • 网站开发流程详细步骤不用淘宝客api如何做网站
  • xuzhou网站制作wordpress漫画小说
  • 公司建设网站的通知书百度经验官网入口
  • 如何做产品网站的推广静态网页制作总结
  • 网站建设有哪些知识点wordpress 静态
  • 买完阿里云域名如何做网站优化软件排行榜
  • 三五互联网站建设怎么样公司网上推广平台
  • 做网站网页的公司机械网站建设公司推荐
  • 影楼网站制作网站集群建设申请
  • 国内免费的短视频素材网站自己做网站的方法
  • jsp网站建设代码电子印章在线制作生成器免费
  • 叫别人做网站后怎么更改密码一手楼房可以做哪个网站
  • 网站上的图分辨率做多少网站栏目建设存在的问题
  • 山东省建设部网站官网php 开发手机网站建设
  • 新建的网站怎么做seo优化国内最新新闻事件今天
  • ss永久免费服务器河南网站建设优化技术
  • wordpress首页源码深圳seo关键词优化外包公司
  • 网站备案换公司吗网站开发 东莞
  • 济南网站营销彩票网站建设 极云