一句代码,揭开CPU执行原理

cpu执行原理
C语言写入一行代码 sum = a + b 计算机是怎样执行你写的这行代码的?
C语言的一行代码
int sum = a + b;
经过编译器编译后
你从IDA反编译后看到就是这个样子
8B 45 EC mov eax, [ebp+a]
03 45 E0 add eax, [ebp+b]
89 45 F8 mov [ebp+sum], eax
汇编代码对应的机器指令分别为
8B 45 EC
03 45 E0
89 45 F8
十六进制只是为了书写方便
计算机真正能看懂的是二进制的比特流
10001011 01000101 11101100 00000011 01000101 11100000 10001001 01000101 11111000

计算机怎么执行这些比特流的呢?
我们先了解一下CPU的指令格式
x86架构CPU指令格式象这样
CPU指令
每一条指令主要有六个部份,操作码是必须的,标识这条指令是什么功能
CPU是执行指令的核心部件,在CPU中有一个指令寄存器IP,(32位叫eip 64位叫rip),开始执行上面的二进制比特流时,CPU指令寄存器指向第一条指令,开始读取第一个字节:10001011,也就是十六进制的8B,然后开始指令译码
这是x86架构的cpu指令操作码表:
cpu指令操作码表
看到8b是 mov指令往eax塞数据,再往后看十六进制 45的译码
cpu指令操作码表
就是根据ebp寄存器的值+8位偏移来读取数据,再往后读取一个字节,就是偏移值 EC。
第一条指令译出来就是:将ebp+EC位置处的4个字节的数据取出来,放到eax寄存器中。
这就是这一条指令要干的事情,同时CPU得出,这一条指令长度是3个字节,下一条指令的起始地址是在3个字节之后,指令寄存器EIP就向后移动,指向下一条指令的地址:$ + 3
执行完一条以后,又来到指令寄存器EIP指向的地方,随后再次指令译码、执行,不断重复这个过程,依次执行每一条指令。这其实就是CPU工作最基本的原理。

欢迎关注百脑问抖音:杰叔说电脑 抖音号:jscomp

欢迎关注百脑问抖音:表情包零动画 抖音号:bqbao

欢迎关注百脑问小红书:电脑百科知识

-------------本文已结束赏个小钱吧-------------
×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开微信扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

64.7K

相关文章推荐