类似Common Lisp的多参数加法(二)

2014-07-19 23:03:21 · 作者: · 浏览: 149

 

    让我们来看看真相(clang):

    1 foo(int, int, int, int):                             # @foo(int, int, int, int)

    2     cmpl    %esi, %edi

    3     jge    .LBB0_1

    4     cmpl    %edx, %esi

    5     setl    %sil

    6     cmpl    %ecx, %edx

    7     setl    %al

    8     andb    %sil, %al

    9     ret

    10 .LBB0_1:

    11     xorl    %eax, %eax

    12     ret

    13

    14 bar(int, int, int, int):                             # @bar(int, int, int, int)

    15     addl    %esi, %edi

    16     leal    (%rdi,%rdx), %eax

    17     addl    %ecx, %eax

    18     ret

    和手写的完全没差噢, 稍微是丑一点,不过你看下CL的汇编, 肯定比C++的慢…(逃

    最后,这有啥用?

    多参数加法似乎是没啥用处了,还不如写a+b+c+d呢

    多参数比较还行

    a < b and b < c and c < d