你编程入门了吗
作者:姚冬
链接:https://www.zhihu.com/question/38992723/answer/89013008
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

当我大概搞清楚了一句 “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万字。
阅读更多
版权声明:本文为博主原创文章,想转就转 https://blog.csdn.net/running_nz/article/details/51544766
想对作者说点什么? 我来说一句

Beginning C# Objects

2008年04月13日 24KB 下载

FreeMarker入门手册

2008年12月17日 40KB 下载

Programming.Ruby_第2版_中文版

2011年07月22日 54.2MB 下载

没有更多推荐了,返回首页

不良信息举报

你编程入门了吗

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