Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要时可以借助完善的ARM指令集。Thumb指令集与ARM指令集的区别一般有如下几点:●转指令。Thumb数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果须放入其中一个操作数寄存器中,而不是第3个寄存器中。在Thumb状态下,单寄存器加载和存储指令只能访问寄存器R0~R7。......
2023-11-19
数据处理指令主要完成寄存器中数据的各种运算操作。数据处理指令的使用原则:
●所有操作数都是32位,可以是寄存器或立即数。
●如果数据操作有结果,结果也为32位,放在目的寄存器中。
●指令使用“两操作数”或“三操作数”方式,即每一个操作数寄存器和目的寄存器分别指定。
●数据处理指令只能对寄存器的内容进行操作。指令后都可以选择S后缀来影响标志位。比较类指令不需要后缀S,这些指令执行后都会影响标志位。
1.MOV指令
MOV{cond}{S}<Rd>,<Shift_operand>
MOV(MOVe)指令将一个立即数、一个寄存器的值或被移位的寄存器的值传送到目的寄存器中。后缀S表示指令的操作是否影响标志位。如果目的寄存器是寄存器PC可以实现程序流程的跳转,寄存器PC作为目的寄存器且后缀S被设置,则在跳转的同时,将当前处理器工作模式下的SPSR值复制到CPSR中。例如:
2.MVN指令
MVN{cond}{S}<Rd>,<Shift_operand>
MVN(MoVe Negative)指令将一个立即数、一个寄存器或被移位的寄存器的值先按位(bitwise)求反,再传送到目的寄存器中。后缀S表示是否影响标志位。例如:
3.ADD指令
ADD{cond}{S}<Rd>,<Rn>,<Shift_operand>
ADD指令将Rn中的数值加上Shift_operand表示的数值,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。例如:
4.SUB指令
SUB{cond}{S}<Rd>,<Rn>,<Shift_operand>
SUB(SUBtract)指令用于把Rn的数值减去Shift_operand表示的数值,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。例如:
5.RSB指令
RSB{cond}{S}<Rd>,<Rn>,<Shift_operand>
RSB(Reverse SuBtract)指令称为反向减法指令,用于把Shift_operand表示的数值减去Rn中的数值,结果放人目的寄存器Rd中,同时根据操作的结果影响标志位。例如:
6.ADC指令
ADC{cond}{S}<Rd>,<Rn>,<Shift_operand>
ADC(ADd with Carry)指令将Rn中的数值加上Shift_operand表示的数值后,再加上CPSR中的C标志位的值,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。例如:
结果(R1,R0)=(R1,R0)+(R3,R2),这样就完成了64位的加法。使用上例的方法,可以做比32位大的加法运算。
7.SBC指令
SBC{cond}{S}<Rd>,<Rn>,<Shift_operand>
SBC(SuBtractwith Carry)指令将Rn中的数值减去shift_operand表示的数值后,再减去CPSR中的C标志位值的反码,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。例如:
结果(R1,R0)=(R1,R0)-(R3,R2),这样就完成了64位的减法。使用上例的方法,可以做比32位大的减法运算。(www.chuimin.cn)
8.RSC指令
RSC{cond}{S}<Rd>,<Rn>,<Shift_operand>
RSC(Reverse Subtractwith Carry)指令将shift_operand表示的数值减去Rn中的数值后,再减去CPSR中的C标志位值的反码,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。例如:
9.AND指令
AND{cond}{S}<Rd>,<Rn>,<Shift_operand>
AND指令将寄存器Rn中的数值与shifter_operand表示的数值按位做“逻辑与”操作结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。常用于将操作数某些位清零。例如:
10.ORR指令
ORR{cond}{S}<Rd>,<Rn>,<Shift_operand>
ORR指令将寄存器Rn中的数值与shifter_operand表示的数值按位做“逻辑或”操作,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。常用于将操作数某些位置1。例如:
11.EOR指令
EOR{cond}{S}<Rd>,<Rn>,<Shift_operand>
EOR(Exclusive OR)指令将寄存器Rn中的数值和shifter_operand表示的数值按位做“异或”操作,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。常用于将操作数某些位取反。例如:
12.BIC指令
BIC{cond}{S}<Rd>,<Rn>,<Shift_operand>
BIC(BIt Clear)指令是位清零指令,将寄存器Rn中的数值与shifter_operand表示的数值按位取反后的值做按位“逻辑与”操作,结果放入目的寄存器Rd中,同时根据操作的结果影响标志位。Shift_operand为32位掩码,掩码中设置了哪些位则清除Rn中的哪些位。例如:
13.CMP指令
CMP{cond}<Rn>,<Shift_operand>
CMP(CoMPare)指令将寄存器Rn中的数值减去shifter_operand表示的数值,但不存储结果,仅仅根据结果设置CPSR中的标志位。例如:
14.CMN指令
CMN{cond}<Rn>,<Shift_operand>
CMN(CoMpare Negative)指令将寄存器Rn的值减去shifter_operand表示的数值的负数值(或者说加上shifter_operand表示的数值),仅仅根据结果设置CPSR中的标志位,不保存结果。例如:
15.TST指令
TST{cond}<Rn>,<Shift_operand>
TST(TeST)指令用于把一个寄存器Rn中的数值和shifter_operand表示的数值进行按位做“逻辑与”运算,仅仅根据结果设置CPSR中的标志位,不保存结果。该指令常用于检测特定位的值。例如:
16.TEQ指令
TEQ{cond}<Rn>,<Shift_operand>
TEQ(Test EQuivalence)指令用于把一个寄存器Rn的值和shifter_operand表示的数值进行按位做“逻辑异或”运算,仅仅根据结果设置CPSR中的标志位,不保存结果。该指令常用于检测两个操作数是否相等。例如:
有关ARM嵌入式系统原理与应用的文章
Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令而不支持ARM指令集。因此,Thumb指令只需要支持通用功能,必要时可以借助完善的ARM指令集。Thumb指令集与ARM指令集的区别一般有如下几点:●转指令。Thumb数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果须放入其中一个操作数寄存器中,而不是第3个寄存器中。在Thumb状态下,单寄存器加载和存储指令只能访问寄存器R0~R7。......
2023-11-19
加载/存储指令用于在寄存器和存储器之间传输数据,Load指令用于将存储器中数据传输到寄存器中,Store指令用于将寄存器中的数据保存到存储器中。例如:2.STR指令STR{cond}
2023-11-19
嵌入式系统的发展大致经历了嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器、嵌入式片上系统和以Internet为标志的嵌入式系统等阶段。嵌入式系统的出现最初是基于单片机的,这一阶段的嵌入式系统硬件是单片机,软件停留在无操作系统阶段,采用汇编语言实现系统的功能。第四阶段是以Internet为标志的嵌入式系统。......
2023-11-19
ARM微处理器已经遍及工业控制、消费类电子通信系统、网络系统、无线系统各类产品市场,基于ARM技术的微处理器应用占据了32位RISC微处理器80%以上的市场份额。ARM嵌入式技术在联网方面的优势,为弧焊电源实现网络化控制奠定了基础。ARM9可以达到180~200MHz的工作速率,它能驱动的周边装置比ARM7多,应用范围也比较广。ATMEL公司的AT91AM9200是基于ARM9的,具有丰富的接口功能。ARM芯片通信接口能力强,一般用于焊接过程及设备人机界面系统的核心芯片。......
2023-06-26
嵌入式系统设计与开发工作中,软件工作量约占全部工作量的80%,其中测试和验证部分的工作量占软件工作量的70%。图1.6嵌入式系统设计与开发流程1.需求分析分析用户的需求:产品的功能、性能、价格、体积、功耗等。嵌入式系统(实现)编程:选择硬件、操作系统、编程语言以及开发工具,编写程序。......
2023-11-19
NFS服务允许挂载的目录以及目录对应的权限在文件/etc/exports中定义、修改和保存。配置NFS的常用方法有两种:方法一:修改etc目录下的/etc/exports脚本。图6.7NFS设置如图6.8所示,点击“添加”按钮,在弹出来的界面中点击“浏览”添加文件夹,如图6.9;主机填“?”图6.8添加NFS共享图6.9选择共享文件夹的位置图6.10设置共享文件夹的基本选项用编辑器打开/etc/exports文件,如图6.11所示:图6.11编辑/etc/exports文件可以看到,被配置的文件夹已经添加到网络共享目录中了。......
2023-11-19
相对于传统的嵌入式系统设计方法,引入了软硬件“协同设计”概念的嵌入式系统设计方法能较好地弥补传统嵌入式系统设计方法的不足。如图11.1所示为一种典型的嵌入式系统协同设计方法。从图中可以看到,嵌入式系统的“协同设计”方法与传统的嵌入式系统的设计方法相比较而言,更重视总体设计下的系统级别的仿真建模和软件、硬件综合设计方法。......
2023-11-19
相关推荐