预备知识:理解跳转指令b和ldr,其形式如下:
b step1 //B 是最简单的分支。一旦遇到一个 B 指令,ARM 处理器将立即跳转到给定的地址,从那里继续执行。
注意存储在分支指令中的实际的值是相对当前的 R15(PC) 的值的一个偏移量,而不是一个绝对地址。
它的值由汇编器来计算,它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位(+/- 32 M)。
ldr pc,step2 //使用LDR伪指令将一个常量读取到非PC的其他通用寄存器中可实现位置无关的常 量访问;
但将一个地址值读取到PC中进行程序跳转时,跳转目标则是位置相关的。
对汇编不是很了解,以上内容参看好多资料写的,也不知道对不对,期望大侠的指点。
找到文件的入口
# vi /arch/arm/cpu/arm920t/start.S
#include <common.h> //定义了关于错误处理的一些操作
#include <config.h>
.globl _start
_start: b start_code //定义了入口
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
.balignl 16,0xdeadbeef