﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C++ Coder-随笔分类-IDE</title><link>http://www.cppblog.com/jackdongy/category/20106.html</link><description>HCP高性能计算架构，实现，编译器指令优化，算法优化，
  LLVM   CLANG   OpenCL   CUDA   OpenACC    C++AMP   OpenMP   MPI</description><language>zh-cn</language><lastBuildDate>Sat, 03 Nov 2012 15:34:03 GMT</lastBuildDate><pubDate>Sat, 03 Nov 2012 15:34:03 GMT</pubDate><ttl>60</ttl><item><title>通过简单快速的设置编译x64位汇编 </title><link>http://www.cppblog.com/jackdongy/archive/2012/10/30/194073.html</link><dc:creator>jackdong</dc:creator><author>jackdong</author><pubDate>Tue, 30 Oct 2012 03:13:00 GMT</pubDate><guid>http://www.cppblog.com/jackdongy/archive/2012/10/30/194073.html</guid><wfw:comment>http://www.cppblog.com/jackdongy/comments/194073.html</wfw:comment><comments>http://www.cppblog.com/jackdongy/archive/2012/10/30/194073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackdongy/comments/commentRss/194073.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackdongy/services/trackbacks/194073.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/lanzhengpeng2/article/details/2947262">http://blog.csdn.net/lanzhengpeng2/article/details/2947262</a><br /><br />
