1972年,开发UNIX 时设计了C,怎么开发UNIX?
汇编语言:为特殊的CPU设计的一系列内部指令,不同的CPU使用不同的汇编语言
C可移植,BASIC和FORTRAN不可移植吗?有IBM BASIC和苹果BASIC
C编译器:把C语言转换成计算机内部指令的程序。比如vc, gcc, clang。
C很强大:UNIX是用C语言写的,可以用BASIC或者Python写UNIX么?其它语言的很多编译器和解释器也都是C语言写的。
C在哪些地方流行:嵌入式,微处理器。
FORTRAN流行的领域:科学编程。
CPU工作原理简单描述:
1)从内存取指执行。1G CPU 1秒钟执行10亿次,10个小目标啊;
2)CPU有若干个寄存器,每个寄存器存一个“数字”,这个“数字”可能为下一条指令的内存地址,可能是一条指令;
3)CPU能理解的指令有限(指令集)
4)指令的作用:许多指令都用于请求计算机把一个数字从位置1移到位置2,如从内存到寄存器。
字符也是以数字形式存储在计算机中吗?是的!每个字符都有一个数字码。
计算机如何完成相加操作?用机器语言编写如下步骤:涉及2个寄存器和多个内存地址。
计算机看不懂 total = mine + yours这么简单的计算怎么办?编译器闪亮登场。编译器就是翻译官,翻译并生成机器语言文件(.o或者可执行程序)
不同CPU制造商的指令系统和编码格式?不同。
“ARM CPU” 能认识 “Intel i7 CPU” 编写的机器语言程序吗?切,什么都不是!
但是ARM CPU可以有ARM的编译器,Intel CPU可以有Intel的编译器。
题外话:以前600W的超级计算机只能简单计算,现在的手机,计算能力都比它强数百倍,还可以看视频,听音乐!
第一个C标准:ANSI C(C90)
第二个C标准:C99
1)目标1:支持国际化变成,提供多种方法处理国际字符集(问:怎么处理的?)
2)目标2:解决类似将C移植到64位CPU问题
3)目标3:支持科学和工程计算
注意:编译器也要修改,同步支持C99的这些改动。语言有了新特性,翻译官也要学习啊
第3个标准:C11,目的是跟进新技术,例如支持多处理器的计算机。
编译器运行链接器。
中间文件有多种形式,最普遍的形式叫做“目标文件”,“目标文件”为什么不可执行,因为它缺少“启动代码”,还缺少库函数。“启动代码”充当程序和OS之间的接口。
链接器的作用:合并目标代码、启动代码和库。
UNIX中怎么编译?敲UNIX自带的C编译器cc:
cc inform.c // 生成a.out
问题:为什么找不到“目标代码文件”:inform.o?
答:只有一个源文件,就会被链接器删除.o。如果有多个源文件,则保留目标代码文件。
GCC是什么?
GCC是编译器集合,其中包含“GCC C”编译器。GCC属于1987年开始的GNU项目。
题外话:Clang是FreeBSD(一个UNIX版本?)的默认C编译器。
如何选择c11标准进行编译?gcc -std=c11 inform.c // "-"开始,表示选项
C编译器不是Windows安装包的一部分。可以下载Cygwin和MinGW,这样就可以通过命令使用GCC编译器集合。
有些编译器生成带.asm的汇编语言文件。
IDE:VS编译器(理解为带界面的编译器)
C和C++的区别,阅读参考资料IX.......
getchar():暂停等待一次键的按下。
用vs编译c程序:选win32控制台应用程序 -> 空项目。
题外话:许多linux发行版都可以安装在windows中!