你编程入门了吗
来源:互联网 发布:windows程序设计教材 编辑:程序博客网 时间:2024/05/16 07:31
作者:姚冬
链接:https://www.zhihu.com/question/38992723/answer/89013008
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/38992723/answer/89013008
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
当我大概搞清楚了一句 “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万字。
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万字。
0 0
- 你编程入门了吗
- 面向对象,你入门了吗?
- C#你真的入门了吗?
- 当你学会了什么之后感觉自己的编程算是入门了?
- C#,你真的入门了吗?(CSDN副总韩磊谈访录)
- 自学设计,你真的入门了吗?
- 程序员V.S.编程语言:你上“贼船”了吗?
- 程序员V.S.编程语言:你上“贼船”了吗?
- 程序员V.S.编程语言你上“贼船”了吗
- 你真想到了50岁还靠编程来养家糊口吗?
- 你真想到了50岁还靠编程来养家糊口吗?
- 你真想到了50岁还靠编程来养家糊口吗?
- 结对编程的正确姿势,你会了吗?
- 结对编程的正确姿势,你会了吗?
- 你的编程技巧已经过时了吗?
- ABAP入门程序,你会了嘛?
- 对入门编程语言的分析——不管你现在是什么水平,看了都有用
- 学了这些你可以算jQuery入门了
- mysql修改密码后,phpMyadmin无法登陆
- 新闻搜索浏览
- android studio报错Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled解决方案
- 专题一 贪心算法总结
- iOS新特性扩展之Today分享(2)
- 你编程入门了吗
- 【整理】html知识点
- Android 获取屏幕显示信息
- 服务器架构演变之路学习
- Android 获取memoryinfo
- 【整理】html5知识点1
- 训练3 习题24
- OC语言5—封装
- android ethernet 代码分析