-mcmodel=medlow

从编译结果来看,-mcmodel=medlow 使用 LUI 指令取符号地址的高20位。LUI 配合其它包含低12位立即数的指令后,可以访问的地址空间是 -2GiB ~ 2GiB。

对于 RV32,就是 0x00000000 ~ 0xFFFFFFFF,就是说可以访问任意地址了。

然而对于 RV64 而言,能访问的就是 0x0000000000000000 ~ 0x000000007FFFFFFF,以及 0xFFFFFFFF800000000 ~ 0xFFFFFFFFFFFFFFFF 这两个区域,前一个区域即 +2GiB 的地址空间,后一个区域即 -2GiB 的地址空间。其它地址空间就访问不到了。

-mcmodel=medany

从编译结果来看,-mcmodel=medlow 使用 AUIPC 指令取符号地址的高20位。AUIPC 配合其它包含低12位立即数的指令后,可以访问当前 PC 的前后2GiB (PC - 2GiB ~ PC + 2GiB)的地址空间。

对于 RV32,能访问的还是 0x00000000 ~ 0xFFFFFFFF 这个区间,也是访问任意地址。

然而对于RV64,取决于当前 PC 值,能访问到是 PC - 2GiB 到 PC + 2GiB 这个地址空间。假设当前 PC 是 0x1000000000000000,那么能访问的地址范围是 0x0000000080000000 ~ 0x100000007FFFFFFF。假设当前 PC 是 0xA000000000000000,那么能访问的地址范围是0x9000000080000000~0xA00000007FFFFFFF。

2GiB
但为什么要将符号限制在 2GiB 空间范围呢?因为 2GiB 地址空间内任意两个地址的偏移在 -2GiB ~ +2GiB 之间,如果是 4GiB 地址空间,那么任意两个地址的偏移在 -4GiB ~ +4GiB 之间。LUI/AUIPC 只能做到 -2GiB ~ +2GiB,做不到 -4GiB ~ +4GiB。

这个限制是针对 RV64,RV32 可以使用全部的 4GiB 地址空间 。

总结
-mcmodel 对 RV32 没什么影响,对 RV64 有影响。不指定 -mcmodel 的情况下,默认是 medlow。对于 RV32,不用刻意指定 -mcmodel。对 RV32,无论是 -mcmodel=medlow 还是 -mcmodel=medany 都能访问全部的 4GiB 地址空间。

RISC-V:-mcmodel=medlow vs -mcmodel=medany相关推荐

  1. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  2. 计组学习笔记2(RISC v版)

    指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...

  3. 投影幕左下显示“不支持H:67.41kHz V:59.90Hz” 要显示帮助,按下?按钮

    概述 将投影仪插入您的电脑后,按住win+p ,之后出现 我们选择复制,但是无法显示出现 "投影幕左下显示"不支持H:67.41kHz V:59.90Hz" 要显示帮助, ...

  4. 家用电脑变超级计算机,TITAN V:让PC“变身”成超级计算机

    在美国加州长滩举行的NIPS大会上(Neural Information Processing Systems,神经信息处理系统),NVIDIA推出面向PC.由世界最强大的GPU架构NVIDIA Vo ...

  5. 足球大v:请闭上你们无知的嘴

    德国输了,韩国赢了.我既不是德国的球迷,更不是韩国的,对于这样的结果,我不悲也不喜.但我却要对以大V"高xx"为代表的假球论.阴谋论.剧本论者们,大声吼一句:"闭上你们无 ...

  6. 安装Ubuntu RISC V toolchain失败(网速、git配置原因)

    git获取大容量工程出错:RPC failed: curl GnuTLS recv error : Decryption has failed. error: RPC failed; curl 56 ...

  7. 从技术博主到知乎大V:资深Python工程师的12年进阶路

    http://www.jiemian.com/article/1378119.html 在中国,接触过 Java 和 Python 两种语言的人往往有一种先入为主的判断:前者适合大企业,后者适合早期企 ...

  8. 塞尔达:旷野之息个人对比上古卷轴V:天际

    上古卷轴5是我之前玩过最优秀的作品.玩塞尔达的时候就有跟上古卷轴5比对,真的都是神作.两个游戏的自由度都是真的高. 主线剧情上,老滚5印象不深了,当时就知道战斗,只记住了开头砍头现场,还有奥杜因这个龙 ...

  9. 海外推特Twitter大V: KOL网红营销怎样深耕市场-大舍传媒

    国外推特Twitter KOL网红营销怎样深耕市场-大舍传媒 随着我国互联网红利的见顶,互联网项目挑选出海和低线城市变成发展趋势.企业转为国外社会化营销已经不再是哪些新鲜事儿. 但是对很多企业来讲,国 ...

最新文章

  1. Spark源码分析之九:内存管理模型
  2. python 三步问题
  3. oracle 11gogg,【OGG】Oracle GoldenGate 11g (二) GoldenGate 11g 单向同步配置 上
  4. Java线程volatile(二)
  5. 为什么移动硬盘不建议插在台式机前置USB接口上?
  6. 最大似然估计、MAP、贝叶斯估计
  7. Skype for business企业语音配置之二创建拨号计划
  8. 程序员级别,你到哪一级?
  9. 大教堂与集市(The Cathedral and the Bazaar)读书笔记
  10. 微软云加速器助edoc2入云腾飞
  11. mysql 定时备份脚本
  12. 最大的PHP开源网店系统ECShop简介
  13. 景点评论爬虫之微博爬虫和携程爬虫
  14. 最短路径-弗洛伊德算法的java实现
  15. 数据结构 找树根和孩子(树)
  16. h5页面 判断网页是否由微信或qq内置浏览器打开
  17. 抖音seo源码搭建 抖音矩阵系统具体功能展示?
  18. 内网时间同步,ntp与ntpdate区别,与ntp服务器搭建
  19. 支付项目:9、购物车模块
  20. 什么是robots.txt文件?

热门文章

  1. 深度之眼Paper带读笔记NLP.18:UMT
  2. Fabric中PBFT源码解读 (3)
  3. 大数据学习:压缩与打包
  4. 【LeetCode每日一题】——376.摆动序列
  5. Java和Web前端谁的薪资待遇高?网友:我要学Web前端!
  6. 【过零检测】市电过零检测电路参考设计
  7. Swift 开源项目精选
  8. swift开源项目精选(已经造好的轮子)
  9. MapServer 之 发布网络覆盖数据服务(WCS-Web Coverage Service)
  10. python在地图上画路线_python在openstreetmap地图上绘制路线图的实现