本文共 1037 字,大约阅读时间需要 3 分钟。
本文参考文档:
_start的值就是这个代码的位置,此处即为代码的最开始,相对的0的位置。
而此处最开始的相对的0位置,在程序开始运行的时候,如果是从NorFlash启动,那么其地址是0,_start=0。如果是重新relocate代码之后,就是我们定义的值了。而_start标号后面的:b reset就是跳转到对应的标号为reset的位置。用于从存储器中将一个32位的字数据传送到目的寄存器中。
ps:当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。eg._undefined_instruction: .word undefined_instruction
c语言表示:_undefined_instruction=&undefined_instruction;接下来的代码,都要16字节对齐,不足之处,用0xdeadbeef填充。
引起处理器转移到“save_boot_params”处开始执行,并将下一条指令的地址拷贝到R14,可实现子程序的返回。
mrs{条件} 通用寄存器,程序状态寄存器(cpsr或spsr)
mrs指令用于将程序状态寄存器的内容传送到通用寄存器中。使用情况1)需要改变程序状态寄存器的内容时 2)异常处理或进程切换时7.2格式:msr{条件} 程序状态寄存器(cpsr或spsr)_<域>,操作数msr指令用于将操作数的内容传送到程序状态寄存器的特定域中。7.3格式:bic{条件}{S} 目的寄存器,操作数1,操作数2bic指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。7.4格式:orr{条件}{S} 目的寄存器,操作数1,操作数2orr指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。转载地址:http://mrmka.baihongyu.com/