1.计算机结构
- 中央处理单元(CPU)
- 内部有无数个寄存器
- 功能:从内存中获取并执行一条又一条指令
- 指令地址存在寄存器1,获取后的指令存在寄存器2,更新寄存器1中的地址(下一条指令的)
- 不同CPU制造商使用的指令系统和编码格式不同
- ==Intel CPU 看不懂 ARM CPU 能看懂的机器语言
- 不同CPU匹配不同的编译器
- 随机存取内存(RAM)
- 永久内存存储设备
- 例:机械硬盘、固态硬盘
- 外围设备
- 例:键盘、鼠标、触摸屏
2.编译器
- 作用:人能看懂的高级语言程序 翻译成 计算机能理解的机器语言指令集
- 也可以说是 源代码 转换成 可执行代码
3.机器语言
-
数字指令码
4.高级编程语言
1.C语言
- 优点:
- 可移植性
- 强大且灵活,许多编译器都是C语言写的
- 简洁
- 自带函数库(由于没有官方标准,UNIX实现提供的库已成为标准库)
- 灵活
- 便于修改
- 缺点:
- 错误难以察觉
- 晦涩(甚至有国际CC语言混淆代码大赛)
- C是编译性语言
- 编译!=运行;先编译后运行
- 编译过程:
- 步骤1:编译器将源代码翻译为特定的机器语言(中间代码,缺失启动代码(操作系统不同,启动代码不同)及库,非完整程序,无法运行)
- 步骤2:编译器(这里精确来说是链接器)将中间代码与 需要的C库的代码或其他代码合并为最终程序(一个用户可以运行的可执行文件(其中包含机器语言代码))
- 在编译过后,就是运行程序(即运行刚刚生成的可执行文件)(不同环境运行前的准备不同)
- C++是C语言的超集
5.操作系统
1.UNIX
1.1 C语言
- 编译器:UNIX C
- 源文件:.c 例:inform.c
- 编译命令:cc inform.c
- 目标代码文件(最普遍的中间代码形式):inform.o (但生成了可执行文件后就会被删除,除非是有多个源代码文件)
- 可执行文件:a.out
- 运行命令:a.out
2.GNU项目
- 产品:GNU编译器集合(也称GCC,包括GCC C编译器)
- 许多使用gcc命令的系统,都用cc作为gcc别名
3.LLVM项目
- cc的替代品
- 产品:Clang编译器
4.Linux系统
- 类似于UNIX,但用的是GCC C编译器
5.集成开发环境(Windows)
- 简称IDE,大多数是C和C++结合的编译器
- 举例:Microsoft Visual Studio