当前位置: 技术问答>linux和unix
谁能说说小程序从开始到失望的过程
来源: 互联网 发布时间:2016-04-25
本文导语: 当然第一步是写程序: #include int count; staic int num; int add(int a,int b) { int x,int y; static add_num; ... } void main() { add(2,3); } 写好后开始编译,连接,运行程序,程序完成功能后消亡;但这只是从宏...
当然第一步是写程序:
#include
int count;
staic int num;
int add(int a,int b)
{
int x,int y;
static add_num;
...
}
void main()
{
add(2,3);
}
写好后开始编译,连接,运行程序,程序完成功能后消亡;但这只是从宏观上看的,从微观细节上面:
如何执行,如何编译,形参实参的变化,函数的调用,堆栈的变化,静态区域和动态区域等等。
#include
int count;
staic int num;
int add(int a,int b)
{
int x,int y;
static add_num;
...
}
void main()
{
add(2,3);
}
写好后开始编译,连接,运行程序,程序完成功能后消亡;但这只是从宏观上看的,从微观细节上面:
如何执行,如何编译,形参实参的变化,函数的调用,堆栈的变化,静态区域和动态区域等等。
|
简单的说:首先是编译程序,C编译器会把你的代码编译成当前操作系统认可的二进制可执行文件格式,
会把你程序中的代码执行和数据分开。分成几个段落。
然后,执行的时候就是操作系统内核的事了,它会把已经翻译成机器语言的你的系统装入内存,然后找到入口,
开始执行,当遇到你的函数时它会跳转到你函数,传递变量和参数,读取你的数据。最后执行完成后,遇到结束
标志,结束程序的执行,退回到操作系统下。
最接近操作系统机器语言的是汇编语言,一般的C编译器都有编译成汇编语言的选项,然后你可以通过汇编代码了解更多。
汇编代码与机器代码基本上是1:1的关系。C语言也是很接近机器语言的编程语言。基本上一个关键字或者符号代表
几条机器指令,比如 main函数,{ } 符号,都会对应程序的启示或者寄存器的几条指令。
会把你程序中的代码执行和数据分开。分成几个段落。
然后,执行的时候就是操作系统内核的事了,它会把已经翻译成机器语言的你的系统装入内存,然后找到入口,
开始执行,当遇到你的函数时它会跳转到你函数,传递变量和参数,读取你的数据。最后执行完成后,遇到结束
标志,结束程序的执行,退回到操作系统下。
最接近操作系统机器语言的是汇编语言,一般的C编译器都有编译成汇编语言的选项,然后你可以通过汇编代码了解更多。
汇编代码与机器代码基本上是1:1的关系。C语言也是很接近机器语言的编程语言。基本上一个关键字或者符号代表
几条机器指令,比如 main函数,{ } 符号,都会对应程序的启示或者寄存器的几条指令。
|
執行,cpu去處理二進制的文件
編譯,不同的compiler,不同的架構下,都會不同,主要就是為了生成二進制文件,有些具有優化的作用
微觀上,都是內存地址之間的跳轉,讀,寫.不同的數據都有各自應該在的地址空間...
編譯,不同的compiler,不同的架構下,都會不同,主要就是為了生成二進制文件,有些具有優化的作用
微觀上,都是內存地址之間的跳轉,讀,寫.不同的數據都有各自應該在的地址空間...