更新日志

ICS2024

NEMU

  1. 特性
    • 提升在AM上运行时的随机性 (补丁)
    • 使用capstone替换LLVM进行反汇编 (补丁)
    • DiffTest支持loongarch32r (补丁)
    • 重新添加x86 (补丁)
  2. 性能
    • 物理内存的初始化只采用1个随机字节, 大幅提升该步骤的性能 (补丁)
    • 通过缩小局部变量的作用域提升译码过程的性能 (补丁)
  3. 修复
    • 修复在AM上无法调用文件操作的问题 (补丁)
    • 修复关闭窗口后仍无法退出的问题 (补丁)
    • 修复将NEMU编译到riscv64-nemu时, NEMU中的ISA为riscv32的错误 (补丁)
    • 修复在打开日志文件前调用Log导致段错误的问题 (补丁)
    • 修复utils.hANSI_BG_MAGENTA的定义错误 (补丁)
  4. 重构
    • s->isa.inst.val简化为s->isa.inst (补丁)
    • 添加panic()拦截不支持的译码类型 (补丁)
    • 增大IO空间 (补丁)
  5. 构建
    • 源文件无变化时无需重新链接 (补丁)
    • 修复CONFIG_CC为空时导致编译失败的问题 (补丁)
    • 修复在macOS上SDL2库路径错误的问题 (补丁)
    • 去除无用的宏定义 (补丁)
  6. 文档
    • 修复config.mk中的文字错误 (补丁)
    • 更新license中的时间 (补丁)

Abstract-Machine

  1. 特性
    • 在native中添加UART (补丁)
    • 为npc添加uart_config函数 (补丁)
    • riscv??-nemu_start符号添加大小属性 (补丁)
    • 添加riscv32mini-nemu (补丁补丁)
    • 为native新增其他架构
  2. 修复
    • 修复riscv??-nemutrap.S中的寄存器数量错误 (补丁)
    • 修复使用clang时libgcc中的编译错误 (补丁)
    • 修复编译预处理指示符 (补丁)
    • 修复链接时jal跳转距离不够的错误 (补丁)
    • 修复loongarch的cte.c中变量名错误导致的编译错误 (补丁)
    • 修复x86-qemu中boot相关的strict aliasing bug (补丁)
  3. 重构
    • 去除klib中的无用代码 (补丁)
    • 简单重构native GPU中WH相关的代码 (补丁)
  4. 构建
    • 去除Makefileimage-dep规则中的冗余依赖 (补丁)
    • 避免Linux上的其他动态库链接到ELF中的符号 (补丁)
    • 重构依赖规则
      • 修复源文件无变化时仍然重新链接的问题 (补丁)
      • mainargs注入到bin文件, 避免重复编译trm.c (补丁)
      • 将链接脚本添加到依赖规则 (补丁)
      • 不显示native的链接命令 (补丁)
    • native的IOE通过sdl2-config找到SDL.h (补丁)
    • 修复x86-qemuarray subscript 0 is outside array bounds的警告 (补丁)

am-kernels

  1. 特性
    • 新增若干测试
    • 假设uptime不从0开始, 从而支持typing-game的重新运行 (补丁)
    • benchmark出错时向TRM返回非0值 (补丁)
  2. 性能
    • 加速typing-game清屏的过程 (补丁)
  3. 修复
    • 修复keyboard-testchar符号问题 (补丁)
    • 修复game of life的栈溢出问题 (补丁)
    • 修复hanoi中屏幕不刷新的问题 (补丁)
    • 修复alu-tests中的若干问题
      • 修复由-Wall-Werror报告的错误 (补丁)
      • 修复由clang报告的-2147483648格式错误问题 (补丁)
    • 修复microbench中的uint32_t溢出问题 (补丁)
    • 修复在性能较低的平台上donut显示时间过短的问题 (补丁)
  4. 重构
    • intr-test添加panic信息 (补丁)
  5. 构建
    • 改进cpu-testsMakefile输出的信息 (补丁)
  6. 文档
    • 补充alu-testssnake的license (补丁)
  1. 修复
    • 修复nplayer中的结束判断条件 (补丁)
    • 拦截libbdf中字体文件打开错误的问题 (补丁)
    • 用surface相关API实现native的SDL渲染, 修复render API只能在主线程调用的问题 (补丁)
    • 修复nslider在Linux native上无法更新画面的问题 (补丁)
    • 修复libbdf在gcc 13上编译错误的问题 (补丁)
  2. 构建
    • 修复git未追踪scripts/riscv/common.mk的问题 (补丁)
    • 修复ar命令在macOS中出错的问题 (补丁)
    • 重构依赖规则, 修复源文件无变化时仍然重新链接的问题 (补丁)
  3. 文档
    • 添加关于/proc/dispinfo的注释 (补丁)

