- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8位单片机 16位 32位区别指CPU处理的数据的宽度,参与运算的寄存器的数据长度?如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。如果总线宽度与CPU一次处理的数据宽度不同:1)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数,但称为准多少位。比如著名的Intel 8088,CPU是16位但总线是8位,所以它是准16位。2)总线宽度小于CPU一次处理的数据宽度,则以CPU的数据宽度定义单片机的位数。少位宽不是指总线宽度,也不是存储器的宽度,像51单片机的地址总线是16位的,但是它是8位机。像ARM的存储器也有八位的,但是它是32位机。而是指CPU处理的数据的宽度,也就是CPU一次数据的吞吐量。比如同一条指令:MOV R0 R2在51单片机里面,R0和R2都是8位的,所以51的CPU一次只能处理8位数据。在ARM里面,R0和R2是32位的,所以ARM的CPU一次能处理32位数据。这就是区别。有啥复杂的, 一句话: 参与运算的寄存器的数据长度。8位单片机的数据总线宽度为8位,通常直接只能处理8位数据;16位单片机的数据总线宽度为16位,通常可直接处理8位或16位数据。最本质的区别是内部CPU的字长不同,即CPU处理数据的最大位数不同,有8位和16位CPU的区别,你可以认为是ALU、寄存器的字长等。有的32位DSP芯片其外部接口数据总线是16位的,根据这个来判断是不行的速度上有区别,取决于CPU、寄存器的字长。8位单片机不能直接处理16位数据,要按照8位数据来处理,要分几个过程来完成。而16位单片机,可直接处理16们数据,因为其ALU,寄存器等都是16位的,可一次完成8位单片机要多步完成的动作,特别是对于数据处理,16位单片机有它的优势。而且16位单片机大多数据接口都为16位。说简单了就是16位的比8位快,8位的单片机发展时间长,且价格偏低。最重要的是在许多的应用场合能够胜任开发的任务。16位的单片机在功能上要比8位的强大很多,只在需要的场合使用。你知道2进制吧,你是否知道单片机在进行计算的时候统统是2进制数的运算。所以8位单片机和16位单片机的最根本区别就是,8位单片机可以同时进行2个8位的2进制数相加,而16位单片机则大一倍,可以同时让2个16位的2进制数相加。CPU能同时处理二进制数的位数是多少位,就称其是多少位的计算机。也有数据总线的位数是CPU位数的一半的情况,就称其是准多少位的计算机。比如CPU是16位,数据总线也是16位,则是16位计算机;CPU是16位,数据总线也是8位,则是准16位计算机。原来是16位单片机想改用8位的替代是可以的,但电路及程序都要做相应改变,并且改为8位机后,在功能和速度上要能够满足你工作的需要才行。32位程序移植到64位的要点特别针对c/c++阐述,32位和64位源码级的不同,归根结底,就是机器字(设计指针的宽度)的位宽变化了,因此:1、一些基本类型位宽变化了,还有一些类型位宽不确定,比如说int,相信99%的32位编译器(未作统计)都将int视为32位有符号型,但在64位编译器上,这点是不确定的,ms的编译器,int型都还是32位有符号整型,但印象中存在某个平台的gcc编译器将int位宽增加到64位。诸如此类,需要特别注意2、强制类型转换代码需特别注意,特别是c开发人员,对于指针和整型的理解已炉火纯青,借由整型空间存储指针的方法是很常用的(也是很方便的),由于强制转换代码的存在,编译器并不会提示诸如64位到32位转换中可能的信息损失,这也就导致了运行时可能的问题爆发。这一点需要特别注意,严查代码各处的强制转换。3、模块间调用,严格说这一点还是由位宽变化导致的,做法还是需要筛查类型是否匹配的问题这个主要是要注意8位机代码移植到32位机的问题,如果你51的C写得很规范移植会好点,如果写的不规范麻烦会大点,比如unsigned int这个类型在8位机和32位编译出来的效果就是不一样的。还有就是ARM芯片会有字节对齐的问题,如果51的C里面用到了结构体,那么字节对齐的问题会出现在sizeof(结构体名)。这个函数因为字节对齐问题,可能会算出的结构体字节大小和你想的不一样。其他好像也没有什么需要注意的了32位程序移植到64位需要考虑的问题概述从32位到64位,根本性的区别在于两种数据类型发生了变化:long和pointer。在32位环境下,顾名思义,两者长度都是32位,也就是4个字节;而在64位环境下,都是8个字节。所以,当你把pointer或者long型数据赋给int型时,会发生数据截断(data truncation)。?32位与64位数据模型之间的区别32位应用的数据模型我们称作ILP32(之所以这样命名,是因为int,long,pointe
您可能关注的文档
最近下载
- 作业12:任务2教学单元5工学一体化课程《windows服务器基础配置与局域网组建》之教学单元活动方案.docx VIP
- 一例因丈夫提出离婚导致一般心理问题的咨询案例报告.docx VIP
- 汽轮机课件-超临界汽轮机设备及运行-企管经济-.pptx VIP
- 《交互设计》课件——第6章 流程设计.pptx VIP
- 《北洋军阀统治时期的政治、经济与文化》名师课件.pptx VIP
- 2024-2025学年八年级语文上册期末专项训练:非连续性文本阅读(附答案).pdf VIP
- CRTSIII型板式无砟轨道专项施工方案.doc VIP
- 高血压视网膜病变.pptx VIP
- 汽轮机运行技术.pptx VIP
- 2024年全国国家版图知识竞赛题库及答案.doc
文档评论(0)