amiwrong123 最近的时间轴更新
amiwrong123
ONLINE

amiwrong123

V2EX 第 417414 号会员,加入于 2019-06-01 12:17:41 +08:00
今日活跃度排名 428
这个味道,是BUG的味道!
根据 amiwrong123 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
amiwrong123 最近回复了
@Shaaaadow #7 #7

很奇怪, 我在编译每个 o 文件时,加了这种`-fno-pic 选项,还是不行。甚至感觉编译出来的反汇编都是一样的
@XimCN #2
要么多加几条指令,把地址高位拼接出来并 shift 到高位
-----
我想了一下,是不是 用 li + 左移 组合,多用几次,应该就 可以拼接出来了吧
@XimCN #2
单纯是地址太高超出了 risc-v 两条指令的立即数部分拼接能寻址的地址范围(总共 4GB )
----
我理解是这样的吧,auipc+addi ,只能定位 当前 pc 前后 2GB 的空间。因为 auipc 的高位是符号位。

但我这个例子里,当前 PC 离 array 的距离,大于了 2GB ,所以超过了呗?
@XimCN #2
要么把这个数组的地址放在一个低地址变量里做一次指针 load
------
extern int array[];

uintptr_t ptr_to_array = (uintptr_t)array; // 变量本身位于低地址
test((int)ptr_to_array);

请教下,你是这个意思吗?再多定义一个指针变量,这个指针变量 离当前 PC 不会有那么远,所以就不会有问题。

我刚才实测了一下,同样会出问题的地方,加了指针变量后,就不会编译报错了,哈哈。
@MilesYYu
老哥方便透露在哪个区买的吗
@LeeEnzo #1
另外,写了 PMP 寄存器,还必须要 sfence.vma 。这也不理解。

难道 TLB 里面,还保存有 PMP 的相关信息吗
@LeeEnzo #1
有点没理解,看他那个意思,设置了 satp 后,不需要 sfence.vma 。

比如我在 S 模式下,已经是把 satp 设置为 sv48 模式了,也就是已经启动了一套页表。
然后我想切换另一套页表,那我又要设置 stap 了,设置了 satp 后,我觉得必须要 sfence.vma 呀。不然 TLB 里面是旧的映射。
@ysc3839 #1 #1
之前 不小心把 微 PE 安装进系统了,现在每次开机 都会让选择一下,怀疑是这个原因了。。
ssd 固件研发,比 java go 好很多吧。互联网是完全不行了啊,走芯片方向还可以走走。
@Ansen #1
这个小区应该不会有拆迁了。也不考虑这个因素。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3544 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 10:31 · PVG 18:31 · LAX 03:31 · JFK 06:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.