在ANSIC 的任何一种实现中,有两种不同的环境

  翻译环境:将源代码转换为可执行的机器代码

  执行环境:用于执行代码

这两种环境可以运行于同一个机器上,也可以运行于不同的机器上

例如交叉编译器:在一台机器上运行,产生的可执行代码可以再另一台机器上运行,操作系统也是如此

----------------------------------》翻译

各个源文件通过编译生成目标文件,链接器通过将目标文件捆绑在一起,同事也可能引入c函数库中的文件,生成可执行文件

目标代码属于机器指令的初步形式,如果我们在编译程序的命令行中加入优化的选项,优化器就会对目标代码进行进一步的优化,从而产生更高的效率。但是优化需要额外的时间,所以我们需要根据不同的情况决定我们是否需要进行优化选项

------------------------------------》编译和链接

在unix系统中,c编译器被称为cc

1:编译并链接一个c源文件

cc pro.c

这条命令会产生一个a.out的可执行文件,中途会产生一个pro.o的目标文件,但是在链接结束后被自动删除

2:编译并链接几个c源文件

cc 所有源文件(中间用空格隔开)

这种方法产生的多个目标文件不会被自动删除,链接过后,用户可以再对报错的文件进行修改,之后仅对改过的源文件进行编译链接就可以了

3:编译一个源文件,并和现存的目标文件一起链接

cc 所有源文件&&所有目标文件

4:编译单个文件,并产生目标文件,之后在进行链接

cc -c pro.c

编译多个产生同样效果也是同上

5:链接多个目标文件

cc  所有文件.o

上面的命令都可以加上-o name中,这样产生的可执行文件就会保存在name中,而不是a.out中

MS-DOS与UNIX有以下几点不同

1:目标文件的名为.obj

2:他的命令为bcc

3:当单个源文件被编译链接的时候,不会删除目标文件

-------------------------------------------------------------》执行

程序的执行也分为多个阶段,首先程序会被载入到内存当中,这个任务由操作系统来完成

然后在宿主环境中,通常一个小的启动程序和程序连接在一起,他负责一系列日常的任务,如收集命令行参数以便程序能够访问到他们,接着,便开始调用mian函数

在运行的过程中,程序将使用一个堆栈,用于存储在运行的过程中的局部变量和返回地址,,同时程序也会使用静态内存,用于存储静态变量,以便在程序运行的过程中不会改变,并且一直保留到最后

-----------------------------------------------------》词法规则

三字母词:标准还定义了三字母词,三字母词就是几个字符的序列,合起来表示另一个字符

