免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2376 | 回复: 6

求教语言跨平台的具体解释 [复制链接]

论坛徽章:
0
发表于 2012-10-30 14:06 |显示全部楼层
很多地方讲到跨平台,首先平台的意义是什么?
对与操作系统来讲是硬件,就是cpu。那么对于编程语言,平台是什么?是操作系统吗?
我们讲linux能支持很多cpu体系结构,那么它实现这种硬件可移植性的方式是什么?是不是linux将许多CPU体系结构的特性抽象出来,它的源代码中含有这么多体系结构的参数,但对于特定的某一台机器,内核中一些部分也是不需要的。
另外对于语言的可移植性,说到C语言,JAVA语言的跨平台可移植性,他们的实现方式是怎么样的?对于JAVA,对应一个操作系统是不是有它特定的JVM。也就是对于语言的可移植性是因为有不同的编译器运行在不同的平台上呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2012-10-30 20:33 |显示全部楼层
AI0723 发表于 2012-10-30 14:06
很多地方讲到跨平台,首先平台的意义是什么?
对与操作系统来讲是硬件,就是cpu。那么对于编程语言,平台是 ...

内核上层的结构统一,下层实现因硬件而异.
C语言在源码上可以实现跨平台

论坛徽章:
0
发表于 2012-10-30 23:51 |显示全部楼层
回复 2# cjaizss


   那C语言在源代码的层次上可以跨平台,是怎么实现的?
为什么说C语言是可以直接操作硬件的语言,那我们在编译环境下用C语言写成源代码,为什么还跟所在操作系统有关系呢,很多情况都需要系统调用,比如对显卡的操作,可以不通过系统调用直接写个C程序吗?那为什么操作系统又说所有对底层硬件的操作都要通过系统调用呢?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2012-10-31 00:41 |显示全部楼层
AI0723 发表于 2012-10-30 23:51
回复 2# cjaizss
驱动也可以用C语言写

论坛徽章:
0
发表于 2012-10-31 10:38 |显示全部楼层
AI0723 发表于 2012-10-30 23:51
回复 2# cjaizss

c语言在源码上是可移植的。
这句话意思是c语言本身是可移植的,c语言本身是操作系统无关的。这里说的c是指ANSI C
但是c语言的标准库有一部分是需要操作系统api的支持,但这都是后端和运行时的事情,主要由编译器来帮你完成。所以不同平台的编译器和libc是不一样的。
如果你在你的程序里引用到特定平台的api或库(比如说在win下引用windows.h,在linux下引用linux/目录下的头文件),那你的程序还是不可移植的。
java的可移植性是由不同平台不同的虚拟机来实现的,因为java编译成特殊的字节码,然后由虚拟机解释。
不是有句话吗,c是一次编写,处处编译。java是一次编写出处运行。

论坛徽章:
0
发表于 2012-10-31 10:50 |显示全部楼层
AI0723 发表于 2012-10-30 23:51
回复 2# cjaizss
为什么说C语言是可以直接操作硬件的语言,那我们在编译环境下用C语言写成源代码,为什么还跟所在操作系统有关系呢,很多情况都需要系统调用,比如对显卡的操作,可以不通过系统调用直接写个C程序吗?那为什么操作系统又说所有对底层硬件的操作都要通过系统调用呢?

保护模式下,在用户态好像不能直接访问硬件的吧,内核态是可以的
实模式的操作系统是可以直接访问硬件的

论坛徽章:
0
发表于 2012-10-31 14:06 |显示全部楼层
sqfasd 发表于 2012-10-31 10:50
保护模式下,在用户态好像不能直接访问硬件的吧,内核态是可以的
实模式的操作系统是可以直接访问硬件的 ...


保护模式下,用户态也可以直接访问硬件。至少X86上可以。
WINDOWS 不行是因为OS作死了
LINUX 下面调用个IOPL(3) 就可以访问硬件了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP