您尚未登录。

#1 2011-08-22 13:51:39

cuihao
所在地: USTC, Hefei
注册时间: 2011-08-19
帖子: 1,223
个人网站

递归main

无聊尝试:

#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:  ~欢迎参与志愿计算~

离线

#2 2011-08-22 17:34:49

cjxgm
忙,却还想养猫?
所在地: 杭州
注册时间: 2011-08-19
帖子: 417
个人网站

Re: 递归main

代码优化好神奇 :em06
话说我到 261792 就溢出了 :em19

离线

#3 2011-08-22 20:14:43

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 递归main

现在的高中生真都不得了...败汇编牛人... :em70

话说我今年才高中毕业,却只会C++和Python... :em19

离线

#4 2011-08-22 21:15:34

cjxgm
忙,却还想养猫?
所在地: 杭州
注册时间: 2011-08-19
帖子: 417
个人网站

Re: 递归main

[attachment=0:pyj9ucvg]<!-- ia0 -->snap2.png<!-- ia0 -->[/attachment:pyj9ucvg]
某表示汇编不难 :em09

离线

#5 2011-08-22 21:34:35

cuihao
所在地: USTC, Hefei
注册时间: 2011-08-19
帖子: 1,223
个人网站

Re: 递归main

:em20 某表示其实不怎么会汇编,懂一点基础,能凑合着看而已。
LS的系统编程吗?完全不懂耶。


Site: CVHC.CC   Twitter: @cuihaoleo   Org: LUG@USTC
AD:  ~欢迎参与志愿计算~

离线

#6 2011-08-23 13:00:06

cjxgm
忙,却还想养猫?
所在地: 杭州
注册时间: 2011-08-19
帖子: 417
个人网站

Re: 递归main

本来是想写OS的
但越写越觉得麻烦
“已经有 Linux 了,我再写个OS好干嘛”
于是就放弃了

离线

#7 2011-10-07 12:23:25

koc
会员
注册时间: 2011-08-20
帖子: 132
个人网站

Re: 递归main

:em21 看来我还得继续努力


我的个人小站:https://elephantus.moe
求来访。

离线

#8 2011-10-07 18:57:35

QUO1991
GUNDAM
注册时间: 2011-08-26
帖子: 82
个人网站

Re: 递归main

:em19  :em19  :em19
。。。

离线

#9 2013-06-16 17:45:59

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 递归main

不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#10 2013-06-16 17:49:56

phoenixlzx
晩ご飯だよー
注册时间: 2011-08-19
帖子: 1,789
个人网站

Re: 递归main

xtricman 说:

不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。

这帖子是论坛开张第三天的帖子.....

离线

#11 2013-06-16 21:18:11

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: 递归main

我见过有个不使用条件语句打印 1-1000 整数的程序,就是用的 main 递归。

在线

#12 2013-06-22 15:32:50

Mosalut
会员
注册时间: 2012-04-06
帖子: 53

Re: 递归main

你说的OS是Operation SYSTEM嘛?
我也想写 但是不会
但是不知到递归main有什么用啊

离线

#13 2013-06-25 11:02:16

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 递归main

phoenixlzx 说:
xtricman 说:

不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。

这帖子是论坛开张第三天的帖子.....

呀!!这个真的没看时间,抱歉了。。。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#14 2013-06-25 17:27:20

reverland
root
注册时间: 2012-02-04
帖子: 356
个人网站

Re: 递归main

xtricman 说:

不懂汇编,但是我一般不使用优化,总觉得还是凭本事自己写更好的代码比较好。编译器优化觉得好不靠谱阿。

没啥不靠谱。基本上就是优化下运算,处理变量的方式、循环、分支跳转和缓存经常使用的值(gcse?)。反正觉得自己动手优化未必有编译器优化的好,起码我做不到T T
当然过早的优化是万恶之源,原来的程序有问题或不划算的优化怎么优化都是浪费


>>>>>>>>>jekyll博客>>>>>>>>>>
<<<<<<<<<更残念的vimwiki<<<<<<<<<
本人vim控,偏偏喜欢lisp

离线

页脚