< 返回版块

Mike Tang 发表于 2026-03-19 14:02

asmkit-rs 文档示例

主要功能

这是一个 Rust 汇编工具库的使用示例,展示了如何动态生成和执行机器码。

核心组件

  • CodeBuffer: 代码缓冲区,用于存储生成的汇编指令
  • Assembler: 汇编器,用于编写汇编代码
  • JitAllocator: JIT(即时编译)内存分配器

代码示例说明

该示例演示了创建一个函数来执行 SIMD 向量加法操作:

  1. 初始化: 创建代码缓冲区和汇编器
  2. 参数设置: 使用寄存器 RDI(目标)、RSI(参数0)、RDX(参数1)
  3. 汇编指令:
    • 从第一个参数地址加载 4 个整数到 XMM0 寄存器
    • 从第二个参数地址加载 4 个整数到 XMM1 寄存器
    • 执行向量加法操作
    • 将结果存储到目标地址
    • 返回函数
  4. JIT 执行:
    • 使用双重映射机制分配可执行内存
    • 通过 span.rw() 写入代码,通过 span.rx() 执行代码
  5. 测试: 在 x86_64 Unix 平台上执行生成的函数,将 [4,3,2,1] 和 [1,5,2,8] 相加,输出 [5,8,4,9]

平台要求

仅支持 x86_64 架构的 Unix/SystemV 平台

https://docs.rs/asmkit-rs

Avian Physics 0.6 发布

这是一篇关于 Avian Physics 0.6 版本发布的技术博客文章。Avian 是一个为 Bevy 游戏引擎开发的基于 ECS 的 2D 和 3D 物理引擎。

主要亮点

Move-and-Slide(移动与滑动)功能

  • 实现了运动学角色控制器(KCC)的核心移动和碰撞算法
  • 允许物体沿期望的速度矢量移动,遇到障碍物时会沿其表面滑动
  • 提供了相关工具:
    • 针对角色移动优化的形状投射
    • 从初始重叠中恢复的穿透修复功能
    • 基于 GJK 算法的速度投影
    • 支持自定义位置积分

关节马达(Joint Motors)

  • 旋转关节和棱柱关节现在支持马达
  • 提供速度控制和位置控制两种模式

BVH 宽相位优化

  • 宽相位碰撞检测现在使用 OBVHS
  • 大幅提升大型场景和静态几何体的性能

空间查询优化

  • 空间查询现在重用宽相位使用的 BVH
  • 显著降低系统开销

使用示例

文章提供了简单的运动学角色控制器实现示例,展示了如何:

  • 根据线性速度移动角色
  • 碰撞时沿障碍物滑动
  • 处理几何体重叠
  • 记录移动过程中接触的实体

未来计划

  • 通用数值和 SIMD 支持
  • 代码清理和优化
  • 更多角色控制器功能

https://joonaa.dev/blog/12/avian-0-6

--

From 日报小组 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页