第三天 第一次

c语言编译过程和执行过程

c程序编译过程

预处理:宏定义展开(define)、头文件展开(系统的标准库展开)、条件编译(系统的是几位),同时将代码中的注释删除,这里不会检查语法
编译:检查语法,将预处理后文件编译成汇编文件(汇编语言)
汇编:将汇编文件生成目标文件(二进制文件)
链接:c语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的程序中去

一步编译
gcc -o hello.exe hello.c
分布编译
gcc-E hello.c -o hello.i
gcc-S hello.i -o hello.s
gcc-c hello.s -o hello.o
gcc hello.o -o hello.exe

#include<stdio.h>
//宏定义常量
#define MAX 100
int main(void)
{
	printf("hello world\n");
	printf("%d",MAX);
	return 0;
}

常见代码错误:
1 编辑时异常(字符打错)
2 编译时异常(没有导入头文件)
3 运行时异常

程序执行过程

1 硬盘(外部储存设备)
1–>(加载)2
2–> (保存) 1
2 内存(MEM)

代码区数据区
栈区堆区

2<–>(数据交互)3

3 中央处理器(CPU)
三大框架
运算器
控制器
寄存器

CPU内部结构与寄存器

64位和32位系统区别

寄存器是CPU内部最基本的储存单元
CPU对外是通过总线(地址、控制、数据)来和外部设备交互,总线的宽度是8位,同时CPU的寄存器也是8位,那么CPU就叫8位CPU
有一种CPU内部的寄存器是32位,但是总线是16位,准32位的CPU
所以的64位CPU兼容32位的指令,可以向下兼容
在64位的CPU架构上,运行32位的操作系统,那么这个系统就是32位的

寄存器名字

8位 A B C D
16位 AX BX CX DX
32位 EAX EBX ECX DDX
63位 RAX RBX RCX RDX

缓存

那为什么有缓存呢?因为如果经常操作内存中的同一地址的数据,就会影响速度,玉树就在寄存器与内存之间设置一个缓存
因为从缓存提取的速度远高于内存,当然缓存的价格肯定远远高于内存,不然的话,机器就没有内存了

CPU<---->寄存器<---->缓存<---->内存

程序链接库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值