当前位置:首页 > 单片机 > 单片机
[导读]看了一段时间的S3C2440的bootloader后,感觉在bootloder程序中经常会用到B,BL指令。他们是位置无关的代码,指令中所跳转的目标地址用基于当前PC的偏移量来表示,与链接时分配给地址标号的绝对地址值无关,因而代码可

看了一段时间的S3C2440的bootloader后,感觉

在bootloder程序中经常会用到B,BL指令。他们是位置无关的代码,指令中所跳转的目标地址用基于当前PC的偏移量来表示,与链接时分配给地址标号的绝对地址值无关,因而代码可以在任何位置进行跳转,实现位置无关性。

在bootloder也用到了位置无关的指令LDR(只对PC操作时才位置无关),例如LDRPC,=Main(程序跳转到SDRAM处执行);

S3c2440从NandFlash启动时,会将nandflash的前4KB的数据复制到s3c2440中的一个stepstoning中,而stepstoning在NandFlash启动时被映射到0地址处,所以s3c2440就能执行NandFlash的前4KB的程序了。在这4KB中执行的对应B和BL指令处的代码都会跳转到相对PC偏移量的地址。当然跳转的位置在这4KB内。

LDRPC,=Main,是绝对跳转。直接将Main标号所代表的地址直接复制给PC,那么程序就会跳到Main函数的入口地址处执行。Main标号的是基于链接器的值,换句话说就是基于ro-base或者所用的链接脚本文件(或者可以说是相对于ro-base的值,而相对跳转是相对于入口地址的值)。

使用绝对地址只能引用被重定位到特定位置的代码段中的符号,通过在位置无关代码中引入绝对地址,可以让程序跳转到指定位置。例如,假设Bootloader的阶段1将其自身代码拷贝到链接时所指定的SDRAM地址空间后,当要跳转到阶段2的C程序入口时,可以使用指令“LDRPC,=main”跳转到程序在SDRAM中的main函数入口地址开始执行。这是因为程序在编译链接时给main函数分派绝对地址,系统通过将main函数的绝对地址直接赋给PC实现程序跳转。如果使用相对跳转指令“Bmain”,那么只会跳转到启动ROM内部的main函数入口。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

如果读者朋友已经有过汇编相关基础,能够够好理解本文内容。汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层。

关键字: 汇编 C语言

从汇编角度来说,如果“test %al, %al”能改成“test %0x1, %al”就没有匪夷所思的问题了,如此一来应该会降低CPU的效率,毕竟执行指令还需要一个立即数,我没搞过编译器也没设计过CPU,纯属瞎猜,能搞...

关键字: 汇编 CPU 编译器

【说在前面的话】其实我很久之前就想写这篇文章了,但彼时总觉得这是一个伪命题:既然已经用了MDK,编译出来的代码,无论是体积还是性能都甩下armgcc好几条街,谁还会想用gcc来进行Cortex-M开发呢?对那些只能使用a...

关键字: GCC MDK 汇编

1.背景群里有个小伙伴学习设计加密方法,如同某商用软件输入注册码后就能使用扩展功能。设计时他很自然的想着所写的加密措施是否足够健壮安全,是否有什么方法可以绕过加密检查,也就是破解。权限管理仅在启动后检查一次注册码是否有效...

关键字: 指令 汇编 软件

最近很多伙计问我现在搞嵌入式还有没有必要学习汇编?

关键字: 嵌入式 汇编

  本文根据网络视频采集的需要,将网络传输与视频采集相结合,设计了以S3C2440为核心的USB摄像头视频采集和嵌入式Linux系统下的视频服务器,从而实现了远程网络视频信息采集。   

关键字: s3c2440 视频采集 usb摄像头

         之前在提起自动化或是智能化时,人们会不自觉的想到工业生产,这是因为自动化这个字眼进入中国,确实是以工业

关键字: 嵌入式 Linux s3c2440 视频采集

  引言   随着科技的不断发展,以数据业务为主的固定宽带无线接入技术发展已经很成熟,而移动宽带无线通信技术还并没有得到广泛的应用。由于移动宽带无线接入系统需要解决带宽、移动性和覆盖范围

关键字: IPv6 s3c2440 x86 架构

  1 引言   人们生活水平的提高以及科技的进步,特别是计算机技术、网络技术和通信技术的发展,智能家居将慢慢成为未来家居生活的发展方向。1984年在美国诞生了世界上第一座智能家居建筑,

关键字: boa nrf24l01 s3c2440 智能家居

来源 :智能软件研究中心,作者:罗宇哲,直接来源:华为开发者社区 声明:本公众号转发仅为传播相关技术知识,不作任何商业用途,如有疑义请联系删除。 01 ARM汇编指令 操作系统中硬件相关的部分集中体现在汇编指令和对寄存器...

关键字: ARM 汇编
关闭