现在开发软件基本上都用高级语言例如C语言,按理说不存在CPU指令架构的兼容问题吧?

我其实很好奇,操作系统也好,应用软件也罢,现在不都是用C语言了?面对不同的CPU,即使是英特尔、AMD的X86还是英特尔的IA-64或者IMB的POWER甚至移动平台的A... 我其实很好奇,操作系统也好,应用软件也罢,现在不都是用C语言了?面对不同的CPU,即使是英特尔、AMD的X86还是英特尔的IA-64或者IMB的POWER甚至移动平台的ARM,我想它们也就是汇编语言的不同吧?C语言或者别的高级语言不可能语法不同吧?那么按理说往其它CPU指令架构开发软件应该相对不难啊?为啥说软件往别的平台移植很难呢? 展开
 我来答
爱问西瓜爱答树
2013-10-24 · TA获得超过1760个赞
知道小有建树答主
回答量:890
采纳率:50%
帮助的人:288万
展开全部
我之前也提出过相关的问题。比你提出的更深。

就CPU架构来说,可以分为X86,ARM。
就OS平台来说,NT Linux UNIX等。
对于底层、驱动层来说,C语言就是汇编语言的功能。要操作的都是寄存器,内存,CPU,IO。这部分是不可以移植的,只是用C语言描述而已,这部分基本是不可移植,因为需要对硬件初始化,配置,不同指令集很多要做修改,甚至重新实现。
你想想,我要用C语言写一个中断,那不是要根据CPU的结构来对不同的寄存器,计时器的值修改吗?底层代码怎么能随便移植呢?
而对于OS以上的应用层,可移植性就比较高。但是还是会因为CPU,OS的差异,要做些修改。因为,C语言只是语言,用的函数跟语言无关。比如C语言可以用标准的C库。stdio.h stdlib.h这些。但是对于windows程序来说,C同样可以用windows.h。但此时,用的就是windows下的函数,linux内核的操作系统就不可以使用windows.h,这是windows的API。所以不可移植,应用层可否移植就看你用的是不是可移植的库。
QT就是一个可移植性很强的库,之所以可移植,是因为同样的源码,编译时链接的lib是各自平台的库,.h头文件只是声明用哪个lib的那个函数。虽然是声明是同一个lib里面的同一个函数。但是事实上不同平台的lib的内容不同,但都是一个效果。所以就可以移植。
实际上就是看一个库,是不是在多个平台支持,如果是的话就可以移植。比如opengl,gtk+,SDL这些就可以在nt linux上相互移植。C库基本是任何操作系统都可以的。
veket的小号
2013-10-24 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3969万
展开全部
对于C语言来说,只能用标准C库写简单“黑框”程序,
复杂程序 只用标准C库肯定是不够的(标准C库提供的API太少),
这就需要调用操作系统提供的API,
但是各家操作系统提供的API是不可能相互兼容的,所以就给移植制造很大的麻烦

想移植程序就要用跨平台 库(API、SDK)
比如C语言的gtk+库最初在linux上把linux的api包装起来,实现了linux版的gtk+库 ,
接着又在windwos包装windows的api,实现了windows版的gtk+ for win32....

再比如使用 C++ 语言 的 Qt 库
有linux系统 x86处理器的的
有windows x86的
linux 系统arm处理器的.......

再如 某个windows系统 的上用mfc开发的软件 mfc是windowsapi的封装 m$ 没打算把打移植到 非windows 系统上
没打算把它一直到 windows不支持的处理器上 那么 就麻烦了 想移植 就要在新的系统或cpu上彻底重来

要是 用qt开发此 程序 ,代码几乎不用或者只要极少的修改 在新平台上 重新编译 就OK

由此可见 移植难主要是没有 考虑将来要移植,而用了可不跨平台的库,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ytdictator
2013-10-24 · TA获得超过400个赞
知道答主
回答量:345
采纳率:0%
帮助的人:90.7万
展开全部
举个栗子吧, 一个小学生,一个中学生,一个本科生,还有个拨屎生。你要出一份有水平的试卷。既要考虑到每个人的知识面,又要考出每个人的水平。 这张试卷觉得好出不??

软件要考虑大小端,不同处理器处理不同字节的效率,有些硬件有这个模块,有些没有,那没有的怎么办? 底层你可能就要软件模拟实现出来。 所以就有虚拟机了,虚拟机把硬件之间的不同屏蔽了,你的软件遵守虚拟机的规则,在所有的虚拟机中都能用了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式