博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链接地址和存储地址
阅读量:4284 次
发布时间:2019-05-27

本文共 591 字,大约阅读时间需要 1 分钟。

什么是存储地址呢?我们知道,我们编写的C代码,会被编译成汇编指令,进一步变成机器码,最后加载到arm的内存中。也就是说我们的汇编指令被存储在内存之中,而指令对应的地址,就是他的“存储地址”。其实“存储地址”的值,一直由pc这个寄存器所记载着。想改变“存储地址”的值直接改变pc好了

再说链接地址,他是指令应该运行的地方,也就是说,正常情况下指令的存储地址,和链接地址应该是相同的。不然程序会出错。链接地址是在程序一开始链接时就已经确定了,目的就是规划整个程序,比如说这个全局变量放在哪?那个静态又搁在哪?事前就确定好,那么到时程序访问的时候,就可以按照原先说好的位置去找他,那么这个“链接地址”就是我所说的“原先说好的位置”,而“存储地址”,就是“实际存在的位置”。

但是存在即使“链接地址”和“存储地址”不一样,也不会出错的代码——位置无关码。例如一些相对跳转指令b,bl(首先他们得不会去访问一些全局变量或者是静态变量)他们只需要在当前位置加上偏移量即可,不需要一个确切的地址。也就是说他们压根用不到链接地址,那么自然也就不会出错了。

2440开发板的代码首先是存在于NandFlash,上电后NandFlash中前4K的代码,会被自动拷贝到arm片内内存中。pc寄存器初始值为0,从运行开始到跳转到内存中运行的这个过程,处理器运行的都是位置无关码,链接地址与存储地址并不相同。

转载地址:http://ahigi.baihongyu.com/

你可能感兴趣的文章
Drawable 文件夹——xml文件
查看>>
OkHttp 新手上路
查看>>
Android 蓝牙如何使用
查看>>
自定义View三个方法的意义
查看>>
Java访问控制的作用
查看>>
横竖屏切换的生命周期
查看>>
广播的使用
查看>>
Python Requests库
查看>>
下载离线 Visual Studio 离线安装包
查看>>
Makefile Project 中 MSBuild MSB3073 error 不能正确检测字符串 “error:"
查看>>
Error Code 0x800F081F when Installing .NET Framework 3.5
查看>>
Xamarin.Forms.Xaml.XamlParseException: No embeddedresource found for
查看>>
如何 禁掉 Hyper-V && 如何解决禁不掉 Hyper-V 的问题
查看>>
杂记 7/30
查看>>
杂记 7/31
查看>>
了解 内核、操作系统 的一些链接
查看>>
Linux 学习笔记 (九) 软件安装
查看>>
Linux 学习笔记 (十) shell 脚本初探
查看>>
关于移动开发的一些思考
查看>>
Java 进阶 -- final 解析
查看>>