举个简单的例子,平台win32
int main(){
int a=1;
int b=2;
int c;
c=a+b;
return 0;
}
代码生成exe文件后,也是按照段来组织程序的,对于a,b,c三个变量的声明编译器会生成一个数据段,里面存放三个变量,对于语句c=a+b,编译器会生成一个代码段,当然代码段里面还会有其它的一些和程序相关的代码,而且编译器可能还会生成其它的一些段,C语言其实和汇编是一个概念,只是隐藏了一些底层的细节,比如就代码c=a+b而言,用汇编实现的话可能是这样:mov eax,a add eax,b mov c,eax代码不是很准确,只是举个例子,无论是汇编还是C代码,最后生成的都是基于特定操作系统和特定环境的二进制文件,他们的最终目的都是一样的,只是C代码更具可读性,汇编一般都是用寄存器来寻址的,而C封装了寄存器寻址的复杂性,只用简单的变量和指针来寻址数据或代码