免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2921 | 回复: 8

[函数] while流程最底层是怎么实现的 [复制链接]

论坛徽章:
0
发表于 2013-12-17 21:59 |显示全部楼层
RT,想不明白,不停调用对象?

论坛徽章:
1
金牛座
日期:2013-10-10 22:06:28
发表于 2013-12-17 23:24 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
金牛座
日期:2013-10-10 22:06:28
发表于 2013-12-17 23:34 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2013-12-18 09:57 |显示全部楼层
学一下汇编就知道了

基本就是先判断一下条件,满足就跳转到循环外面。


论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2013-12-18 10:24 |显示全部楼层
komakoh 发表于 2013-12-17 21:59
RT,想不明白,不停调用对象?

看汇编。
cc -S ....

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:032015年亚洲杯之中国
日期:2015-04-22 15:52:45
发表于 2013-12-18 11:03 |显示全部楼层
对象?! 天天睡着醒着想着的就是这个?!

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
发表于 2013-12-18 11:37 |显示全部楼层
有点像最初的basic语言那样:

10 sth
20 sth
30 if (xxx) goto 10

其中,10行的do没有对应指令,直接放30的goto里面去了;而30行相当于 while(xxx)

对应到机器码/汇编上,30行大概会变成这样:
cmp xxx, yyy  //比较xxx和yyy,也可以是其它形式
jnz/jz label_do     //如果上一条指令执行后,标志位非0/为0,则跳到label_do位置继续执行

当然,视具体情况不同,也可能是功能类似的其它指令。

论坛徽章:
0
发表于 2013-12-18 14:40 |显示全部楼层
是我想错了,汇编我会的。。。我以为while语句可以在任何参数变动情况下直接跳出,运行了一下发现不是的。。。只有全部执行完才会进行下一次判断。。。我以为类似中断那种可以直接跳出的东西。。。
objdump了一下发现。。。仅仅是个判断。。。
想知道C++里面有没有什么类似中断的东西。。。

syre 发表于 2013-12-18 09:57
学一下汇编就知道了

基本就是先判断一下条件,满足就跳转到循环外面。

论坛徽章:
0
发表于 2013-12-20 13:03 |显示全部楼层
一种是signal,信号处理

或者更常见的做法是一个事件循环,gui程序都是这样干的。如果不想让业务处理逻辑堵塞事件响应,就得搞成多线程
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP