2009-03-25から1日間の記事一覧

gcc:末尾再帰の最適化…はされないなぁ…

ASM

ずいぶん前に話題にはなっていたようだけど。 #include <stdio.h> static int sum(int n) { if (n == 1) { return 1; } else { return n + sum(n - 1); } } int main() { printf("%d\n", sum(100)); return 0; } .file "foo.c" .text .p2align 4,,15 .def _sum; .scl </stdio.h>…

vc:末尾再帰の最適化はされたけど

ASM

※末尾再帰の理解が間違っているので参照しないでください(2015/08/07 12:17)一応。 #include <stdio.h> static int sum(int n, int r) { if (n == 1) return r; return sum(n - 1, r + n); } int main() { printf("%d\n", sum(5, 0)); return 0; } ; Listing generat</stdio.h>…

gcc:gccでも最適化はされた?…された!

ASM

下と同じソース。callは無くなったけど、_sumまではジャンプして、結局スタックを積んでるような。 「-O3」にしたら最適化された。 .file "foo.c" .text .p2align 4,,15 .def _sum; .scl 3; .type 32; .endef _sum: pushl %ebp movl %eax, %ecx movl %esp, %…

日時リテラル

なんで「a = 9999-99-99 99:99:99」みたいな日時リテラルって見かけないんだろう? 数値とかと見分けつかないからかなぁ?