Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
R1。<br />
LDR R0,[R1,R2,LSL#2]! ;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将<br />
新地址R1+R2×4写入R1。<br />
LDRR0,[R1],R2,LSL#2 ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1<br />
+R2×4写入R1。”<br />
http://www.pczpg.com/a/2010/0607/11062.html<br />
“ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str<br />
指令。<br />
比如想把数据从内存中某处读取到寄存器中,只能使用ldr<br />
比如:<br />
ldr r0, 0x12345678<br />
就是把0x12345678这个地址中的值存放到r0中。”<br />
上面那些ldr的作用,以第一个_undefined_instruction为例,就是将地址为<br />
_undefined_instruction中的一个word的值,赋值给pc。<br />
_undefined_instruction: .word undefined_instruction<br />
_software_interrupt: .word software_interrupt<br />
_prefetch_abort: .word prefetch_abort<br />
_data_abort: .word data_abort<br />
_not_used: .word not_used<br />
_irq: .word irq<br />
_fiq: .word fiq<br />
http://blogold.chinaunix.net/u3/115924/showart_2280163.html<br />
―.word .word expr {,expr}… 分配一段字内存单元,并用expr初始化字内存单元<br />
(32bit)‖<br />
http://re-eject.gbadev.org/files/GasARMRef.pdf<br />
Directiv<br />
e<br />
Description<br />
图表 3 .word 的语法<br />
Syntax Example<br />
.word Define word expr<br />
(32bit numbers)<br />
.word expr {, …} .word 144511, 0x11223<br />
所以上面的含义,以_undefined_instruction为例,就是,此处分配了一个word=32bit=4<br />
字节的地址空间,里面存放的值是undefined_instruction。<br />
而此处_undefined_instruction也就是该地址空间的地址了。用C语言来表达就是:<br />
_undefined_instruction = &undefined_instruction<br />
或<br />
*_undefined_instruction = undefined_instruction<br />
在后面的代码,我们可以看到,undefined_instruction也是一个标号,即一个地址值,对<br />
应着就是在发生“未定义指令”的时候,系统所要去执行的代码。