当前位置:  技术问答>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);
}
写好后开始编译,连接,运行程序,程序完成功能后消亡;但这只是从宏观上看的,从微观细节上面:
如何执行,如何编译,形参实参的变化,函数的调用,堆栈的变化,静态区域和动态区域等等。

|
简单的说:首先是编译程序,C编译器会把你的代码编译成当前操作系统认可的二进制可执行文件格式,
会把你程序中的代码执行和数据分开。分成几个段落。
然后,执行的时候就是操作系统内核的事了,它会把已经翻译成机器语言的你的系统装入内存,然后找到入口,
开始执行,当遇到你的函数时它会跳转到你函数,传递变量和参数,读取你的数据。最后执行完成后,遇到结束
标志,结束程序的执行,退回到操作系统下。
最接近操作系统机器语言的是汇编语言,一般的C编译器都有编译成汇编语言的选项,然后你可以通过汇编代码了解更多。
汇编代码与机器代码基本上是1:1的关系。C语言也是很接近机器语言的编程语言。基本上一个关键字或者符号代表
几条机器指令,比如 main函数,{ } 符号,都会对应程序的启示或者寄存器的几条指令。



|
執行,cpu去處理二進制的文件
編譯,不同的compiler,不同的架構下,都會不同,主要就是為了生成二進制文件,有些具有優化的作用
微觀上,都是內存地址之間的跳轉,讀,寫.不同的數據都有各自應該在的地址空間...

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 说说有没有必要考linux认证!谁考过了!说说细节!
  • 大家说说,这个东西能值多少钱?
  • Mastering EJB的中文版出来了,大家说说好不好?
  • 大家说说,你们用的jdbc driver for sqlserver是哪儿的!
  • 大家说说,微软的jdbc是不是很烂,好多方法不支持
  • 说说你常用的web 报表工具,参与有分
  • 谁能说说Linux的类库啊?(谢谢了,^_^)
  • 大家说说精通unix/linux操作系统的话待遇、前景怎么样?
  • 大家来说说 郁闷至极
  • oops实现,高手进来说说
  • 为什么这么多空间说说根目录空间不足啊
  • 百度运维,大家说说前景怎么样?
  • 说说windows线程和linux线程的区别?
  • 说说你使用的操作系统
  • 谁能说说telnet的原理?
  • 请高手说说JAVA BEAN!!谢谢(我初学,呵呵,领教了。)
  • java能做短信息发送软件吗?接口是什么?谁能明确说说这方面知识
  • 有谁说说jsp中的变量与函数定义
  • 谁能说说什么是j2ee connnector?
  • 大家说说在 Linux 下什么浏览器最好?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3