ICS2023

NEMU

  1. 特性
    • 重新添加mips32 (补丁)
    • 新增loongarch32r (补丁)
    • 通过llvm反汇编时关闭伪指令 (补丁)
  2. 修复
    • 修复译码非法指令时的未定义行为 (补丁)
    • 更新spike版本, 修复macOS上因llvm版本较新导致的spike编译错误 (补丁)
      • 使用c++17编译spike (补丁)
    • 修复gen-exprfscanf()未检查返回值导致的编译报错 (补丁)
    • 修复nemu/src/device/keyboard.c中宏可能与库的头文件中定义重名的问题
      • 宏展开后重名(补丁)
      • 宏展开过程中重名(补丁)
    • 修复SDL在Wayland环境下窗口不弹出的问题 (补丁)
  3. 重构
    • 合并riscv32和riscv64 (补丁)
  4. 构建
    • 修复C++报告的invalid suffix on literal警告 (补丁)
    • 同步config文件 (补丁)
    • 修复在llvm15上库函数路径变化导致的编译错误 (补丁)
    • 修复在macOS上按键宏定义与系统库冲突的问题 (补丁)
    • 将difftest动态库的符号默认设置为visibility=hidden, 提升动态库内部符号引用的性能 (补丁)
    • 修复Gentoo Linux中kconfig链接报错的问题 (补丁)
  5. 文档
    • 更新启动debian的说明文档 (补丁)
    • 修复difftest-def.h中注释的文字错误 (补丁)

Abstract-Machine

  1. 特性
    • 新增loongarch32r-nemu (补丁)
    • riscv64-npc改为riscv32e-npc (补丁)
      • riscv32e-npc添加libgcc的若干支持, 用软件模拟乘除指令 (补丁)
    • 添加用于生成logisim镜像文件的python脚本 (补丁)
  2. 修复
    • 在mips32的start.S中为异常入口0x80000180预留若干位置, 用于设置异常入口处的执行 (补丁)
    • 修复sdl2-2.0.22-1后窗口有概率不显示的问题 (补丁)
    • 修复native的platform.c链接到RT-Thread中ftruncate()的问题 (补丁)
    • 修复riscv.h中通用寄存器数量在rve中不正确的问题 (补丁)
    • 修复riscv32-nemu中错误采用rve ABI的问题 (补丁)
  3. 重构
    • scripts/isa/目录下RISC-V相关的.mk文件合并成riscv.mk (补丁)
    • am/include/arch/目录下RISC-V相关的.h文件合并成riscv.h (补丁)
  4. 构建
    • 去除ld 2.39引入的关于可执行栈和可读可写可执行的可加载段的警告 (补丁补丁)
    • 使用riscv64-linux-gnu-gcc 11将CSR指令独立成zicsr扩展, 修复相关编译错误 (补丁)
    • 支持将LDFLAGS传递给native的g++ (补丁)
    • 修复macOS上默认调用llvm-ar的问题 (补丁)

am-kernels

  1. 特性
  2. 修复
    • 修复native在glibc 2.39上运行thread-os时发生栈溢出的问题 (补丁)
  3. 重构
    • 去除cpu-tests中冗余的klib依赖 (补丁)
  1. 特性
  2. 修复
    • 修复native在glibc 2.39上段错误的问题 (补丁)
    • 修复LD_PRELOAD影响gdb的问题 (补丁)
  3. 重构
    • 将CRT中_start的定义集中在一个文件中, 方便使用__riscv宏进行判断 (补丁)
  4. 构建
    • 添加缺失的文件scripts/riscv/common.mk (补丁)
  5. 文档
    • 修复README.md中的错误 (补丁)

ICS2022

