首先要感谢
tekkamanninja所作博文
http://blog.chinaunix.net/space.php?uid=20543672&do=blog&id=94265&page=1#comment《关于ARM处理器中“8位位图”的理解分析》(阅读次数达到8000,壮观,敬仰),为我对这个问题的思考带来柠檬水滴入眼球一般的畅爽!
见书中有如下描述“大多数ARM通用数据处理指令有一个灵活的第二操作数(flexible second operand)。”其中的#immed_8r的第二操作数形式让我百思不得其解。查到ZLG的课件(感谢)有如下图表:
#immed_8r这个立即数的要求是满足如上8位位图,即两点要求:
1·能用长度为8位的框框将这个数框起来。
错误示范:先假设#immed_8r值为0x101(00000000 00000000 00000001 00000001)红色加粗部分为9位,无法满足此要求,编译会出错。
2·这个数必须能由一个8位的常数循环右移偶数次得到。
错误示范:设#immed_8r值为0x102(00000000 00000000 00000001 00000010)假如把红色加粗部分看做8位常数框(满足要求1)。可以看出,这是经过奇数次循环右移得到的结果,不满足要求2。
0x102(00000000 00000000 00000001 00000010)假如试图满足要求2,以红色加粗部分看做是由原常数循环右移0次(0、2、4、……、30都是偶数次,后面将解释)得到,则会不满足要求1(9位)。所以编译也会报错。
上面的要求使得#immed_8r不能直接取遍32位所有数(是不是ARM的所有立即数都有这个要求吗?对寄存器的立即数操作呢?后来(11.11.16)学习到:伪指令LDR{cond} register,=[expr | label-expr]貌似能够存入任意32位数,但是具体限制又是什么呢?),为什么不能一步到位,下面根据参考的博文来分析:
ARM的数据处理指令语法通常为(以AND、ORR、EOR、BIC为例):op {cond}{S} Rd,Rn{,Operand2}
但其实它的ARM的指令编码如下:
其中[7:0]位就是要求8位的原因,留给立即数数值的位数只有8位。
而[11:8]位rotate是循环(右移)次数,是4位的。
我设想可能设计者是这样考虑的:就算12个位全部用来存立即数,也只能表示2^12次个数,和2^32次个数相差很远。于是使用循环(右移)次数标记来与8位立即数组合。
但假如每+1,只右移1位的话,全部加满也才右移了2^4=16位(0~15)。所以设定每+1标记,循环右移2位,这样就能移遍32位(0~15 X 2)。
即便是这样,也不能表示完2^32个值,就如同上面的错误示范的数是不符合要求的。这就有了bootload中这样的语句(我复制的是6410的,书是ARM7的,看来学这点一直没变):
bic r1, r1, #0xff00
bic r1, r1, #0xff
组合起来,才能表示#0xffff(指令还没学完……只能说到这里)
ARM门槛高,知识点多而且细……大家继续努力吧~!
关键字:ARM 数据处理指令 immed_8r
引用地址:
对ARM数据处理指令中#immed_8r的理解
推荐阅读最新更新时间:2024-03-16 14:27
嵌入式Linux下ARM处理器与DSP的数据通信
摘要:本文通过一个开发实例详细说明如何通过DSP的HPI接口与运行Linux操作系统的ARM架构处理器进行数据通信。给出接口部分的实际电路和ARM-Linux下驱动程序的开发过程。
关键词:设备驱动程序 嵌入式Linux HPI ARM DSP
1 引言
基于ARM核心处理器的嵌入式系统以其自身资源丰富、功耗低、价格低廉、支持厂商众多的缘故,越来越多地应用在各种需要复杂控制和通信功能的嵌入式系统中。
内核源码开放的Linux与ARM体系处理器相结合,可以发挥Linux系统支持各种协议及存在多进程调度机制的优点,从而使开发周期缩短,扩展性增强。作为数字处理专用电路,DSP的数字信号处理能力十分强大,但对诸如任务管理、通信、
[工业控制]
ARM学习笔记5——程序状态寄存器
当前程序状态寄存器CPSR可以在任何位处理器模式下被访问,它包含条件码标志、中断控制、当前处理器模式以及其他状态和控制信息。CPSR的结构图如下: 一、条件标志位 CPSR最高4位:N(Negative)、Z(Zero)、C(Carry)和V(oVerflow)称为条件标志位。程序名中的算术或逻辑指令可以根据其执行结果修改这些条件标志位,之后的条件执行指令可以根据这些条件标志决定相应的指令是否被执行。各条件标志位的具体含义如下: 1、N(符号位) 该位设置为当前指令运行结果的BIT 的值。当两个由补码表示的有符号整数运算时,N=1表示运算的结果为负数;N=0表示结果为正数或零。 2、Z(零标志位)
[单片机]
ARM、Imagination合伙瓜分MIPS
半年多前传出消息称, 传统处理器设计厂商MIPS正在寻求卖掉自己 ,而潜在的买家有高通、博通、 AMD、Google 等等,但最终得手的却是移动CPU、GPU领域的两个领头羊:ARM、Imagination。他俩一个收购专利、一个收购公司,合伙把MIPS给瓜分了个干净。 MIPS目前拥有专利和专利资产总计580项,其中82项最关键的被称为“保留专利资产”(Retained Patent Properties),直接与MIPS处理器架构设计核心有关,全部归属Imagination,另外498项被称为“剥离专利资产”(Divested Patent Properties),涵盖微处理器设计、SoC设计和其它技术领域,都卖给了ARM母
[半导体设计/制造]
ARM CEO专访万字实录:公司如何赚钱?对美芯片法案是何态度?
现代科技世界最有趣的事情之一是,有一家非常重要的公司位于这一切的中心,但它看起来什么也没做。然而它所做的工作几乎处于你的手机、电视、汽车,甚至你的笔记本电脑中——以及让所有这些东西保持正常工作的数据中心。 这家公司就是 Arm,在过去几年里,Arm经历了很多,他们为现代芯片设计指令集;高通、苹果、三星芯片都是 Arm 芯片。Arm 将指令集授权给这些公司,然后这些公司开始生产具有各种定制功能的芯片。这种模式取得了巨大的成功。 近日,外媒theverge的记者 NILAY PATEL和 Arm 新任首席执行官Rene Haas进行了专访。对包括Arm 如何赚钱的?它的客户是谁?即使它实际上并没有制造芯片,它是否受到芯片短缺的
[半导体设计/制造]
移植嵌入式Linux到ARM处理器S3C2410:设备驱动
设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能: ·设备初始化、释放; ·提供各类设备服务; ·负责内核和设备之间的数据交换; ·检测和处理设备工作过程中出现的错误。 Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open ()、close ()、read ()、write () 等。 Linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以
[单片机]
基于ARM的车辆检测系统控制单元设计
摘 要:本文介绍了利用ARM7内核微处理器LPC2114设计的高速公路车辆检测系统控制单元,着重分析了大容量Flash存储单元的设计和ARM开发相关注意事项,给出了系统原理框图、单元电路设计和软件设计思想。
关键词:ARM微处理器;LPC2114;Flash存储;车辆检测系统
引言
由于交通需求的不断增加,有越来越多的环形感应线圈检测器用于交通检测。这些埋设在道路表面下的线圈可以检测到车辆通过时的电磁变化进而精确地算出交通流量。交通流量是交通统计和交通规划的基本数据,通过这些检测结果可以用来计算占用率(表征交通密度),在使用双线圈模式时还可以提供速度、车辆行驶方向、车型分类等数据,这些数据对于交通管理和统计是极为重要的。通
[传感技术]
ARM 汇编的mov操作立即数的疑问
1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到 faq ARM assembly ,其中描述的几个问题还是值得好好研究一下。 2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文档是一个非常好的习惯。看看GNU的一些reference manual,哪个不是经典而又值得学习并研究的! 3. 学习别人写文档的风格,重点要注意条理性。能够把一个问题、一个知识点阐述清晰明白,这不仅需要对知识点的掌握,还需要良好的语言表达能力以及对文章细心、整洁的排版。我想,这些细节才能够体现一个人的水平和他所能到达的高度。 -- 本篇来看一下m
[单片机]
基于ARM920T设计的SMC接口研究与PC/104总线仿真
引 言 PC/104 是一种专门为嵌入式应用而定义的工业控制总线规范.以IBM PC/AT总线规范为基础的个人计算机及其外围设备在应用上取得了巨大的成就,IEEE一996称之为ISA(工业标准架构:Industry Standard Architecture)总线.PC/104是ISA标准的延伸,定义在IEEE-P996.1中,称为兼容PC嵌入式模块标准.PC/104实质上是一种紧凑型的ISA,其信号定义和Pc/AT基本一致,但电气和机械规范却完全不同,是一种优化、小型、堆叠式结构的嵌入式总线系统.PC/104总线来自于实践发展的需要,同时得益于PC技术的迅速发展,由于其开发环境友好、兼容芯片丰富、标准支持广泛等优势,受到了
[单片机]