摘要:看了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
阅读全文
随笔分类 - ARM 汇编程序设计
摘要:4.2汇编语言的语句格式ARM(Thumb)汇编语言的语句格式为: {标号} {指令或伪指令} {;注释} 在汇编语言程序设计中,每一条指令的助记符可以全部用大写、或全部用小写,但不用许在一条指令中大、小写混用。同时,如果一条语句太长,可将该长语句分为若干行来书写,在行的末尾用“/”表示下一行与本行为同一条语句。4.2.1在汇编语言程序中常用的符号 在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。尽管符号的命名由编程者决定,但并不是任意的,必须遵循以下的约定:- 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。- 符号在其作用范围内必须唯一。
阅读全文
摘要:ARM编译器一般都支持汇编语言的程序设计和C/C++语言的程序设计,以及两者的混合编程。本章介绍ARM程序设计的一些基本概念,如ARM汇编语言的伪指令、汇编语言的语句格式和汇编语言的程序结构等,同时介绍C/C++和汇编语言的混合编程等问题。本章的主要内容: - ARM编译器所支持的伪指令 - 汇编语言的语句格式 - 汇编语言的程序结构 - 相关的程序示例 4.1ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准
阅读全文
摘要:到目前为止,我们已经具备编写较为复杂的ARM汇编程序的能力,但要编写较为复杂且实用的程序,我们就不得不掌握ARM汇编的伪指令(pseudo-instruction)。千万别把汇编伪操作(directive)与汇编伪指令(pseudo-instruction)弄混了,directive不会被编译器编译为机器指令,但pseudo-instruction会。而pseudo-instruction与指令(instruction)的区别在于,1条instruction与1条机器指令对应,而编译器会把1条pseudo-instruction编译为1条或多条机器指令。ARM汇编伪指令共4条:ldr、adr、
阅读全文
摘要:ARM7TDMI(-S)具有32位ARM指令集和16位Thumb指令集。ARM指令集效率高,但是代码密度高Thumb指令集具有较高的代码密度,却仍然保持着ARM的大多数性能上的优势,它是ARM的子集。所有的ARM置零都是可以条件执行的,而Thumb置零仅有一条指令具备条件执行的功能。ARM和Thumb程序可以相互调用,相互之间状态切换开销几乎为零。首先我们来看一下分类:一、数据处理指令操作数寻址方式 1、立即数寻址方式 2、寄存器寻址方式 3、寄存器移位寻址方式二、存储器访问指令操作数寻址方式 1、寄存器间接寻址 2、基址变址寻址 3、相对寻址 4、多寄存器寻址(块拷贝寻址) 5、堆栈寻址下面
阅读全文
摘要:下表列出了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
阅读全文
摘要:;=========================================; 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.
阅读全文
摘要: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表示运算的结果为
阅读全文
摘要:一、跳转指令跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转:Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC 写入跳转地址值。通过向程序计数器PC 写入跳转地址值,可以实现在4GB 的地址空间中的任意跳转,在跳转之前结合使用 MOV LR,PC 等类似指令,可以保存将来的返回地址值,从而实现在4GB 连续的线性地址空间的子程序调用。ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4 条指令:1、 B 指令B 指令的格式为:B{条件} 目标地址B 指令是最简单的跳转指令。一旦遇到一个 B 指令,ARM 处理器将立即跳转到给
阅读全文