NEMU

  1. 特性
    • 移除指令实现的IR层
    • 支持向spike注入中断
    • 使用LLVM库进行反汇编 (补丁)
    • 添加NEMU作为REF的API(一生一芯中使用) (补丁)
    • 添加MMIO区间重叠的检查 (补丁)
  2. 修复
    • 修复spike段错误的问题 (补丁)
    • 修复监视点初始化时的数组溢出问题 (补丁)
    • 修复isa_logo字符串缺少\0的错误 (补丁)
    • 去掉RTL中间表示, 用"抄手册"宏重构译码部分 (补丁)
    • 修复difftest_init()中缺少的参数 (补丁)
    • 修复因optind重定位错误导致spike触发段错误 (补丁)
    • 修复移位运算的未定义行为 (补丁)
    • 修复ANSI文字错误 (补丁)
    • 修复PMEM64的printf格式错误 (补丁)
    • 修复pmem右边界的计算 (补丁补丁)
    • 修复字符串中的文字错误 (补丁)
    • 修复uint64_t的格式说明符 (补丁补丁)
  3. 重构
    • instr重命名为inst
    • 去掉调用dlopen()时不使用的RTLD_DEEPBIND (补丁)
    • 交换itrace中输出的字节序, 使其符合RISC-V的阅读习惯 (补丁)
    • 重构物理内存左右边界的计算 (补丁)
    • 简化INSTPAT的写法 (补丁补丁)
  4. 构建
    • 修复clean-tools错误清除spike中子项目的问题 (补丁)
    • 修复git忽略追踪disasm.cc的问题 (补丁)
    • 支持多个LLVM版本 (补丁补丁)
    • 使用ics-pa项目中的git函数 (补丁)
    • 默认关闭设备 (补丁)
    • 修复采用-g编译时的LLVM相关的警告 (补丁)
    • 使用ssh从github上克隆spike (补丁)
    • 修复LLVM 14中头文件TargetRegistry.h移动导致的错误 (补丁)
    • LLVM版本小于11时报错 (补丁)
    • 去除kconfig中冗余的动态库-ltinfo (补丁)
  5. 文档

Abstract-Machine

  1. 特性
    • riscv64-npc支持乘除法指令 (补丁)
    • 使用标准调试指令实现nemu_trap (补丁)
  2. 修复
    • 修复定义__NATIVE_USE_KLIB__时的死递归 (补丁)
  3. 构建
    • 默认使用通常模式(而不是批处理模式)来运行NEMU (补丁)
    • 修复ubuntu 21.10下因glibc中的SIGSTKSZ展开为函数调用而导致native编译出错的问题 (补丁)
      • 放宽SIGSTKSZ的检查条件 (补丁)

am-kernels

  1. 构建
    • cpu-tests支持gdb目标 (补丁)

Nanos-lite

  1. 修复
    • 修复sizeof(struct timeval)在glibc和newlib中不一致的问题 (补丁)
  1. 构建
    • 使用ssh从github上克隆子仓库 (补丁)

ICS2021

NEMU

  1. 特性
    • 为VGA添加sync寄存器 (补丁)
    • 添加riscv64 (补丁)
    • 引入"抄手册宏", 简化操作码译码的实现 (补丁)
    • 添加spike作为RISC-V DiffTest的REF
    • 暂时移除x86和mips
    • 移除cpu-tests的一键运行脚本, 将其合并到cpu-tests
    • 添加各种对宏进行相关测试的宏定义
    • 添加一些将来可能会使用的资源, 包括启动Debian的说明, SD卡内核驱动等
    • cpu_exec()中调用device_update() (补丁)
  2. 修复
    • 修复PMEM_SIZE设置与讲义不一致的问题 (补丁)
    • 修复文字错误fecth (补丁)
    • 修复框架代码audio_play()未使用的编译警告 (补丁)
    • 修复BITMASK宏中的移位操作的未定义行为 (补丁)
    • 修复qemu-diff中调用calloc()时的类型错误 (补丁)
    • 修复config.mk中的文字错误 (补丁)
    • 修复MEM_RET_FAILMMU_TRANSLATE的数值冲突的问题 (补丁)
  3. 重构
    • 去除gen-expr中的无用代码 (补丁)
    • 将简易调试器命名为sdb
    • 添加hostcall()来封装计算指令以外的操作
    • host_read()/host_write()实现pmem_read()pmem_write()
    • 添加mmio_read()/mmio_write()
    • 将部分功能实现放到utils/目录下
    • 重构qemu-diff中ISA相关的代码
    • load_val重命名为is_write (补丁)
    • dnpc更新pc (补丁)
    • 将移位指令的命名修改成RISC-V风格 (补丁)
    • 去除无用的isa_mmu_state() (补丁)
    • 去除无用的isa_hostcall() (补丁)
  4. 构建
    • 添加Kconfigmenuconfig维护宏定义
    • Makefile拆成build.mknative.mk, 前者用于在构建tools/目录下的工具时复用
    • Makefile中采用filelist维护需要编译的源文件
    • 支持将NEMU编译到AM
    • 去除build.mk中无用的SO_CFLAGS (补丁)
  5. 文档
    • Makefile中添加注释 (补丁)
    • 修复isa_raise_intr()中的注释 (补丁)

