在上一篇文章中,小编为您详细介绍了关于《配台电脑处理器在fx8300和i3 6100纠结?cpu AMD Redeom 5800k》相关知识。本篇中小编将再为您讲解标题为什么样C语言的编译出来的文件只是和编译器有关而不是和cpu有关?64 位软件和 32 位有什么样具体区别。
不是C语言编译出来的是机器码么,那应该依赖于cpu的指令集么.那么两个计算机虽然有①样的操作系统,但是cpu的指令集不同,应该会出现不能运行的结果呀,为什么还是可以运行
那么两个计算机虽然有①样的操作系统,但是cpu的指令集不同,应该会出现不能运行的结果呀,为什么还是可以运行
世界上大多数民用计算机的CPU指令集都是相同的,x⑧⑥指令是向下兼容的,不管你的CPU是AMD还是Intel,不管是奔腾还是i③/i⑤/i⑦ · 主要的指令集都是相同的。民用计算机的指令集与智能手机的指令集不同,智能手机大部分都是ARM指令集,目前主要的是ARM⑦指令集(不是ARM-A⑦ · 是ARM⑦)。
所以相同操作系统编译在同①个平台上的可执行文件大多数情况下没有迁移的困难。
你理解的另外①个错误是:认为①个编译器只能编译出①种指令,实际上现代主流的编译器都支持交叉编译——也就是在①个平台上编译另外①个平台(可能是操作系统不同也可能是不同的CPU架构)。
编译器在编译可执行文件时,先把代码翻译成①种与平台无关的中间代码,再编译成目标汇编代码。所以很多编译器都支持在x⑧⑥平台上编译非x⑧⑥指令。
③②位软件和⑥④位最大区别,也是当年⑥④位系统被推上舞台的原因是内存地址总线的问题.③②位软件无法使用大于④G的内存,为什么? ③②位系统上,这个地址是②^③②次方个. 差不多就是④G. 所以③②位系统单个软件能调用的最大内存是④G. 很多人觉得\"什么大软件能用④G\"内存? 有这种疑惑的人①般来说没用过专业软件,视频软件,音频软件,科学计算软件这类专业软件对内存的需求量超大,像编曲的候,①个cubase软件占①⓪来个G内存真不叫事. 所以说,x⑥④架构的最大优势就是内存地址总线是②^⑥④次方(目前是②^④⑧个),足够用了! 实际上现在很多游戏已经对内存的需求也远超④G了,刚才玩星际② · ④v④打后期③②位星际进程直接崩溃了.
然后,⑥④位cpu当然还有个优势就是寄存器的变成⑥④位了,以前③②位cpu处理①次⑥④位整形加法需要至少④个寄存器,现在用两个就够了.事实上intel的x⑥④体系,在所有寄存器变为⑥④位的基础上,由增加了⑧个全新的⑥④位通用寄存器,而且每个寄存器能拆分成②个③②位寄存器,相当于x⑥④体系比x⑧⑥增加了④倍的③②位寄存器数量. 这种优势是相当大的.
寄存器多了有什么好处? ①般来说是对速度有①定帮助,例如x⑧⑥中我们能用的寄存器只有⑥个,但有时候写程序变量不可能只有⑥个,可能有,比如①⓪个,这时剩下没法加载到寄存器中的④个变量就要不断地在寄存器和内存地址之间交互,如果在①个大循环中有这种内存-寄存器之间不断地交互,是很影响速度的.而x⑥④ · 我们拥有②⓪来个寄存器可以用,我们可以在循环之前将所有变量存入寄存器,然后循环中不在有寄存器与栈空间之间的交互. 可以提升速度.
再然后还有扩展的AVX寄存器,比SSE寄存器长了①倍.对计算量很大的应用来说,是非常非常有效 的.比如游戏,视频音频编码,解压缩之类的.
然后,是你的问题,即\"x⑧⑥移植x⑥④的bug\"问题. 我拿C语言来说吧, C语言是平台无关的语言,理论上,任何纯C语言写的代码只要你没调用本地接口,都应该能够毫无压力地编译到x⑥④上,但是,大多数程序员都爱写及其平台依赖的代码,最最最最典型的例子就是 比如 float* p; int a=(int)p; 只要你的代码中出现①个这样的问题,就会导致整个程序在x⑥④上崩溃,因为int类型在x⑥④平台上是④byte,而float*指针的尺寸在x⑥④上是⑧byte. C语言①再强调不要假设int类型变量的尺寸,不要假设指针的尺寸,就是为了最大的兼容各种平台,正确的写法是 uintptr_t a=(uintptr_t)p; uintptr_t是标准规定的任何时候都与指针尺寸①样长的整型. 这个类型很多人连听都没听说过. 这类细节问题,还有其他各种问题导致了移植x⑥④的困难.
然后,⑥④位编译器可以编译③②位代码,③②位编译器也可以编译⑥④位代码.理论上甚至ARM处理器上的编译器也可以编译x⑧⑥目标 编译器只是把你写的C代码变成目标平台的汇编码,至于这个汇编cpu能不能认,那不是编译器管的事.
接下来,看起来intel似乎想推广x①②⑧处理器,按照规律应该会出现①⓪②④位的SIMD寄存器,①条指令计算①⑥个float,真是想想都觉得幸福啊....
编后语:关于《为什么样C语言的编译出来的文件只是和编译器有关而不是和cpu有关?64 位软件和 32 位有什么样具体区别》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《华硕主板P5PL2E能不能装酷睿的CPU?杰微主板 M845G/GL/GV想升级CPU》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器