arm-linux

http://armboard.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  512 随笔 :: 0 文章 :: 48 评论 :: 115万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  ARM 汇编程序设计

摘要:看了arm汇编语言语法一个多月了。总算入门了。当然还有很多东西值得继续努力推敲滴。最近对LDR与LTORG有了一些新的认识。LDR是一个比较复制的指令。作用是从存储器到寄存器的单一数据读取指令。它有19条指令格式。其中有两条格式为宏指令(macro),格式如下:1,LDR<cond><type>Rd,<label>2,LDR<cond> Rd,=<32-bit-value>这里重点分析下第二条宏指令。它会被编译器编译成一条指令,把给定的32位数值保存到寄存器Rd.通常这掉指令是LDR<cond>Rd,[pc,#<of 阅读全文
posted @ 2011-10-22 22:05 arm-linux 阅读(2800) 评论(0) 推荐(0) 编辑

摘要:4.2汇编语言的语句格式ARM(Thumb)汇编语言的语句格式为: {标号} {指令或伪指令} {;注释} 在汇编语言程序设计中,每一条指令的助记符可以全部用大写、或全部用小写,但不用许在一条指令中大、小写混用。同时,如果一条语句太长,可将该长语句分为若干行来书写,在行的末尾用“/”表示下一行与本行为同一条语句。4.2.1在汇编语言程序中常用的符号 在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。尽管符号的命名由编程者决定,但并不是任意的,必须遵循以下的约定:- 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。- 符号在其作用范围内必须唯一。 阅读全文
posted @ 2011-10-20 23:56 arm-linux 阅读(762) 评论(0) 推荐(0) 编辑

摘要:ARM编译器一般都支持汇编语言的程序设计和C/C++语言的程序设计,以及两者的混合编程。本章介绍ARM程序设计的一些基本概念,如ARM汇编语言的伪指令、汇编语言的语句格式和汇编语言的程序结构等,同时介绍C/C++和汇编语言的混合编程等问题。本章的主要内容: - ARM编译器所支持的伪指令 - 汇编语言的语句格式 - 汇编语言的程序结构 - 相关的程序示例 4.1ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准 阅读全文
posted @ 2011-10-20 23:43 arm-linux 阅读(2317) 评论(0) 推荐(0) 编辑

摘要:到目前为止,我们已经具备编写较为复杂的ARM汇编程序的能力,但要编写较为复杂且实用的程序,我们就不得不掌握ARM汇编的伪指令(pseudo-instruction)。千万别把汇编伪操作(directive)与汇编伪指令(pseudo-instruction)弄混了,directive不会被编译器编译为机器指令,但pseudo-instruction会。而pseudo-instruction与指令(instruction)的区别在于,1条instruction与1条机器指令对应,而编译器会把1条pseudo-instruction编译为1条或多条机器指令。ARM汇编伪指令共4条:ldr、adr、 阅读全文
posted @ 2011-09-21 13:25 arm-linux 阅读(1831) 评论(0) 推荐(0) 编辑

摘要:ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集。ARM指令集效率高,但是代码密度高Thumb指令集具有较高的代码密度,却仍然保持着ARM的大多数性能上的优势,它是ARM的子集。所有的ARM置零都是可以条件执行的,而Thumb置零仅有一条指令具备条件执行的功能。ARM和Thumb程序可以相互调用,相互之间状态切换开销几乎为零。首先我们来看一下分类:一、数据处理指令操作数寻址方式 1、立即数寻址方式 2、寄存器寻址方式 3、寄存器移位寻址方式二、存储器访问指令操作数寻址方式 1、寄存器间接寻址 2、基址变址寻址 3、相对寻址 4、多寄存器寻址(块拷贝寻址) 5、堆栈寻址下面 阅读全文
posted @ 2011-09-20 09:46 arm-linux 阅读(2195) 评论(1) 推荐(0) 编辑

摘要:下表列出了ARM汇编器定义的内置变量。(引自Assembler Guide第三章 汇编参考)变量名称含义{PC} or .当前指令的地址{VAR} or @ 存储区位置计数器当前值{TRUE}逻辑常量“真”{FALSE}逻辑常量“假”{OPT}当前设置的列表选项值。OPT指令可用于保存当前选项列表,强制改变或者恢复初始值。( Value of the currently-set listing option. The OPT directive can be used to save the current listing option, force a change in it, or re 阅读全文
posted @ 2011-03-28 08:57 arm-linux 阅读(486) 评论(0) 推荐(0) 编辑

摘要:;=========================================; NAME: 2440INIT.S; DESC: C start up codes; Configure memory, ISR ,stacks; Initialize C-variables; 完全注释; HISTORY:; 2002.02.25:kwtark: ver 0.0; 2002.03.20:purnnamu: Add some functions for testing STOP,Sleep mode; 2003.03.14:DonGo: Modified for 2440.; 2009 06. 阅读全文
posted @ 2011-03-27 21:38 arm-linux 阅读(654) 评论(0) 推荐(0) 编辑

摘要:2006.11.1 00:31 作者:hokepoly | 评论:1 | 阅读:8379 3130292827~876543210NZCV保留IFTM4M3M2M1M0NNegative/Less ThanIIRQ disableZZeroFFIQ disableCCarry/Borrow/ExtendTState bitVOverflowM0~4Mode bits1、条件码标志 N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如下表所示:标志位含 义N当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为 阅读全文
posted @ 2011-03-23 19:49 arm-linux 阅读(31011) 评论(0) 推荐(4) 编辑

摘要:一、跳转指令跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转:Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC 写入跳转地址值。通过向程序计数器PC 写入跳转地址值,可以实现在4GB 的地址空间中的任意跳转,在跳转之前结合使用 MOV LR,PC 等类似指令,可以保存将来的返回地址值,从而实现在4GB 连续的线性地址空间的子程序调用。ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4 条指令:1、 B 指令B 指令的格式为:B{条件} 目标地址B 指令是最简单的跳转指令。一旦遇到一个 B 指令,ARM 处理器将立即跳转到给 阅读全文
posted @ 2010-12-25 16:19 arm-linux 阅读(1093) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示