当你学会了什么之后感觉自己的编程算是入门了?
2017-07-07 17:08
351 查看
https://www.zhihu.com/people/yao-dong-27/answers?page=9
当你学会了什么之后感觉自己的编程算是入门了?
姚冬
Next Big Thing
3134 人赞同了该回答
当我大概搞清楚了一句 “Hello world!”是怎么出现在屏幕上的时候
printf 是一个C runtime的函数,“Hello world!" 是一个常量字符串,编码是ASCII的'\0'结尾的,传递给printf的是const char * 类型的指针,指针通过push指令压栈,通过call指令调用函数。
printf会把这个字符串写入一个叫 stdout的抽象文件句柄,而这个文件句柄会被console接管。
当console从stdout读取这个字符串后,会把他写入console的缓冲区,根据当前光标位置决定字符的位置
console的会根据缓冲来刷新屏幕显示
显示字符的时候需要根据当前字体设置,用”Hello world!"的每个字符的Unicode值去计算字体内对应的字符索引,根据索引获取字模。
根据字模来绘制字符图形,用当前字体颜色填充,做字体边缘平滑,生成包含字符的RGB32位图
把RGB32位图复制到console窗口对应的frame buffer
操作系统的图形引擎把窗口的frame buffer渲染到屏幕对应的显存内的frame buffer
显卡根据显存buffer 生成信号给显示器,显示器根据信号调整屏幕上每个像素的颜色和亮度。
终于可以看到“Hello world!”了
注:这只是个粗略过程,中间省略了不少于10万字。
姚冬
Next Big Thing
3134 人赞同了该回答
当我大概搞清楚了一句 “Hello world!”是怎么出现在屏幕上的时候
printf("Hello world!");
printf 是一个C runtime的函数,“Hello world!" 是一个常量字符串,编码是ASCII的'\0'结尾的,传递给printf的是const char * 类型的指针,指针通过push指令压栈,通过call指令调用函数。
printf会把这个字符串写入一个叫 stdout的抽象文件句柄,而这个文件句柄会被console接管。
当console从stdout读取这个字符串后,会把他写入console的缓冲区,根据当前光标位置决定字符的位置
console的会根据缓冲来刷新屏幕显示
显示字符的时候需要根据当前字体设置,用”Hello world!"的每个字符的Unicode值去计算字体内对应的字符索引,根据索引获取字模。
根据字模来绘制字符图形,用当前字体颜色填充,做字体边缘平滑,生成包含字符的RGB32位图
把RGB32位图复制到console窗口对应的frame buffer
操作系统的图形引擎把窗口的frame buffer渲染到屏幕对应的显存内的frame buffer
显卡根据显存buffer 生成信号给显示器,显示器根据信号调整屏幕上每个像素的颜色和亮度。
终于可以看到“Hello world!”了
注:这只是个粗略过程,中间省略了不少于10万字。
相关文章推荐
- 什么最简单最容易入门 谁是自学编程的请介绍一下自己的经验
- 大学学的网络、出来后感觉自己啥也没学会哇~怎么办、有什么好书推荐吗~
- 很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项(我刚学会的!)
- 当你不知道自己学什么的时候就什么都学吧!
- 有时候感觉自己挺那什么的
- 网络编程入门笔记1——socket是个什么玩意儿
- COM编程入门:第一部分 什么是COM,如何使用COM
- 过一段时间看这篇文章不知道自己有什么感觉?
- 聊聊自己编程入门的事
- 为什么感觉自己还是没入门!
- myRoad--两年多感觉对编程刚刚入门
- COM编程入门:第一部分 什么是COM,如何使用COM
- 自己学习C#时感觉入门好的几本书
- Beej的网络编程入门教程 第三篇 什么是套接字
- 【轉】COM编程入门 第一部分——什么是COM,如何使用COM
- COM编程入门--- 第一部分——什么是COM,如何使用COM
- 看着C#的程序,突然之间觉得自己什么也没学会呢?
- COM编程入门:第一部分——什么是COM,如何使用COM
- C#学习一年了,感觉没学会什么
- Web前端研发工程师编程能力飞升之路 (发现自己处于入门)