当前位置: 首页 > Linux

电脑系统漫游-编码原理及编译系统

时间:2023-04-06 18:54:17 Linux

信息=位序列+上下文每一个二进制数0或1代表一个位(bit),八个位组成一个字节。程序员通过编译器创建的文本文件称为源程序(如hello.c)。源程序实际上是一个位序列,其中每个字节、两个字节或四个字节代表一个文本字符。字符编码语言字节关系标准英文一个字节代表一个文本字符ASCII汉字两个字节代表一个文本字符GB2312,BIG5,Unicode...下图是hello.c的ASCII码代表编码小知识:GB2312编码:简体中文汉字编码国家标准,汉字采用双字节编码。BIG5编码:台湾繁体中文标准字符集,采用双字节编码。GBK编码:1995年发布的汉字编码国家标准,是GB2312编码的扩展,对汉字采用双字节编码。包含国标GB13000-1中的所有中日韩汉字,BIG5编码的所有汉字。GB18030编码:2000年发布的汉字编码国家标准,是GBK编码的扩展,涵盖了中文、日文、韩文和中国少数民族文字。GB18030字符集对字符进行单字节、双字节和四字节三种编码方式。兼容GBK和GB2312字符集。Unicode编码:国际标准字符集,为世界上各种语言的每个字符定义了唯一的编码,以满足跨语言、跨平台的文本信息转换。只包含ASCII字符的文件称为文本文件,其他所有字符称为二进制文件。综上所述,系统中的所有信息,从文件、程序到数据,都是用位序列表示的。区分不同数据对象的唯一方法:看数据对象的上下文。在不同的上下文中,一个字节序列可能表示整数、浮点数、字符串、机器指令等。汇编语句,然后转换成一系列的低级机器语言指令,最后将这些指令以一种称为可执行目标程序的格式打印好包,存储为二进制磁盘文件。从源程序hello.c到可执行的目标文件hello,这个过程分为四个阶段。执行这四个阶段(预处理器、编译器、汇编器、链接器)的程序构成了编译系统。预处理阶段预处理过程主要处理源代码中那些以#开头的预编译指令,主要处理规则如下:①删除所有#define,展开所有宏定义;②处理所有条件编译指令,如#if、#ifdef等;③处理#include预编译指令,将引用的头文件插入到预编译指令的位置。④删除所有注释//和/**/;⑤添加行号和文件标识符,如#2"hello.c"2,使编译器生成行号信息,方便调试,编译时生成行号信息,在编译错误或警告时可以显示行号信息;⑥保留所有#pragma编译器指令,因为编译器需要用到它们;编译阶段生成汇编语言文件(汇编语言:用文本格式描述低级机器指令),如下图在编译阶段,汇编语言被翻译成机器指令(一条机器指令就是一串二进制代码).在链接阶段,链接器ld对每个目标文件进行组装,解析符号依赖和库依赖,生成可执行文件。比如hello.c程序调用了printf函数,而printf函数存在于一个printf.o文件中,ld负责将这个文件以某种形式合并到hello.o程序中,最终得到hello文件。关注公众号,让我们一起努力