![判断是否符合“八位位图”的较快方法.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-2/16/6847dc7f-bf15-4c44-9fee-6903a5e36fbf/6847dc7f-bf15-4c44-9fee-6903a5e36fbf1.gif)
![判断是否符合“八位位图”的较快方法.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-2/16/6847dc7f-bf15-4c44-9fee-6903a5e36fbf/6847dc7f-bf15-4c44-9fee-6903a5e36fbf2.gif)
![判断是否符合“八位位图”的较快方法.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-2/16/6847dc7f-bf15-4c44-9fee-6903a5e36fbf/6847dc7f-bf15-4c44-9fee-6903a5e36fbf3.gif)
全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM处理器中“8位位图”的理解分析(转) “八位位图”要求 8位位图,即常数是由一个8位的常数循环移位偶数位得到的。 引入“八位位图”的原因 ARM规定所有的指令码等长32位,前24位是指令助记符,条件码,寄存器等等,后12位是第二操作数。而第二操作数是32位,但是指令码中只剩12位了,为了能用这12位来表示32位的数就采用了“八位位图”。 “八位位图原理” 如何用12位表示32位的数?8位用来存数据,4位用来存移动的位数。 8位存数据:解释了“该常数必须对应8位位图”。 4位存移位的次数:解释了为什么只能移偶数位。4位只有16种可能值,而32位数可以循环移位32次(32种可能),那就只好限制:只能移偶数位(两位两位地移,好像一个16位数在移位,16种移位可能)。这样就解决了能表示的情况是实际情况一半的矛盾。 判断是否符合“八位位图”的较快方法 看第一个“1”和最后一个“1”相距的距离如果大于8位则一定不是八位图,然后再看移动偶数位能不能把这些数都移到第八位中,如果可以就是“八位位图”。无法表示的32位数, 只有通过逻辑或算术运算等其它途径获得了. 比如0xffffff00, 可以通过0x000000ff按位取反得到.关于ARM处理器中“8位位图”的理解分析 在ARM处理器的汇编语言中,对指令语法格式中的的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”对于这句话,我一开始学ARM时不理解,到了后来为了做设计,去看BootLoader源码时,才认真地在网上查找相关资料,理解了这句话。 首先从ARM指令系统的语法格式说起。 一条典型的ARM指令语法格式分为如下几个部分: S , 其中,内的项是必须的,内的项是可选的,如是指令助记符,是必须的,而为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。 opcode 指令助记符,如LDR,STR 等 cond 执行条件,如EQ,NE 等S是否影响CPSR 寄存器的值,书写时影响CPSR,否则不影响 Rd 目标寄存器 Rn 第一个操作数的寄存器 shifter_operand第二个操作数 其指令编码格式如下:31-2827-2524-2120 19-1615-1211-0 (12位)cond001opcodeSRnRdshifter_operand当第2 个操作数的形式为:immed_8r常数表达式时“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”其意思是这样:immed_8r在芯片处理时表示一个32位数,但是它是由一个8位数(比如:01011010,即0x5A)通过循环移位偶数位得到(1000 0000 0000 0000 0000 0000 0001 0110,就是0x5A通过循环右移2位(偶数位)的到的)。 而1010 0000 0000 0000 0000 0000 0001 0110,就不符合这样的规定,编译时一定出错。因为你可能通过将1011 0101循环右移位得到它,但是不可能通过循环移位偶数位得到。 1011 0000 0000 0000 0000 0000 0001 0110,也不符合这样的规定,很明显:1 0110 1011 有9位。为什么要有这样的规定?本人的理解是: 要从指令编码格式来解释(这就是我为什么一开始讲的是指令编码格式),仔细看表格中的shifter_operand所占的位数:12位。要用一个12位的编码来表示任意的32位数是绝对不可能的(12位数有212种可能,而32位数有232种)。 但是又要用12位的编码来表示32位数,怎么办? 只有在表示数的数量上做限制。通过编码来实现用12位的编码来表示32位数。 在12位的shifter_operand中:8位存数据,4位存移位的次数。 8位存数据:解释了“该常数必须对应8位位图”。4位存移位的次数:解释了为什么只能移偶数位。4位只有16种可能值,而32位数可以循环移位32次(32种可能),那就只好限制:只能移偶数位(两位两位地移,好像一个16位数在移位,16种移位可能)。这样就解决了能表示的情况是实际情况一半的矛盾。 所以对immed_8r常数表达式的限制是解决指令编码的第二个操作数位数不足以表示32位操作数的无奈之举,但在我看来:这个可以说是聪明的做法。因为如果直接用12位数来表示32位操作数,只能表示0 到(212-1)。大于(212-1)的数就没办法表示了。而且细细想来“8位存数据,4位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024届广西桂林市灌阳县重点名校中考英语最后冲刺模拟试卷含答案
- 人大代表简短发言3篇
- 汽车销售每日工作计划共6篇
- 2024届安徽省合肥市北城片区市级名校中考英语考前最后一卷含答案
- 乌龟繁殖的过程作文(5篇)
- 2023-2024学年重庆市大渡口区市级名校中考英语对点突破模拟试卷含答案
- 大型冷冻库建造合同范本(6篇)
- 打台球作文六年级500字(22篇)
- 音乐教案-我们的学校亚克西《我们的学校亚克西》教案-教案
- 2024-2029年中国风扇灯行业市场现状分析及竞争格局与投资发展研究报告
- 2023年A类业余无线电操作技术能力考试题库答案版
- DB37T 3366-2018山东省涉路工程技术规范
- 信息化武器装备智慧树知到答案章节测试2023年中北大学
- 化学检验高级工题库题库(1403道)
- 抖音汽车终端一站式经营指南
- 2023年上海历史高考试题(含答案)
- 备件物资验收标准
- 军人作风纪律【7篇】
- 家和万事兴教学设计-高中政治统编版选择性必修二《法律与生活》
- DL-T 1083-2019 火力发电厂分散控制系统技术条件
- 绿色环保-低碳生活知识讲座
评论
0/150
提交评论