编译型程序和解释型程序的区别

编译型程序和解释型程序的区别

我们站在OS操作系统的角度更加深入的理解编译型程序和解释型程序的区别。

解释型语言

解释型语言,也称为脚本语言。例如JavaScript ,Python,Monkey脚本等。

从本质上来看,它们本身是文本文件,是某个应用程序的输入,这个应用程序是脚本解释器。

脚本语言中的代码从来没真正上过 CPU 去执行, CPU 的 cs: ip 寄存器从来没指向过它们。在 CPU 眼里只看得到脚本解释器(即用来解释脚本的语言),而这些脚本中的代码, CPU 从来就不知道有它们的存在。

例如:下面这个PHP程序。

<?php
	echo "abcd"; 
?>

PHP解释器在分析这个文本文件时,发现里面的 echo 关键字,将其后面的参数获取后就调用 C 语言中提供的输出函数,如 printf ( echo 的参数)。就是类似这样的思想。

我们在执行一个 PHP 脚本时,其实就是启动一个 C 语言编写出来的解释器而己,这个解释器就是一个进程,和一般的进程是没有区别的,只是这个进程的输入则是这个 php 脚本文件而已。

编译型语言

编译型语言编译出来的程序,运行时本身就是一个进程。

它是由操作系统直接调用的。也就是由OS操作系统加载到内存后,操作系统将 CS: IP 寄存器指向这个程序的入口,使它直接上 CPU 运行。

参考资料

  • 《操作系统真象还原》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值