你编程入门了吗

原创 2016年05月31日 12:53:02
作者:姚冬
链接: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万字。
版权声明:本文为博主原创文章,想转就转

相关文章推荐

VC++您入门了吗?

一、入门:沟通一个观念,手敲代码。 A、《C++程序设计》《C++Primer》等,学习语言基础,手敲所有代码,这是扎马步,提升兴趣、成就感,打下扎实的基础,不再浮躁。 B、《高质量C/C++编程...

Sencha Touch 快速入门2.0 第四章 Api文档看懂了吗?

今天来扯一扯官方文档以及其他的一些东西。大部分问题,其实都是可以通过查阅文档来解决的。   因为文档是没办法直接用浏览器打开来看的,所以请大家先将sencha-touch-1.1.0下的docs...

ADO.NET入门教程(三) 连接字符串,你小觑了吗?

出处:http://www.cnblogs.com/liuhaorain/archive/2012/02/12/2347914.html 摘要       ADO.NET强...

一道简单的编程题,不过您做对了吗?

一道简单的编程题,不过您做对了吗?

结对编程就不需要代码审查了吗?

原文:Does Pair Programming Obviate the Need for Code Review?http://www.softwarequalityconnection.com/2...

C++并发编程实战(读书笔记)——C++内存模型不好理解;无锁数据结构?但是等待不就是被锁住了吗??

C++并发编程实战 目录  [隐藏]  1 基本线程管理2 在线程间共享数据3 同步4 C++内存模型和原子操作5 基于锁的并发数据结构6 设计无锁并发数...
  • cteng
  • cteng
  • 2017-04-11 17:11
  • 362

仿饿了吗微信小程序

  • 2017-08-22 16:30
  • 97KB
  • 下载

【图形学与游戏编程】开发笔记-入门篇3:d3d,opengl以及GPU

(本系列文章由pancy12138编写,转载请注明出处:http://blog.csdn.net/pancy12138) 在上一篇文章中,我们讲了一些需要的基础知识,例如c/c++,线代,window...

测试资料的消灾好了吗的

  • 2010-04-28 08:35
  • 909KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)