ksco 的工作日志
245 subscribers
168 photos
10 videos
4 files
84 links
内容主要取决于我正在做的东西,目前主要是模拟器 / DBT 之类的散乱话题。
Download Telegram
ksco 的工作日志
已经攒了 3 个 PPT 要做了,焦虑达到了顶峰
思路打开了,三个内容都有重叠,干脆做成一个然后复用三次
echo hello 需要在 user mode 执行 243413 条指令
:)
以前正经上班的时候,做的事情不喜欢,每天的工作时间很短但是很漫长。现在每天有一茬没一茬地上班,算下来竟然差不多是 996 的状态,感觉一天天的时间过得特别快。今天看员工群关于工作时间的争论,让我意识到可能很大一部分同事都是在正经上班的状态,以后还是不在非工作时间找同事谈论工作相关的内容了(虽然我应该也没怎么找过?)。
😴5🤔1
🤔
给猫猫钻了一晚上牙结石,现在不理我了
土法 debug
1
Forwarded from 刘阳
我操
Forwarded from 刘阳
给跪了
新年快乐!
给自己放了 5 天假,今天上班儿了
🥰5
年前在 DynamoRIO 遇到一个比较好玩的东西:

首先 RISC-V 直接跳转的范围只有 +/- 4 KiB,而 AArch64 则是 +/- 32 KiB,所以这个问题算是 RV 独有的。这个范围也直接决定了代码块的最大尺寸,也就是说,RV 中的一个代码块不能超过 4096 个字节(否则块内的直接跳转就有危险了)。
其次,DynamoRIO 有一个叫 clean call 的插桩机制,可以允许用户在任意的两条指令之间插入一个 C 函数的调用。
这个机制的实现方式是,在调用这个 C 函数之前,会保存当前所有寄存器的状态,切换到一个干净的栈上,按照 C 调用约定设置好参数,然后调用 C 函数。函数返回后,再恢复所有的现场,把栈切换回去。
所以大致估算一下,整个 clean call 的主要指令开销就是 context switch 了,32 个整形寄存器 + 32 个浮点寄存器,save + restore 总共是 32 * 2 * 2 * 4 = 512 字节,但是 RV 的 C 扩展刚好提供了 c.ldsp/c.fldsp/c.sdsp/c.fsdsp 指令,所以我们还可以再减个半,也就是 256 字节。

这样一来,在 RISC-V 中每个代码块中最多只能有 15 条指令。