华科 OS 实验的 RISC-V 代理内核是如何启动的?

代码仓库为 hustos riscv-pke 以下内容基于 lab2 代码 入口在哪? 入口为 kernel/machine/mentry.S 的 _mentry ,它调用了 kernel/machine/minit.c 的 m_start(uintptr_t hartid, uintptr_t dtb) ,两个参数并没有在 _mentry 中设置,这是因为 spike 会自动设置 a0 寄存器为 CPU id ,设置 a1 寄存器为设备树字符串,这刚好也符合 RV 的传参规则。 ...

2024 3月 02 · 2 分钟 · vaaandark

内联汇编

高中第一次看到在 C 语言中嵌入汇编语言时,我就觉得它非常好玩,到大学刚开学的时候,我甚至有使用它的需求,可惜直到现在我才抽出时间开始学习它。 分类 在 GNU 的 GCC 中,内联汇编被分为两类:Basic asm 和 Extended asm 。 ...

2023 1月 02 · 6 分钟 · vaaandark

ARM与80X86的异同

今天初步认识了 ARM 汇编。 CPU 内寄存器 aarch64 有 31 个 64 位通用寄存器,它们的名字是为 xn(n 为 0-30 的整数),不像 80X86 一样暗示了它们的用途。 类似 rax 和 eax 的关系,它们对应的 32 位寄存器叫做 wn(n 为 0-30 的整数)。 ...

2022 11月 08 · 2 分钟 · vaaandark

CSAPP Bomb Lab

之前的 Bomb Lab 没有做,现在刚好在上计算机系统基础这门课,学校使用了 CSAPP 的 Bomb Lab ,可以补交一下 CSAPP 的作业,也可以学习一下 GDB 的使用。 实验简述 遗憾地,CSAPP 的 Bomb Lab 早已提供的是 Linux 的 64 位可执行程序,而我校的 Lab 还是 32 位的 Windows PE32 。不过我还是找老师要到了它的 Linux 版本,不过也是 ELF32 ,可执行文件的名字叫bomb_32。 ...

2022 10月 29 · 12 分钟 · vaaandark

稍微深入VLA

最近在学习汇编语言,和朋友聊天时聊到了 C 语言中的变长数组,想知道在汇编后是什么样子的。 变长数组(Variable-length array) 可变长数组是指在计算机程序设计中,数组对象的长度在运行时(而不是编译时)确定。 ...

2022 10月 20 · 1 分钟 · vaaandark

80X86汇编语言学习

汇编语言学习笔记 预备知识 Intel 机器 微型计算机的构成 80X86 微处理器的基本结构 数据寄存器组 段寄存器组 80X86 的三种工作方式 实地址模式 保护模式 虚拟 8086 方式(V86方式) 数据在计算机内的表示形式 有符号数、无符号数、浮点数等相关知识见 CSAPP ...

2022 9月 27 · 3 分钟 · vaaandark