mips中的la指令
来源:互联网 发布:简单的冒泡排序算法 编辑:程序博客网 时间:2024/06/05 05:16
在pmon中判断当前的代码是在flash中运行,还是在ram运行如下:
bal locate /* Get cruuent execute address */
nop
uncached:
or ra, UNCACHED_MEMORY_ADDR
j ra
nop
locate:
la s0,uncached
subu s0,ra,s0
在这里我们假设uncached相对于代码开始的偏移为offset1,locate相对于代码开始的偏移为offset2。
现在我们是从spi-flash中启动,所以PC的地址是从0xbfc00000开始的,而代码链接的时候,地址则是从0x80100000开始的。
那么执行“bal locate”跳转到“locate“之后,ra寄存器里的值是绝对地址的==(0xbfc00000+offset1),
而“la s0,uncached”之后,s0==(0x80100000+offset1)。
所以再执行“subu s0,ra,s0”之后,就可以算出链接代码与实际执行代码的偏移,这样当用到rdata段数据的时候,用标号的地址加上这个偏移就可以得到在spi-flash的数据。
总结:
la 寄存器,标号 ---->寄存器得到的是标号相对于链接地址的值;
而bal之后的ra寄存器保存的是当前存储介质的绝对地址。
- mips中的la指令
- MIPS中的跳转/分支指令
- mips架构中的原子操作指令(llsc)
- mips汇编程序中的.set指令使用
- MIPS 指令
- MIPS 指令
- mips指令
- MIPS 指令
- MIPS 指令
- MIPS 指令
- MIPS 指令
- mips指令
- MIPS 指令
- MIPS指令
- mips指令
- MIPS 指令
- MIPS 指令
- MIPS 指令
- 有可能得到最广泛的利润率
- 摘录pl/sql使用技巧
- 数据库设计之学生选课系统
- 云计算与网格计算
- U盘+ULTRAISO启动安装ubuntu-12.04-alternate-i386.iso
- mips中的la指令
- 黑马程序员_O‘Reilly java nio学习笔记之选择器_通过一个程序初识选择器
- 天气条件搜索目的地 度假旅游好帮手
- 我的CSDN账户被系统锁定。。。亲爱的管理员大神,求你给我解锁吧!!!
- 错误 - 以用户 aiki 的身份连接 主机 失败: ERROR: Wrong password for user
- 排序算法的比较
- 【图文详解】WordPress安装步骤
- 11.2.0.3在非Exadata环境禁掉了diskmon服务
- 中药泡脚