ARM_Assembler
文章平均质量分 60
Greens_Ren
这个作者很懒,什么都没留下…
展开
-
ARM中的LDR使用方法
ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。COUNTEQU 0x40003100……LDR R1,=COUNTMOV R0,#0STR R0,[R1]COUNT是我们定义的一个变量,地址为0x40003100。这中定义方法在汇原创 2013-11-18 16:18:12 · 2133 阅读 · 0 评论 -
什么是ARM的寻址空间
以前学习的时候老纠结这个问题,一直不理解,今天我百度了一下,搜到了相关资料,很有用,贴出来和大家共享。原创 2013-11-18 16:17:52 · 2098 阅读 · 0 评论 -
PC指针的问题
举个小例子,下面是一段ARM汇编代码:地址指令0x3000BL add0x3004MOV r0,#00x3008MOV r1,#10x300CMOV r2,#2AREA test,CODE,READONLY E转载 2014-05-31 15:18:43 · 3602 阅读 · 1 评论 -
ARM9指令详解1
ARM9汇编指令总结1、 LDR指令Arm指令集中,LDR既可以做为加载指令,也可以作为伪指令。1) LDR pc, =MyHandleIRQ ;表示将MyHandleIRQ符号放入pc寄存器中eg:COUNT EQU 0x40003100……LDR R1,=COUNTMOV R0,#0ST转载 2014-05-31 14:27:12 · 1847 阅读 · 0 评论 -
ARM指令集详解2
加载和存储指令ARM微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。 LDR{条件} 目的寄存器, 指令用于将存储器中的一个32位的字数据传送到目的寄存器中。本指令通常用于将存储器上的字数据传送到通用寄存器。LDR R0,[R1]将存储器地址为R1的字数据读入寄存器R0LDR R0,[R1,R2]将存原创 2013-11-18 16:18:16 · 1454 阅读 · 0 评论 -
ARM协处理器指令
协处理器(coprocessor)是一种芯片,用于减轻系统微处理器的某种处理任务。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。 ARM微处理器可支持多达16个协处理器,用于各种协处理器操作,例如协处理器15(CP15),ARM处理器使用CP15的寄存器来控制cache和存储器管理。 ARM协处理器操作指令包括以下5条:CDP:数据操作指令,通常用于初始化协处理器。原创 2013-11-18 16:18:20 · 1591 阅读 · 0 评论 -
ARM中SP,LR,PC使用(转载)
MOV PC,LR看下面这个ARM汇编吧BL NEXT ;跳转到子程序......... ;NEXT处执行NEXT..........MOV PC,LR ;从子程序返回这里的BL是跳转的意思,LR(R14)保存了返回地址PC(R15)是当前地址,把LR给PC就是从子程序返回这里有一下总结首先1.SP(R13) LR(R14)PC(R15)2.lr(r14)的作用问题,这个l原创 2013-11-18 16:18:23 · 1799 阅读 · 0 评论 -
ARM汇编指令AREA的使用
AREA指令指示汇编程序汇编新的代码节或数据节。节是不可分的已命名独立代码或数据块,它们由链接器处理。有关详细信息,请参阅ELF节和AREA指令。语法 AREA sectionname{,ATtr}{,ATtr}...其中: sectionname是将要指定的节名。可以为节选择任何名称。但是,以数字开始的名称必须包含在竖杠内,否则会产生一个缺失节名错误。 例如,|1_D原创 2013-11-18 16:18:05 · 2683 阅读 · 0 评论 -
C和ARM汇编混合编程
在应用程序设计中,如果所有任务均用汇编语言来完成,其工作量是可想而知的,而且不利于系统升级或应用软件移植。事实上,ARM体系结构支持C/C++与汇编语言的混合编程,在一个完整的系统中,除了CPU初始化部分用汇编语言完成以外,其主要的编程任务一般都用C/C++完成。 汇编语言与C/C++的混合编程通常有以下几个方式:在c/c++程序中嵌入汇编指令在汇编程序中访问c/c++定义的全局变量在原创 2013-11-18 16:18:18 · 1505 阅读 · 0 评论 -
ARM指令详解(转载)
算术和逻辑指令ADC : 带进位的加法(Addition with Carry)ADC{条件}{S} , , dest = op_1 + op_2 + carryADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个128 位的数。128 位结果: 寄存器 0、1、2、和 3原创 2013-11-18 16:18:03 · 1013 阅读 · 0 评论 -
ARM之字节对齐
什么叫字节对齐?如果一个数据是以能被4 整除的地址开始连续存储,那么它就是字对齐,否则就是非字对齐。举例说明四字节对齐:对内存进行操作时,被访问的地址必须为4的倍数。如果分配到的地址不是4的倍数时,CPU实际访问的地址还是按照字对齐的方式来操作。用ADS的ARM CComplier下Optimization Level可能引起问题,其中的一个问题就是字节对齐的问题。下面讲讲问题的现象及实原创 2013-11-18 16:17:59 · 1767 阅读 · 0 评论 -
逻辑左移,逻辑右移,算术左移和算…
逻辑左移=算数左移,右边统一添0 逻辑右移,左边统一添0 算数右移,左边添加的数和符号有关 e.g:1010101010,其中[]是添加的位逻辑左移一位:010101010[0]算数左移一位:010101010[0]逻辑右移一位:[0]101010101算数右移一位:[1]101010101 算术左移与算术右移主要用于有符号数逻辑左移与逻辑右移主要用于无原创 2013-11-18 16:18:10 · 3828 阅读 · 0 评论 -
ARM汇编指令详解1
RealView DeveloperSuite(RVDS)工具室ARM公司推出的新一代ARM集成开发工具(上一代为ADS)。支持所有ARM系列核,并与众多第三方实时操作系统及工具商合作简化开发流程。其包含以下组件:GUI(GraphicsUser Interface,图形用户界面)开发环境(CodeWarrior和AXD)、支持软件组成。有了这些部件,用户就可以为ARM系列的处理器编写、调试原创 2013-11-18 16:17:48 · 2288 阅读 · 0 评论