无聊尝试:
#include <stdio.h>
int count=0;
int main ()
{
printf("%d\n", ++count);
return main();
}
gcc,不优化或O1优化,溢出了:
1
2
......
523526
523527
[1] 16952 segmentation fault ./a.out
加O2或O3优化就死循环了,不会栈溢出呢。
原因是gcc太智能了,发现了我的企图,就把死递归改成死循环了。摘取gcc生成的汇编代码片段:
.L2:
movl count(%rip), %esi
movl $.LC0, %edi
xorl %eax, %eax
addl $1, %esi
movl %esi, count(%rip)
call printf
jmp .L2
Site: CVHC.CC Twitter: @cuihaoleo Org: LUG@USTC
AD: ~欢迎参与志愿计算~
离线
代码优化好神奇 :em06
话说我到 261792 就溢出了 :em19
Giumo Clanjor (哆啦比猫/兰威举)
Where there is a hacker, there is art. | Dogfooding myself. (C++ / Lua / Perl / Rust)
离线
离线
[attachment=0:pyj9ucvg]<!-- ia0 -->snap2.png<!-- ia0 -->[/attachment:pyj9ucvg]
某表示汇编不难 :em09
Giumo Clanjor (哆啦比猫/兰威举)
Where there is a hacker, there is art. | Dogfooding myself. (C++ / Lua / Perl / Rust)
离线
:em20 某表示其实不怎么会汇编,懂一点基础,能凑合着看而已。
LS的系统编程吗?完全不懂耶。
Site: CVHC.CC Twitter: @cuihaoleo Org: LUG@USTC
AD: ~欢迎参与志愿计算~
离线
本来是想写OS的
但越写越觉得麻烦
“已经有 Linux 了,我再写个OS好干嘛”
于是就放弃了
Giumo Clanjor (哆啦比猫/兰威举)
Where there is a hacker, there is art. | Dogfooding myself. (C++ / Lua / Perl / Rust)
离线
离线
离线
不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。
这帖子是论坛开张第三天的帖子.....
离线
我见过有个不使用条件语句打印 1-1000 整数的程序,就是用的 main 递归。
离线
你说的OS是Operation SYSTEM嘛?
我也想写 但是不会
但是不知到递归main有什么用啊
离线
xtricman 说:不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。
这帖子是论坛开张第三天的帖子.....
呀!!这个真的没看时间,抱歉了。。。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。
没啥不靠谱。基本上就是优化下运算,处理变量的方式、循环、分支跳转和缓存经常使用的值(gcse?)。反正觉得自己动手优化未必有编译器优化的好,起码我做不到T T
当然过早的优化是万恶之源,原来的程序有问题或不划算的优化怎么优化都是浪费
>>>>>>>>>jekyll博客>>>>>>>>>>
<<<<<<<<<更残念的vimwiki<<<<<<<<<
本人vim控,偏偏喜欢lisp
离线