你编程入门了吗

原创 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万字。
版权声明:本文为博主原创文章,想转就转

我12岁,4年码龄,我是这么学编程的

大数据文摘作品 编译:余志文、大饼 大家好,我叫摩西。这是我第一次写博客,主要分享下我的编程经验。 国际象棋教给我的道理 我爸爸从小就下国际象棋,小学6年级...
  • dzJx2EOtaA24Adr
  • dzJx2EOtaA24Adr
  • 2017年10月27日 00:00
  • 75

最新编程语言排行榜出炉,看看你学的语言能排第几?

第一个现代意义上的高级语言FORTRAN于1954年提出,其编译器完成于1957年,距1946年第一台电子计算机ENIAC诞生已经11年。从提出到实现花了3年时间,可见第一个开发编译器的不易。在FOR...
  • lf1570180470
  • lf1570180470
  • 2016年12月02日 22:32
  • 756

程序员入门:如何自学编程

你也许曾经想过要学习如何开发软件—或只是想临时的写出一个脚本—但不知道如何入手。 幸运的是,现在的互联网上到处都有丰富的学习资源让你能在短时间里成为一个程序员。 因为互联网的出现,使程序员们可以通过...
  • yafei450225664
  • yafei450225664
  • 2013年05月21日 20:26
  • 35369

《OpenCV3编程入门》学习笔记一:邂逅OpenCV

一:内容介绍本节主要介绍以下内容: 1. OpenCV3环境搭建 2. 快速上手尝试:图像显示、读取并播放视频、调用摄像头采集图像二:学习笔记1. 环境配置在OpenCV3中,项目架构发生了一些变...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2016年09月14日 10:50
  • 4434

零基础小白应该怎么入门编程开发

最近,在交流群里经常有苦逼小白问怎样学编程,对编程有兴趣但无从下手,这是个庞大到让大神们“无言以对”的命题。在知乎、CSDN等论坛上,许多同行也对此类问题进行了探讨,小编就其中认可度较高的回答进行了整...
  • c1782746138
  • c1782746138
  • 2014年10月22日 15:31
  • 7228

MapReduce编程(入门篇)

一. MapReduce 编程模型 还是以一个经典的图片来说明问题. 1. 首先, 我们能确定我们有一份输入, 而且他的数据量会很大 2. 通过split之后, 他变成了若干...
  • zmx729618
  • zmx729618
  • 2016年10月09日 14:41
  • 2519

《OpenCV3编程入门》学习笔记二:快速上手OpenCV

一:内容介绍 本节主要介绍以下内容: 1. OpenCV3基本架构 及 官网使用说明 2. 官方例程介绍 及 简单例程赏析 二:学习笔记 1. OpenCV3的基本架构在书本P7页有介绍...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2016年09月17日 19:40
  • 2544

神经网络编程入门

本文主要内容包括: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 。 第0节、引例       ...
  • sinat_25357975
  • sinat_25357975
  • 2016年05月14日 16:39
  • 1305

Linux Shell 脚本编程从入门到精通 (笔记1)

shell 和vim补充内容 常见的shell Bourne shell,  C shell Korn  shell,这三种情况,bash shell 是Bourn shell 的扩展,位于 /...
  • a158337
  • a158337
  • 2015年03月18日 16:07
  • 4068

黑客技术之初学者编程入门

你是否曾经在用别人开发的工具尝试“入侵”.你是否希望开发出自己的黑器……相信很多人有着这种近似相同的经历。本章将简单介绍黑客编程及工具开发。如果你是初学编程,如果你从来没有接触过黑客软件的开发,如果你...
  • zrmjgllg
  • zrmjgllg
  • 2017年04月06日 13:50
  • 725
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:你编程入门了吗
举报原因:
原因补充:

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