Abstract-Machine

  1. 特性
    • NEMU的GPU通过向sync寄存器写入非零值实现屏幕的刷新 (补丁)
    • native的堆区移动到0x1000000, 以支持用户程序可在VME关闭时访问 (补丁)
    • native的GPU支持800x600模式 (补丁)
    • 添加riscv64-nemu (补丁)
    • 强制native初始化时链接到glibc中的memcpy(), 在klib中的memcpy()实现不正确的情况下也能工作
    • 为NEMU添加单核的MPE实现
    • 支持x86_64-qemu的交叉编译
    • 添加riscv64-mycpu(一生一芯中使用) (补丁, 补丁, 补丁, 补丁)
    • 添加spike (补丁)
  2. 性能
    • 移除native在物理内存上的保护功能, 减少系统调用以提升性能 (补丁)
    • 用哈希表实现nativemap()中的虚地址查找
  3. 修复
    • 修复Linux 4.19内核中因恢复FPU上下文时fxrstor64指令触发缺页而发送SIGSEGV的问题 (补丁)
    • 修复native在信号处理函数中调用非信号安全函数printf()的问题
    • 修复amdev.h被多次包含造成的问题
    • 修复在native上运行仙剑时遇到的SIGFPE问题, 需要在调用SDL_BlitSurface前清除等待中的FPU异常
    • 修复riscv64-mycpu模拟除法时的死递归问题 (补丁)
    • 修复静态库的循环依赖问题 (补丁)
  4. 重构
    • 移除x86-nemu中无用的usp (补丁)
    • native中使用SIGUSR2实现yield(), 提升代码的可移植性
    • native中使用函数调用从irq_handle()返回, 提升代码的可移植性
    • 用surface相关API实现native的SDL渲染
    • native平台相关的代码移动到platform.c
    • 用管道实现native声卡中的数据同步
    • 去除boot目录
    • __amkcontext_start重命名为__am_kcontext_start
    • klib中的函数默认调用panic()
    • 重构目录, 合并riscv32和riscv64 (补丁)
  5. 构建
    • 清理NEMU客户程序中未使用的代码和数据 (补丁)
    • 去除Ubuntu 20.04中在Comet Lake以上版本的CPU中编译出的endbr32指令 (补丁)
    • 待构建源文件列表为空时提示错误信息
    • 若交叉编译器不存在, 则使用本地编译器
    • 不同的架构复用相同的链接脚本
    • 在mk文件中指定AM相关的源文件 (补丁)
    • 在Ubuntu中禁用栈保护 (补丁)
  6. 文档
    • 完善Makefile中的注释

am-kernels

  1. 特性
    • microbench的时间精度提升至us (补丁)
    • microbench添加huge规模输入, 用于真机测试 (补丁和) 补丁)
    • microbench的参考机器更换为i9-9900k (补丁)
    • cpu-tests支持一键运行的结果统计 (补丁)
    • 支持将NEMU编译到AM (补丁)
    • 当NEMU未成功编译到AM时, 恢复之前的config配置 (补丁)
  2. 修复
    • 修复cpu-testsstring测试中strcmp()的返回值检查 (补丁)
    • 修复litenes中多重定义的链接错误 (补丁)
  3. 重构
    • microbench中显式使用uint32_tuint64_t (补丁)
    • microbench自行对us部分进行输出格式化, 避免对%03d的依赖 (补丁)
    • am-testsintr-testpirntf()换成putch(), 降低对klib的依赖 (补丁)
  4. 构建
    • 移除cpu-tests中不再使用的构建规则 (补丁)
    • 取消部分文件的可执行权限 (补丁)

Nanos-lite

  1. 修复
    • 修复HAS_NAVY=0时依赖错误的问题 (补丁)
    • 修复框架代码pg_alloc()未使用的编译警告 (补丁)
  1. 特性
    • 添加riscv64的支持 (补丁)
  2. 修复
    • 修复NWM在退出时子进程仍然运行的问题 (补丁)
    • 修复libbdflibbmp调用SDL_CreateRGBSurfaceFrom后的内存泄漏问题 (补丁)
  3. 重构
    • libminiSDLfpSDL_RWopsunion成员中取出, 从而允许通过fmemopen实现内存文件 (补丁)
    • libSDL_image中要求IMG_Load_RW()freesrc参数为0 (补丁)
  4. 构建
    • ramdisk.img大小为512字节的整数倍, 从而易于实现磁盘的特性 (补丁)
    • 去除make clean-all时的警告信息 (补丁)
    • make init时不检查ISA是否合法 (补丁)
    • make install时自动创建fsimg/bin/目录 (补丁)
  5. 文档
    • libSDL_mixer支持不同频率不同声道的多通道混声 (补丁)

results matching ""

    No results matching ""