百里杨
码龄11年
关注
提问 私信
  • 博客:1,724,148
    社区:9,177
    1,733,325
    总访问量
  • 312
    原创
  • 5,457
    排名
  • 50,222
    粉丝
  • 4,667
    铁粉
  • 学习成就

个人简介:码农想飞~~

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2013-08-26
博客简介:

百里杨的博客

博客描述:
孔子曰:温故而知新~~
查看详细资料
  • 原力等级
    成就
    当前等级
    9
    当前总分
    7,722
    当月
    181
个人成就
  • 编程语言领域新星创作者
  • 博客专家认证
  • 获得2,834次点赞
  • 内容获得553次评论
  • 获得10,024次收藏
  • 代码片获得36,713次分享
创作历程
  • 60篇
    2024年
  • 19篇
    2023年
  • 7篇
    2022年
  • 67篇
    2021年
  • 156篇
    2020年
  • 13篇
    2018年
  • 26篇
    2013年
成就勋章
TA的专栏
  • RISC-V指令集
    47篇
  • 环境工具
    32篇
  • X86指令集
    29篇
  • 计算机组成
    21篇
  • 经济
    1篇
  • GmSSL
    4篇
  • 版本管理
    8篇
  • 打包
    8篇
  • Dump
    5篇
  • OpenSSL
    22篇
  • 其他
    7篇
  • Pascal
    1篇
  • OpenCL
    3篇
  • VLC
    9篇
  • OpenGL
    1篇
  • Protobuf
    2篇
  • Boost
    5篇
  • C/C++
    46篇
  • Linux开发
    27篇
  • 数据结构
  • 游戏开发
    7篇
  • QT
    63篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

开源浮点运算库SoftFloat

SoftFloat是一个开源的、跨平台的、高效实现IEEE 754单精度和双精度浮点数运算的C代码库。该项目由John L. Hennessy教授领导的斯坦福大学计算机系统实验室开发。它提供了完整的API接口,可以方便地集成到各种应用中。目前最新版是,2018.1月发布的softfloat 3e。1rfz。
原创
发布博客 2024.09.18 ·
302 阅读 ·
5 点赞 ·
0 评论 ·
3 收藏

RISC-V交叉编译器下载

riscv64-unknown-elf-gcc,riscv64-unknown-linux-gnu-gcc
原创
发布博客 2024.09.12 ·
658 阅读 ·
9 点赞 ·
0 评论 ·
3 收藏

QEMU中GDB远程串行协议

GDB(GNU Debugger)是一个强大的代码调试工具,它提供了一种使用串行通信协议进行远程调试的方法。在GDB中,可以通过GDB服务器和GDB客户端进行远程调试。其中,GDB远程串行协议允许GDB客户端通过串行连接(如USB或TCP/IP)与GDB服务器通信。GDB远程串行协议的主要作用是:允许开发者在一个系统(通常是开发主机)上,调试另一个系统(通常是目标设备)上运行的程序。这在调试嵌入式系统或需要物理访问硬件的情况下特别有用。
原创
发布博客 2024.08.23 ·
1059 阅读 ·
29 点赞 ·
0 评论 ·
22 收藏

RISC-V特权架构 - 时钟中断处理

