asmkit-rs 文档示例
主要功能
这是一个 Rust 汇编工具库的使用示例,展示了如何动态生成和执行机器码。
核心组件
- CodeBuffer: 代码缓冲区,用于存储生成的汇编指令
- Assembler: 汇编器,用于编写汇编代码
- JitAllocator: JIT(即时编译)内存分配器
代码示例说明
该示例演示了创建一个函数来执行 SIMD 向量加法操作:
- 初始化: 创建代码缓冲区和汇编器
- 参数设置: 使用寄存器 RDI(目标)、RSI(参数0)、RDX(参数1)
- 汇编指令:
- 从第一个参数地址加载 4 个整数到 XMM0 寄存器
- 从第二个参数地址加载 4 个整数到 XMM1 寄存器
- 执行向量加法操作
- 将结果存储到目标地址
- 返回函数
- JIT 执行:
- 使用双重映射机制分配可执行内存
- 通过
span.rw()写入代码,通过span.rx()执行代码
- 测试: 在 x86_64 Unix 平台上执行生成的函数,将 [4,3,2,1] 和 [1,5,2,8] 相加,输出 [5,8,4,9]
平台要求
仅支持 x86_64 架构的 Unix/SystemV 平台
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 页
评论区
写评论还没有评论