PA1报告
PA1 报告
1.从状态机视角理解程序运行#
前两次循环
(0, x, x) -> (1, 0, x) -> (2, 0, 0) -> (3, 0, 1) -> (4, 1, 1) -> (2, 1, 1) -> (3, 1, 2) -> (4, 3, 2) -> (2, 3, 2) -> ...
最后两次循环
(2, 4851, 98) -> (3, 4851, 99) -> (4, 4950, 99) -> (2, 4950, 99) -> (3, 4950, 100) -> (4, 5050, 100) -> (5, 5050, 100)-> (5, 5050, 100)
2.理解基础设施#
500*90%*30*20=270000,换算成小时为75小时!
3.RTFM,科学查阅手册#
-
riscv32有哪几种指令格式?
6种,I、S、R、B、U、J
-
LUI指令的行为是什么?
LUI(Load upper Immediate)用来构建一个32bit常数,属于U型,该指令将U型立即数置于目的寄存器的高20位,低12位补零
- mstatus寄存器的结构是怎么样的?
mstatus(Machine Status Registers),是一个机器模式下的MXLEN bit的可读可写状态控制寄存器。格式如下,图3.6为RV32格式,图3.7为RV64格式。
4 shell 统计源代码个数及总行数#
# 统计nemu目录下所有文件数
find . -name "*.[ch]" | xargs wc -l
# 使用git checkout pa0 回到pa0分支执行上条命令即可得到框架代码量
# 共新增519行
# 统计特定文件数
find . -name "*.[ch]" | grep -E "^\./(src|include)" | grep -E -v "^\./include/config" | grep -E -v "mips32|riscv64|loongarch32r" | wc
5 RTFM -Wall -Werror#
-
-Wall
启用所有可能出现问题的警告,可与特定警告种类配合
-
-Werror
把所有警告都看成错误。-Werror=可指定某一种警告看成错误
两个选项都是为了在编译时刻把潜在的fault直接转变成failure,减少BUG的发生
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具