经过对MTI和STI中断的处理分析,发现两者的查询处理逻辑,其实是一样的。其处理流程,总结为以下几个步骤(以XXI:检查确保XXI中断使能,且该中断被触发根据运行模式,检查全局中断开关检查mstatus.mie:禁用M全局中断,不处理:使能M全局中断,继续检查委托:不委托,陷入M:委托到S,陷入S检查mstatus.sie:禁用S全局中断,继续检查委托:不委托,陷入M:委托到S,不处理:使能S全局中断,继续检查委托:不委托,陷入M:委托到S,陷入S。
原创
发布博客 2024.08.12 ·
1195 阅读 ·
13 点赞 ·
0 评论 ·
22 收藏

解决QEMU无法从非0x80000000处开始执行

将benos_payload.bin,放置在NEMU中内存0x80000000处,NEMU通过Socket发送放置到QEMU中内存0x31e00000处。计划让QEMU直接从0x31e00000开始执行,而不是常规的0x80000000。对NEMU源码,做了如下修改。...// 将benos_payload.bin发送到QEMU的0x31e00000内存处// pc寄存器设置为0x31e00000// 将NEMU的x0 ~ x31和pc寄存器值,发送到QEMU中,覆盖QEMU原有寄存器。
原创
发布博客 2024.07.24 ·
717 阅读 ·
14 点赞 ·
0 评论 ·
8 收藏

解决QEMU执行mret指令无法跳转到0x80200000

将benos_payload.bin,分别放置在NEMU与QEMU中的内存0x80000000处,并计划两者同时从0x80000000开始运行,期间运行到0x800000a8处(mret指令)时,下一条指令,预期均会跳转到0x80200000处,继续取指执行。而QEMU执行mret指令后,却无法跳转到0x80200000处,QEMU直接跳转到了0x80200100处(对于高版本QEMU(我用的7.1.0),会检查PMP配置,因此需要在SBI中初始化PMP才能运行。
原创
发布博客 2024.07.23 ·
526 阅读 ·
6 点赞 ·
0 评论 ·
5 收藏

NEMU模拟器源码(DiffTest)

发布资源 2024.07.15 ·
gz

NEMU与QEMU的DiffTest联调经验

当我们搭建NEMU与QEMU的DiffTest环境时,修改了很多代码,免不了需要两边一起调试,解决一些问题。这里,对这些调试经验做下小结。
原创
发布博客 2024.07.13 ·
1000 阅读 ·
12 点赞 ·
0 评论 ·
22 收藏

QEMU模拟器源码编译与使用

那么,如果我们知道与gdb server的数据包协议,是不是就可以编写一个程序,去控制QEMU的单步执行,以及获取CPU寄存器、内存等,是的,这是可行的。上述步骤,编译的QEMU,直接就可以gdb调试,只是有一些还是有所优化,如果要完全无优化,可能还需要自己配置再重新编译。将mysbi.bin、benos.bin、benos.elf,拷贝到qemu-7.1.0/build/目录下。需要在QEMU中运行的文件有:mysbi.bin、benos.bin、benos.elf。运行,即可在该断点处停住。
原创
发布博客 2024.07.13 ·
1116 阅读 ·
11 点赞 ·
0 评论 ·
26 收藏

RISC-V在线反汇编工具

RISC-V在线反汇编工具:https://luplab.gitlab.io/rvcodecjs/#q=34179073&abi=false&isa=AUTO似乎,只支持RV32I、RV64I、RV128I指令集:
原创
发布博客 2024.07.13 ·
829 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

搭建NEMU与QEMU的DiffTest环境(Socket方式)

NEMU可以调用gdb_getregs函数,从QEMU获取到寄存器数据,一共528字节,每个字节为"0" ~ "9"或"a" ~ "f"之间的任一字符,每16个字节表示一个寄存器值,共表示33个寄存器。比如:数据包中"1234567823456789...",那么"1234567823456789",低位在前,高位在后,即表示寄存器值为0x8967452378563412,相当于数据包中用2字节表示1字节的实际数据。528字节的数据包中,从前往后依次,表示32个gpr与pc寄
原创
发布博客 2024.07.12 ·
1442 阅读 ·
16 点赞 ·
0 评论 ·
28 收藏

NEMU DiffTest基本原理

DiffTest核心思想: 对于根据同一规范的两种实现, 给定相同的有定义的输入, 它们的行为应当一致。NEMU作DUT时,可以选择5种方式的模拟器,作为参考模拟器REF。当然,如果需要测试处理器硬件,那处理器也可以作为DUT。对于后面三种,楼主没有具体研究,因此本文也不作介绍。/,编译为动态库riscv64-qemu-so。/,编译为动态库riscv64-qemu-so。可以将NEMU/tools/可以将NEMU/tools/
原创
发布博客 2024.07.12 ·
1239 阅读 ·
19 点赞 ·
0 评论 ·
29 收藏

搭建NEMU与QEMU的DiffTest环境(动态库方式)

这个函数在NEMU/tools/qemu-dl-diff/src/isa/x86/intr.c中定义(riscv怎么会用x86的代码?如果,我们正在开发一款处理器或者模拟器,那么我们的指令集实现,可能存在无数错误,此时我们需要找一个标准实现,也就是。在NEMU/tools/qemu-dl-diff/src/diff-test.c中,将。因此,qemu路径,必须为/usr/bin/qemu-system-riscv64。在NEMU/tools/qemu-dl-diff/build目录下,生成。
原创
发布博客 2024.07.07 ·
1080 阅读 ·
11 点赞 ·
0 评论 ·
21 收藏

RISC-V指令集差分测试(DiffTest)系列教程

处理器运行一条指令,模拟器(如NEMU)也运行相同的指令,然后比较两者的状态。由于每运行一条指令,都会对比关键寄存器的数值,所以能够实现动态实时比对,从而更容易定位bug。:对于根据同一规范的两种实现, 给定相同的有定义的输入, 它们的行为应当一致。为了更好的学习研究NEMU中DiffTest功能,我们分如下章节进行介绍。4《搭建NEMU与QEMU的DiffTest环境(Socket方式)》3《搭建NEMU与QEMU的DiffTest环境(动态库方式)》5《NEMU中DiffTest移植》
原创
发布博客 2024.07.07 ·
477 阅读 ·
3 点赞 ·
0 评论 ·
1 收藏

负数在二进制中的表示方法

在二进制补码表示法中,负数是通过取其绝对值的二进制表示(即正数的二进制表示),然后取反(0变1,1变0),最后加1来得到的。在这种表示法中,符号位是最高位(Most Significant Bit, MSB)。
原创
发布博客 2024.06.20 ·
1382 阅读 ·
6 点赞 ·
0 评论 ·
7 收藏

P4V代码冲突解决

《翻译P4V官方教程(5)Resolving Conflicts in P4V》:https://blog.csdn.net/u013412391/article/details/121667326
转载
发布博客 2024.06.19 ·
165 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Windows和Linux的换行符CRLF/LF(\r\n,\n)简介

CR是Carriage-Return的缩写,即回车;LF是Line-Feed的缩写,即换行。CR和LF是在计算机终端还是电传打印机的时候遗留下来的东西。电传打字机就像普通打字机一样工作。在每一行的末端,CR命令让打印头回到左边。LF命令让纸前进一行。虽然使用卷纸的终端时代已经过去了,但是,CR和LF命令依然存在,许多应用程序和网络协议仍使用这些命令作为分隔符。Linux(unix) 和 mac 默认使用 "
" 作为换行符;Windows 默认使用 "\r
" 作为换行符;
转载
发布博客 2024.05.23 ·
1695 阅读 ·
0 点赞 ·
1 评论 ·
4 收藏

OpenSBI 固件代码分析合集-泰晓社区

泰晓社区:https://tinylab.org/
原创
发布博客 2024.05.07 ·
419 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

在QEMU上运行OpenSBI+Linux+Rootfs

挂载到/mnt/ext2/目录后,当你在 /mnt/ext2/ 下写入文件或修改文件时,这些更改会反映到 rootfs.ext2 文件中。安装时,会将可执行程序qemu-system-riscv64,以及头文件等其他文件,拷贝至/opt/qemu目录下。到这里,我们已经对rootfs.ext2文件写入完毕,写入的内容,主要包括busybox、目录结构、rcS文件等。编译完后,在opensbi/build/platform/generic/firmware/目录下。
原创
发布博客 2024.05.07 ·
1876 阅读 ·
17 点赞 ·
1 评论 ·
25 收藏

SPIKE源码编译与使用(二)

本文主要介绍,SPIKE模拟器运行Linux Kernel,也就是spike+bbl的情况。通常启动流程为:Bootloader+Kernel+File System。BBL,就相当于是Bootloader。Kernel和File System,既可以为2个独立的可执行文件,也可以集成为一个文件。本例这里,要求集成为一个文件。此外,Kernel和File System集成的单文件,最终还要被包含在BBL中,可以在riscv-pk编译时,进行指定。
原创
发布博客 2024.05.06 ·
1198 阅读 ·
29 点赞 ·
1 评论 ·
10 收藏
加载更多