分享
 
 
 

瞎侃编译和解释

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

早上起床无聊,所以写点什么来浪费能量。

从cpu到操作系统

cpu能够执行的是二进制表示的指令,确切的说是基本指令。然后cpu中有一些微代码,然后就把一些非基本指令也作为指令一样能够用了,而cpu内部会对这些复杂的指令进行解释。而操作系统架在硬件之上,又提供了一些服务和操作。最常见的是对于磁盘文件,或者进程线程这些东西的支持。其实是又一次扩展了你能够使用的功能,但是又限制了一些你的权限,比如你不能直接指定地址的进行写入之类的。而你对于一个磁盘文件读写功能的调用,表现出来可能是用unix中的某些强大的系统提供的小工具,然后利用进程间通信的管道之类的东西得到输出。也可能是利用win32中的一些系统提供的dll,利用里面的c的函数提供的一些api。还又可能是你直接用汇编调用中断,直接让操作系统处理中断得到结果。可以看到,从系统小工具,到api到系统中断,之间都有封装。而封装其实是一种解释,也就是你调用的是一些比如是ReadFile的api,然后这个操作并不是静态的成为二进制代码在编译期就成为指令一类的东西,而是在运行的时候由操作系统来解释,从而执行。所以说常用的封装其实是一种解释执行的办法。当然,就是连系统中断其实都要认为是解释了,按照这样的说法。

从源代码到可执行文件

另一个要注意解释的是运行在操作系统上的二进制表达的可执行文件和字符表达的源代码之间。这个是最常见的解释和编译进行辨析的地方。从汇编源代码到可执行文件是非常著名的编译了,是的的却却的编译。c的源代码也是。c++的也是,不过c++的某些东西就不完全是了,比如异常的处理。可以看到是需要运行时支持的功能都是不能完全静态翻译的,需要动态的解释。而最早的basic就是纯粹的解释执行了,你输入源代码然后解释器一行一行的读,然后给出输出。

在编译和解释之间玩平衡

最好玩的是在解释和编译直接玩平衡。python和java这些都是。他们在解释之前进行了一定的编译,比如java把源代码变成byte code的.class文件,python也有类似的pyc文件,其实也就是能够在运行的时候省去了语法和结构的分析,直接执行的是一种中间的语言。其实是把解释分成了编译和解释两部分。编译的结果是另外一种语言,而解释的就是那种中间语言了。只是中间语言比纯粹人类都能够看懂的源代码更加适合运行时快速的解释执行。但是java在真正解释的时候又弄了一些小花招,那就是所谓的just in time的技术。它预先读取一些byte code表示的代码,然后在你执行到那儿之前把那些byte code翻译成为本地的机器码,从而使得真正执行到的时候速度很快。奥妙就在于预先读取和预先编译。这个是真正有新意的把解释和编译进行融合的做法。而使用的技术和cpu的缓存优化技术很像。甚至受到这个启发,我们还能够把cpu中的pipeline和数据指令双缓存的技术给用到对于解释语言的解释执行之中。

总之,解释和编译其实都非常有用。而且大家平时并没有注意到很多东西都非别是什么。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有