[问]c代码如何生成优化的指令?

[问]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程序让它生成呢?类似这样的高效指令还挺多,不知道有没有一种规则,依据这种规则就能生成对应的高效机器码。。

你可能感兴趣的:([问]c代码如何生成优化的指令?)