1.??(    [          2.??<    {        3.??=     #         4. ??)        ]        5.??>      }        6.??/        \

7.??! |          8.??`     ^

??-   ~

---------------------------------------------------》注释

所有的注释都会被预处理器拿掉,取而代之的是一个空格,因此,注释可以出现在人一个空格可以出现的地方,

但是注意注释不可以嵌套注释

程序必须被载入到内存中才可以运行,在宿主环境中,这个任务由操作系统来完成,在自由式环境中,程序常常存于ROM中,经过初始化的静态变量在1程序执行前能获得他们的值

//想知道输出,运行一下就知道

#include <stdio.h>
main(t,_,a)
char *a;
{return!<t?t<?main(-,-,a+main(-,-_,
main(-, , a+ )+a)):,t<_?main(t+, _, a ):,main ( -, -+t, a
)&&t == ?_< ?main ( , _+, "%s %d %d\n" ):::t<?t<-?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-?_==*a ?putchar(a[]):main(-,_,a+):main((*a == '/')+t,_,a\
+ ):<t?main ( , , "%s"):*a=='/'||main(,main(-,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

C语言的执行的更多相关文章

  1. SQL语言逻辑执行顺序

    SQL语言逻辑执行顺序 2012-12-18 16:18:13 分类: 数据库开发技术 查询的逻辑执行顺序 FROM < left_table> ON < join_conditio ...

  2. 【转】ecshop后台语言项执行漏洞详解

    该漏洞需要能登录ecshop后台权限,简单修改下语言项目,即可在网站植入木马后门. 以下是详细分析 1.登陆到ecshop台后,选择模板管理,语言项编辑,搜索用户信息 为什么要搜索用户 该漏洞需要能登 ...

  3. c语言编译执行过程

    <h4>认识C编译执行过程</h4>认识C编译执行过程,是C学习的开端.简单说C语言从编码编译到执行要经历一下过程: C源代码编译---->形成目标代码,目标代码是在目标 ...

  4. scheme语言编写执行

    scheme是lisp的一种 编辑器能够用emacs.网上有非常多教导怎样编写的 (begin (display "hello") (newline)) 编写完以.scm保存,这里 ...

  5. JavaScript语言精粹--执行环境及作用域,this

    1.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 虽然我们无法访问,但是解析器在处理数据时 ...

  6. C语言中执行到预编译

    在Linux中,执行命令:gcc -o linux.i linux.c -E

  7. Go语言远程执行ssh命令简单封装(支持带交互命令)

    使用包:golang.org/x/crypto/ssh 以下封装一个发送命令的Cli结构体 type Cli struct { IP string //IP地址 Username string //用 ...

  8. C语言程序设计--执行命令

    1.system函数 1.1函数原型 int system(char *command); 1.2解释 system()会调用fork()产生子进程,由子进程来调用/bin/sh -c string来 ...

  9. 你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。

    回调函数,这是异步编程最基本的方法. 事件监听,另一种思路是采用事件驱动模式.任务的执行不取决于代码的顺序,而取决于某个事件是否发生. 发布/订阅,上一节的"事件",完全可以理解成 ...

随机推荐

  1. Wget命令下载、备份博客

    -np http://www.cnblogs.com/memory4young/p/ 参考资料: http://www.cnblogs.com/memory4young/p/wget-backup-b ...

  2. Tengine 常用模块使用介绍

    Tengine 和 Nginx Tengine简介 从2011年12月开始:Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能 和特性. ...

  3. Mastering C# structs

    http://www.developerfusion.com/article/84519/mastering-structs-in-c/

  4. MYSQL 免安装版(windows 7/64)

    本文介绍在本地安装MYSQL数据库,免安装版相关配置 一.下载 mysql下载地址1:http://dev.mysql.com/downloads/mysql/ 二.解压MySQL压缩包 将已下载的M ...

  5. 用淘宝ip地址库查ip

    这是一个通过调用淘宝ip地址库实现ip地址查询的功能类 using System; using System.Collections.Generic; using System.Linq; using ...

  6. Python之路【第三篇】:Python基础(二)

    函数的理解 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 函数作用是你的程序有良好的扩展性.复用性. 同样的功能要是用3次以上的话就建议 ...

  7. OC-copy

    一,堆与栈 1,栈区,stack: 后进先出,由编译器自动分配并释放,一般存放函数的参数值.局部变量 2,堆区,heap:先进先出,由程序员分配和释放 3,全局区,静态区:程序结束后由系统释放, 4, ...

  8. zabbix安装全过程

    在了解<zabbix硬件.软件需求>之后,在你心里应该有备选的机器.今天开始安装zabbix.zabbix需要LNMP或者LAMP环境.环境的搭建不在本章范围内. LNMP环境配置Linu ...

  9. 使用ab压测网页结果分析

    使用ab压测网页结果分析 下载工具:ab 图片来自:http://my.oschina.net/u/1246814/blog/291696?fromerr=JfLeu1jk

  10. 密钥文件snk

    1.(what)是什么? 由一个程序集的标识组成并通过公钥和数字签名(针对该程序集生成)加强的名称,其中的标识包括程序集的简单文 本名称.版本号和区域性信息(如果提供的话).   2.(why)为什么 ...