摘要:ARM汇编有ldr指令以及ldr、adr伪指令,他门都可以将标号表达式作为操作数,下面通过分析一段代码以及对应的反汇编结果来说明它们的区别。 ldr r0, _start adr r0, _start ldr r0, =_start_start: b_start编译的时候设置 RO 为 0x30000000,下面是反汇编的结果: 0x00000000:e59f0004 ldrr0, [pc, #4]; 0xc 0x00000004:e28f0000 addr0, pc, #0; 0x0 0x00000008:e59f0000 ldrr0, [pc, #0]; 0x10 0x0000000c:e
阅读全文
随笔分类 - arm
摘要:对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连 续的,再加上循环程序段和子程序段要重复执行多次。Cache的工作原理是基于程序访问的局部性。对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连 续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部
阅读全文
摘要:http://blog.sina.com.cn/s/blog_59b189220100au1k.html第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。一. Linux汇编行结构任何汇编行都是如下结构:[:] [} @ comment[:] [} @ 注释Linux ARM 汇编中,任何以冒号结尾的标识符都被认为是一
阅读全文
摘要:转自:http://lamp.linux.gov.cn/Linux/optimize_guide.html前言网上关于编译优化的文章很多,但大多零零散散,不成体系,本文试图给出一个完整和清晰的优化思路,同时提供在实践中如何进行优化的详尽参考。但是,在介绍所有优化知识之前首先引用LFS-Book中的一句忠告:“使用编译器优化得到的小幅度性能提升,与它带来的风险相比微不足道”。你还要进行优化吗?%@&#=^%~*# ...OK, crazy guy! Let's Go!!在继续之前,作者还是奉劝各位:如果追求极致的优化,那么它将是一件既耗时又麻烦的事情,你会陷入无止尽的测试、测试、
阅读全文
摘要:我们知道,S3C2440对外引出有27根地址线(ADDR0~ADDR26),对应的访问范围为128M,另外,CPU还引出了8根片选信号(nGCS0~nGCS7)——低电平有效,对应8个BANK,这样就达到了1G的地址访问空间。 理论上我们知道可以使用的地址访问范围为4G(32位的CPU),那么其他的地址空间用来做什么了呢?一部分是用来作为CPU的内部寄存器地址,一部分保留。 注意:S3C2440的寄存器范围处于:0x48000000~0x5fffffff;存储控制器的地址在:0x48000000~0x48000030(13个); BANK1~BANK5的连接都差不多,所以对应的寄存器设置也一.
阅读全文
摘要:A.5.1 文件格式 ARM 源程序文件(即源文件)为文件格式,可以使用任一文本编辑器编写程序代码。 在一个项目中,至少要有一个汇编源文件或C 程序文件,可以有多个汇编源文件或多个C 程序文件,或者C 程序文件和汇编文件两者的组合。A.5.2 ARM 汇编的一些规范 (1)汇编语句格式 ARM 汇编中,所有标号必须在一行的顶格书写,其后面不要添加“:”,而所有指令均不能顶格书写。ARM 汇编器对标识符大小写敏感,书写标号及指令时字母大小写要一致,在ARM 汇编程序中,一个ARM 指令、伪指令、寄存器名可以全部为大写字母,也可以全部为小写字母,但不要大小写混合使用。注释使用“;”,注释内容由“;
阅读全文
摘要:ARM920T的异常向量表有两种存放方式,一种是低端存放(从0x00000000处开始存放),另一种是高端存放(从0xfff000000处开始存放)。关于为什么要分两种方式进行存放这点我将在介绍MMU的文章中进行说明,本文采用低端模式。ARM920T能处理有8个异常,他们分别是:Reset,Undefined instruction,Software Interrupt,Abort (prefetch),Abort (data),Reserved,IRQ,FIQ下面是某个采用低端模式的系统源码片段: _start:b Handle_Resetb HandleUndefb HandleSWIb
阅读全文