<p>最近在写64位汇编，设置编译命令是件繁琐而又重复的劳动。网上也有不少文章介绍怎么样编译64位汇编的，但都觉得复杂，有的还需要下载其他的汇编软件，最囧的是：有篇文章给出的下载地址下载下来的文件干脆就直接是木马！</p>
<p>既然我们使用VS系列，就不要舍近求远了。使用MS提供的ml64，安全放心，也无兼容性问题。下面开始说明怎么样设置：</p>
<p>一、在vc的安装目录下，找到&#8220;VCProjectDefaults/masm.rules&#8221;，复制出来，改个名字，用记事本等纯文本编辑器打开</p>
<p>二、masm.rules的前面几行的内容如下：</p>
<div class="highlighter">
<ol class="highlighter-xml"><li><span>﻿</span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"utf-8"</span><span class="tag">?&gt;</span><span></span></li><li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">VisualStudioToolFile</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Name</span><span>=</span><span class="attribute-value">"Microsoft&nbsp;Macro&nbsp;Assembler"</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Version</span><span>=</span><span class="attribute-value">"8.00"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&gt;</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">Rules</span><span class="tag">&gt;</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">CustomBuildRule</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Name</span><span>=</span><span class="attribute-value">"MASM"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">DisplayName</span><span>=</span><span class="attribute-value">"Microsoft&nbsp;Macro&nbsp;Assembler"</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">CommandLine</span><span>=</span><span class="attribute-value">"ml.exe&nbsp;/c&nbsp;[AllOptions]&nbsp;[AdditionalOptions]&nbsp;/Ta[inputs]"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Outputs</span><span>=</span><span class="attribute-value">"[$ObjectFileName]"</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">FileExtensions</span><span>=</span><span class="attribute-value">"*.asm"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">ExecutionDescription</span><span>=</span><span class="attribute-value">"Assembling..."</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&gt;</span><span></span></li></ol></div>
<p><span>替换ml.exe为ml64.exe，然后把名称，扩展名修改成你喜欢的，下面是我的修改：</span></p><span>
<div class="highlighter">
<ol class="highlighter-xml"><li><span>﻿</span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"utf-8"</span><span class="tag">?&gt;</span><span></span></li><li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">VisualStudioToolFile</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Name</span><span>=</span><span class="attribute-value">"Macro&nbsp;Assembler&nbsp;x64"</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Version</span><span>=</span><span class="attribute-value">"8.00"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&gt;</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">Rules</span><span class="tag">&gt;</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">CustomBuildRule</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Name</span><span>=</span><span class="attribute-value">"MASM&nbsp;x64"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">DisplayName</span><span>=</span><span class="attribute-value">"Macro&nbsp;Assembler&nbsp;x64"</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">CommandLine</span><span>=</span><span class="attribute-value">"ml64.exe&nbsp;/c&nbsp;[AllOptions]&nbsp;[AdditionalOptions]&nbsp;/Ta[inputs]"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">Outputs</span><span>=</span><span class="attribute-value">"[$ObjectFileName]"</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">FileExtensions</span><span>=</span><span class="attribute-value">"*.asm64"</span><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">ExecutionDescription</span><span>=</span><span class="attribute-value">"Assembling..."</span><span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&gt;</span></li></ol></div>
<p class="alt"><span class="tag"><span>保存，关闭文件。</span></span></p>
<p class="alt"><span class="tag"><span>三、在解决方案资源管理器里，右键点中你的项目，出来一个菜单；选择&#8220;自定义生成规则...&#8221;，在弹出的对话框上，点&#8220;查找现有的...&#8221;，打开你刚才编辑的.rules文件。然后你就应该在&#8220;可用的规则文件&#8221;列表里看到你刚才修改的名字和扩展名（我的叫做asm64），在其左边的检查框里勾上，关闭这个窗口。</span></span></p>
<p class="alt"><span class="tag"><span>四、新建一个文本文件，改名成&#8220;文件名称.你喜欢的扩展名&#8221;，如我的就叫做&#8220;1.asm64&#8221;，然后把这个文件加入到工程里。不出意外，VS就自动根据扩展名选择了你刚才修改的规则；如果出了意外，则单独对&#8220;1.asm64&#8221;进行设置：在解决方案资源管理器里，右键点中这个文件，选择属性；然后在对话框里左边选择&#8220;配制属性/常规&#8221;，然后在工具里选择你刚才命名的规则。如我的叫做&#8220;<font color="#0000ff">Macro&nbsp;Assembler&nbsp;x64</font>&#8221;。点&#8220;确认&#8221;按钮关闭这个对话框。</span></span></p>
<p class="alt"><span class="tag"><span>五、在&#8220;1.asm64&#8221;文件里写上正确的汇编，编译之。不出意外，64位汇编已经正确连接到你的程序里了。</span></span></p>
<p class="alt"><span class="tag"><span>六、打开&#8220;1.asm64&#8221;文件的属性对话框，应该能看到不少设置选项，慢慢琢磨吧。</span></span></p>
<p class="alt"><span class="tag"><span></span></span>&nbsp;</p>
<p class="alt"><span class="tag"><span>show一段64位汇编代码:</span></span></p>
<p class="alt"><span class="tag"><span></span></span>&nbsp;</p><span class="tag"><span>
<div class="highlighter">
<ol class="highlighter-cpp"><li><span>INCLUDE&nbsp;listing.inc</span></li><li class="alt"><span></span></li><li><span>pdata&nbsp;&nbsp;&nbsp;SEGMENT</span></li><li class="alt"><span>___real_value_1&nbsp;DD&nbsp;03f800000r</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;DD&nbsp;&nbsp;03f800000r</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;DD&nbsp;&nbsp;03f800000r</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;DD&nbsp;&nbsp;03f800000r</span></li><li class="alt"><span>___real_value_negation&nbsp;DD&nbsp;080000000H</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;DD&nbsp;&nbsp;080000000H</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;DD&nbsp;&nbsp;080000000H</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;DD&nbsp;&nbsp;080000000H</span></li><li class="alt"><span>pdata&nbsp;&nbsp;&nbsp;ENDS</span></li><li><span></span></li><li class="alt"><span>;</span><span class="keyword">void</span><span>&nbsp;MulAdd(D3DMATRIX&nbsp;&amp;&nbsp;Out,</span><span class="keyword">const</span><span>&nbsp;D3DMATRIX&nbsp;&amp;&nbsp;m1,</span><span class="datatypes">FLOAT</span><span>&nbsp;f,</span><span class="keyword">const</span><span>&nbsp;D3DMATRIX&nbsp;&amp;&nbsp;m2)</span></li><li><span>;{</span></li><li class="alt"><span>;&nbsp;&nbsp;&nbsp;</span><span class="keyword">register</span><span>&nbsp;</span><span class="datatypes">FLOAT</span><span>&nbsp;*&nbsp;pOut&nbsp;=&nbsp;(</span><span class="datatypes">FLOAT</span><span>&nbsp;*)&amp;Out;</span></li><li><span>;&nbsp;&nbsp;&nbsp;</span><span class="keyword">register</span><span>&nbsp;</span><span class="keyword">const</span><span>&nbsp;</span><span class="datatypes">FLOAT</span><span>&nbsp;*&nbsp;pIn1&nbsp;=&nbsp;(</span><span class="datatypes">FLOAT</span><span>&nbsp;*)&amp;m1;</span></li><li class="alt"><span>;&nbsp;&nbsp;&nbsp;</span><span class="keyword">register</span><span>&nbsp;</span><span class="keyword">const</span><span>&nbsp;</span><span class="datatypes">FLOAT</span><span>&nbsp;*&nbsp;pIn2&nbsp;=&nbsp;(</span><span class="datatypes">FLOAT</span><span>&nbsp;*)&amp;m2;</span></li><li><span>;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>(</span><span class="keyword">register</span><span>&nbsp;</span><span class="datatypes">int</span><span>&nbsp;i=15;i&gt;=0;--i)</span></li><li class="alt"><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pOut[i]&nbsp;=&nbsp;pIn1[i]&nbsp;*&nbsp;f&nbsp;+&nbsp;pIn2[i];</span></li><li><span>;}</span></li><li class="alt"><span></span></li><li><span>PUBLIC&nbsp;?MulAdd@@YAXAEAU_D3DMATRIX@@AEBU1@M1@Z</span></li><li class="alt"><span>_TEXT&nbsp;&nbsp;&nbsp;SEGMENT</span></li><li><span>?MulAdd@@YAXAEAU_D3DMATRIX@@AEBU1@M1@Z&nbsp;&nbsp;PROC</span></li><li class="alt"><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;shufps&nbsp;xmm2,xmm2,0</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm0,[rdx]</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm1,[r9]</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;mulps&nbsp;xmm0,xmm2</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;addps&nbsp;xmm0,xmm1</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;[rcx],xmm0</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm0,[rdx+16]</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm1,[r9+16]</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;mulps&nbsp;xmm0,xmm2</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;addps&nbsp;xmm0,xmm1</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;[rcx+16],xmm0</span></li><li class="alt"><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm0,[rdx+32]</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm1,[r9+32]</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;mulps&nbsp;xmm0,xmm2</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;addps&nbsp;xmm0,xmm1</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;[rcx+32],xmm0</span></li><li class="alt"><span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm0,[rdx+48]</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;xmm1,[r9+48]</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;mulps&nbsp;xmm0,xmm2</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;addps&nbsp;xmm0,xmm1</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;movups&nbsp;[rcx+48],xmm0</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;0</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>?MulAdd@@YAXAEAU_D3DMATRIX@@AEBU1@M1@Z&nbsp;&nbsp;ENDP</span></li><li class="alt"><span>_TEXT&nbsp;&nbsp;&nbsp;ENDS</span></li><li><span></span></li></ol></div>
<p class="alt">祝各位同仁_WIN64旅程愉快！</p></span></span></span><img src ="http://www.cppblog.com/jackdongy/aggbug/194073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackdongy/" target="_blank">jackdong</a> 2012-10-30 11:13 <a href="http://www.cppblog.com/jackdongy/archive/2012/10/30/194073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> HMPP_Tutorial_Labs_*中的错误纠正 </title><link>http://www.cppblog.com/jackdongy/archive/2012/10/21/193593.html</link><dc:creator>jackdong</dc:creator><author>jackdong</author><pubDate>Sun, 21 Oct 2012 03:47:00 GMT</pubDate><guid>http://www.cppblog.com/jackdongy/archive/2012/10/21/193593.html</guid><wfw:comment>http://www.cppblog.com/jackdongy/comments/193593.html</wfw:comment><comments>http://www.cppblog.com/jackdongy/archive/2012/10/21/193593.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackdongy/comments/commentRss/193593.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackdongy/services/trackbacks/193593.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/bendanban/article/details/7673951">http://blog.csdn.net/bendanban/article/details/7673951</a><br /><br />
<p>1、Release不能编译成功，提示无法解析的外部变量，或者无法找到**.lib链接库</p>
<p>解决方法是在项目--&gt;属性--&gt;连接器--&gt;常规--&gt;附加库目录，将内容修改为：..\..\..\common\$(PlatformName)\$(ConfigurationName);$(HMPP_PATH)\lib</p>
<p>&nbsp;</p>
<p>2、大家有没有觉得时间及时不大对呀？</p>
<p>呵呵，这个是真的。在lab中，将</p>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; width: 98%; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">fprintf(&nbsp;stdout,&nbsp;"CPU&nbsp;time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;%.2f&nbsp;ms(best)\n",&nbsp;best_measure/10e3);&nbsp;&nbsp;</span></div>
<p>改为</p>
<div style="font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; border-bottom: #cccccc 1px solid; word-break: break-all; padding-bottom: 4px; padding-top: 4px; padding-left: 4px; border-left: #cccccc 1px solid; padding-right: 5px; width: 98%; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;fprintf(&nbsp;stdout,&nbsp;"CPU&nbsp;time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;%.2f&nbsp;ms(best)\n",&nbsp;best_measure/1e3);</span></div>
<p>，实际上就是一个数量级的问题。 </p>
<p>为了不改变CAPS HMPP labs的原有结构，后面的讲解中将重新搭建项目。希望大家关注奥。。<img alt="微笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif" /></p>
<p><br /><br /></p><img src ="http://www.cppblog.com/jackdongy/aggbug/193593.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackdongy/" target="_blank">jackdong</a> 2012-10-21 11:47 <a href="http://www.cppblog.com/jackdongy/archive/2012/10/21/193593.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>