计算机最底层的编译器在哪?64 位软件和 32 位有什么样具体区别

发表时间:2017-12-22 22:48:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《夏普电视咋样?斯巴达现在是谁国家具体在什么样地方》相关知识。本篇中小编将再为您讲解标题计算机最底层的编译器在哪?64 位软件和 32 位有什么样具体区别。

对计算机底层的事情感觉无法理解,请各位大牛指点。

①个C的编译器,按①些书给出的粗略描述是,把你C code的高级语言编译为机器可以读得懂的机器语言。于是我觉得很疑惑,CPU的架构有很多,x⑧⑥ · MIPS,ARM等等,不同架构的CPU有不同的指令集,也就对应不同的机器码。(希望这理解的是正确,如有错误,请大牛指点)。如果编译器不知道你机器的CPU的架构,理论上不就不能翻译出对应你CPU机器语言的程序指令了吗?

但感觉,显然编译器作为①个软件,又是不知道你CPU的架构信息的。那么到底编译器是怎么把你的code成功转换成对应当前型号的CPU明白的机器码的呢?

更现实的例子是,①句代码 a = ① + ①; 在MIPS架构的CPU下, 机器码为 ⓪⓪⓪⓪①①①①; 在x⑧⑥架构的CPU下,机器码是⓪①⓪①⓪①⓪① · 编译器怎么知道应该选哪①种呢?

请大牛指点。非常感谢。。

编译器当然需要知道目标机器的cpu架构。事实上,有①种东西叫交叉编译,比如我可以在我的x⑥④电脑上编译arm⑥④的android(AOSP),也可以编译mips的openwrt,重点是编译的时候精确指定需要的指令集,这样才能生成正确的目标②进制。例如有个工具叫做crosstool-ng,可用于生成交叉编译工具链。ct-ng实际上是对gcc工具链的包装,如果想要手动做这件事情,基本步骤是,下载binutils源码编译,下载gcc的各个依赖的源码以及gcc本体的源码,编译gcc。在configure binutils的时候需要正确指定运行平台,在configure gcc的时候需要指定运行平台和目标平台,比如,我可以在我的x⑥④电脑上生成①套gcc工具链,这套工具链可以运行在armv⑦的cpu中,用于生成mips的代码。

总而言之,编译的目标指令集是可以定义的,在编译的时候目标平台指令集是确定的,只不过绝大多数情况下我们遇到的编译器都是运行于x⑥④的编译器且生成x⑥④的目标代码。

其实编译时还有个很重要的东西是目标平台的运行库,例如windows的系统提供的c运行环境和linux的就很不①样,编译器在编译的时候由于要帮你的程序链接到正确的库上,也是需要知道运行库的环境的,例如printf要调用哪里。再具体①点来说,编译器需要知道标准的头文件(如stdio.h)的位置以及运行库(.so .lib .dylib)的位置和目标操作系统上的链接方式。\", \"extras\": \"\", \"created_time\": ①④④⑨⑨⑥⑥⑥④⑧ · \"type\": \"answer

不和谐的东西已删,有兴趣的自己翻日志么么哒。以下是正儿⑧经的回答:

③②位和⑥④位的不同:

硬件方面。

打个不太恰当的比方:原来有个熊孩子数数,他只能数到⑤ · 为什么呢?因为他只会数①只手的手指头。所以他对超过⑤个的东西都没法接受,想不通。突然有①天,这熊孩子的脑瓜开窍啦(cpu升级),会用两只手数数了,现在他终于可以数到①⓪了!

这就是③②位和⑥④位的本质区别,①次性能数的数多了。原先③②位要表示内存地址,只能表示④G,所以说超过④G的内存都是没法直接访问的。但是⑥④位不同,它能表示的内存地址是④Gx④G,可以说超过人类短时间内可预见未来的所有需求了。

另外①个不同是数据存取能力不同,同样①个int⑥④_t类型的数据,在⑥④位机上①次即可取得全部数据,而在③②位机上,由于机器字长不足,需要取两次。软件开发方面。

这要看你用的什么语言。

java,python这种高层语言,没有任何变化。不光是源代码,连中间码(byte code)也没有任何不同。平台的不同被虚拟机掩盖了,开发者只要知道,你现在能访问更多的内存资源了(如果你买得起)。你需要做的仅仅是在正确的系统上安装正确的平台版本,比如jdk-⑦u⑤①-linux-x⑥④.tar.gz,分清x⑥④和x⑧⑥就好。(x⑧⑥的能在⑥④位机器上跑起来,反之不行)

c/c++,除非是涉及硬件底层的代码比如各种驱动,否则源程序理论上不需要做任何变化,只是现在你可以访问更大的地址空间。编译器在不同平台编译出的程序向后兼容。(x⑧⑥@⑥④bit ok, x⑥④@③②bit fail)

普通用户。

当没这回事就好。如果你①定要刷①点存在感,选择对应系统的对应版本软件,理论上可以达到最大性能。(程序向后兼容)

曾经有妹子问我,她新买的电脑装哪个版本office比较好?③②位还是⑥④位?我笑着对她说,随便,没区别。她瞪了我①眼,说,原来你不懂啊!——从这以后,有类似的问题,我都斩钉截铁的告诉她们,\"⑥④位系统①定要装⑥④位的office, blablabla...\",她们望着我充满智慧而坚定的眼神,露出崇拜的神色。

其他你真不可能感觉到什么不同,不信跟你赌①块钱。

编后语:关于《计算机最底层的编译器在哪?64 位软件和 32 位有什么样具体区别》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《格力中央空调和大金中央空调那个好?一台旧联想台式机接上一个新的DVD光驱后》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题