qiezi的学习园地

AS/C/C++/D/Java/JS/Python/Ruby

  C++博客 :: 首页 :: 新随笔 ::  ::  :: 管理 ::
由于一些原因,又摸起了汇编。

今天歪想了一阵子,拿gcc生成的代码看了一下,结果发现它生成的代码跟我写的对应的汇编代码几乎一样,除了顺序稍有差别以外。

不知道编译骂依据什么规则来生成那些优化代码的,比如:
if (n > 7)
  n = 5;
如果不打开sse,生成的代码会生成这样的代码:
        cmpl    $7, %ecx
        jle     .L6
        movl    $5, %ecx
.L6:
打开sse,生成代码如下:
        cmpl    $7, %ecx
        cmovl   $5, %ecx

这种简单点的比较容易想,复杂的比如bswap指令,怎么写c程序让它生成呢?类似这样的高效指令还挺多,不知道有没有一种规则,依据这种规则就能生成对应的高效机器码。。
posted on 2006-03-08 15:28 qiezi 阅读(213) 评论(0)  编辑 收藏 引用 所属分类: 杂谈