arm汇编指令对比记忆(整理)

arm汇编指令对比记忆(整理)

ID:8803520

大小:98.50 KB

页数:11页

时间:2018-04-08

arm汇编指令对比记忆(整理)_第1页
arm汇编指令对比记忆(整理)_第2页
arm汇编指令对比记忆(整理)_第3页
arm汇编指令对比记忆(整理)_第4页
arm汇编指令对比记忆(整理)_第5页
资源描述:

《arm汇编指令对比记忆(整理)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、参考资料:1.RichardBlum,ProfessionalAssemblyLanguage2.GNUARM汇编快速入门,http://blog.chinaunix.net/u/31996/showart.php?id=3261463.ARMGNU汇编伪指令简介,http://www.cppblog.com/jb8164/archive/2008/01/22/41661.aspx4.GNU汇编使用经验,http://blog.chinaunix.net/u1/37614/showart_390095.html5

2、.GNU的编译器和开发工具,http://blog.ccidnet.com/blog-htm-do-showone-uid-34335-itemid-81387-type-blog.html6.用GNU工具开发基于ARM的嵌入式系统,http://blog.163.com/liren0@126/blog/static/32897598200821211144696/7.objcopy命令介绍,http://blog.csdn.net/junhua198310/archive/2007/06/27/1669545.

3、aspx从网上找到一些关于ARM伪指令的资料,现整理如下:一.Linux汇编行结构任何汇编行都是如下结构:[:][}@comment[:][}@注释LinuxARM汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。【例1】定义一个"add"的函数,返回两个参数的和。.section.text,“x”.globaladd@givethesymboladdexternallinkageadd:ADDr0,r0,r1@addinputargumentsMOVpc,lr@returnfromsu

4、broutine@endofprogram1.LDRLDRR0,=0X3FF5000;伪指令,把0X3FF5000这个地址送给R0 LDRR0,0XFF      ;把立即数0xff送给R0LDRR0,=&FF      ;&相当于0X BICR0,R0,#%1011;.#表示立即数,%表示二进制LDRR1,=0x3ff5000   ;伪指令R1=0X3FF5000LDRR1,0x3ff5000    ;存储器访问指令R1=[0x3ff5000]2.adr与ldr比较adrr0,InitSystem ;ldrr1

5、,=InitSystem;伪指令adrr0,InitSystem编译时汇编成:subr0,PC,#offsettoInitSystemLDRr1,=InitSystem,这种方式读取的地址值在连接时已经被固定了,这种代码不是位置无关的。遇到LDR伪指令时,汇编编译器将该地址值保存到一个缓冲区(literalpool)中,然后将该LDR伪指令处理成一条基于PC到该数据缓冲区单元的LDR指令,从而将该地址值读取到寄存器总,这时,要求该数据缓冲区到PC的距离小于4KB。如果该目标地址值为一个外部地址值或者不在本数据段内

6、,则汇编译器在目标文件中插入一个地址重定位伪操作,当连接器进行连接时生成该地址值。LDRr1,=InitSystem汇编成:LDRR1,[PC,#offsettoLitpool1]------------------------------------------------------adr用来加载地址,例如adrr0,var1 ldr用来加载地址处的内容,例如ldrr0,var1 上面的这种语法只能从.text段中加载但ldrr0,=var1可从任意段中加载地址ldr有伪指令和非伪指令,伪指令后面的立即数前加

7、= ADR在编译时会被替换成一条add或者sub指令,如果替换不了则报错。相对PC寻址 ADRL会被替换成两条指令,替换不了报错误。相对PC或者积存器寻址 这两条指令依据立即数的对齐方式不同,允许的立即数范围也不同。 LDR则是产生文字池的方式加载常量,基于PC的相对寻址,专用加载32bit立即数. 通过反汇编可以很容易看出LDR和ADR区别: 假设入口点地址为0x8000 AREALDRlabel,CODE,READONLY ENTRY;Markfirstinstructiontoexecute start B

8、Lfunc1;Branchtofirstsubroutine stop MOVr0,#0x18;angel_SWIreason_ReportException LDRr1,=0x20026;ADP_Stopped_ApplicationExit LDRr1,=0xff SWI0x123456;ARMsemihostingSWI func1 LDRr0,=start;=>L

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。