Skip to content

扩展单函数寄存器帧至 65535 槽并保持小指令紧凑编码 - #86

Draft
yciu wants to merge 1 commit into
EasyConNS:devfrom
yciu:codex/wide-register-frames
Draft

yciu wants to merge 1 commit into
EasyConNS:devfrom
yciu:codex/wide-register-frames

Conversation

@yciu

@yciu yciu commented Nov 1, 2026

Copy link
Copy Markdown

单函数寄存器帧原先受 8 位指令操作数限制,参数、出站窗口和存活值合计超过 255 槽就会编译失败。本改动增加按需使用的 16 位操作数,将帧槽数上限提升到 65535(R0–R65534);小寄存器指令继续使用原有 4/8 字节编码,宽指令增加一个 4 字节扩展字。

同步更新编译器、C# 编解码、调试行号映射、C VM 的 computed-goto/switch 两种派发及返回寄存器保存。ECX1/ECM1 format 和 ABI 修订号升为 2,旧镜像需重编译,执行字节码的原生宿主/固件需更新 VM;参数个数上限仍为 254,设备可执行的帧大小继续由实际内存容量决定。

验证:Release 全解决方案构建通过;全量回归只发现两项旧版本镜像兼容契约需要同步,调整后相关 193 项测试全部通过。新增覆盖 1024 个存活值、65535 槽边界、宽返回寄存器、混合宽度跳转、容器和模块缓存往返、非法扩展字、设备帧内存不足。两种 C VM 派发均使用 Clang 实际构建并执行,dotnet format --verify-no-changes 通过。

以草稿提交,供维护者审查字节码格式和兼容性变更。

@ca1e

ca1e commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

当前字节码架构设计以偏嵌入式平台执行方向,受限资源环境下扩展理论上限无任何实际意义。故修改方向建议改为特殊功能限制产出对应字节码,pc 平台上改为扩展指令专属执行器实现

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants