怎么执行自己写的代码?
知乎有人问:计算机是如何执行一种编程语言的?
很多刚刚入坑的白人可能对此完全没有概念,或者对计算机如何执行我们写下的代码行有一个模糊的概念。
(资料图片)
以x86 CPU为研究对象,我们试着从一个例子来回答这个问题。
为了编程的方便,伟大的计算机先驱们发明了一种又一种编程语言,让我们可以用最容易理解的语法规则来告诉计算机完成我们想要的功能。
例如,一个C语言程序员写了一行代码:
intsum=a+b;简单得不能再简单的C语言语句。
但即使如此简单,极其智能的计算机还是无法理解:这是什么?
这时候就需要一个翻译,负责把人类写的高级语言“翻译”成计算机能理解的东西。这个翻译就是编译器。
上述高级语言语句经过编译器编译链接后,生成一个以x86架构为目标运行平台的可执行exe/elf。使用反编译工具IDA进行分析后,您可以看到这一行代码在编译后是这样的:
Mov eax,a:将变量a的值存储在eax寄存器中。
Add eax,b:将变量b的值和eax寄存器的值相加,结果保存在eax寄存器中。
Mov sum,eax:将eax寄存器的计算结果写入sum变量
看到了吧,就像把一头大象放进冰箱需要三个步骤一样,计算机完成一个程序员的加法语句,也有三个步骤:取出被加数,加上被加数,写出结果。
作者:轩辕之风
来源:编程技术宇宙(ID:轩辕编码)