version 0.8.0
当前版本为 0.8.0,Windows x64 命令行 EXE。目标为完整迁移参考版本 3.2.4.6.windows,并实现 O1/O2 机器码逐字节一致。完整迁移仍在进行。
0.8.0
3.2.4.6.windows
已通过 REA 提取原版 373 个助记符及 632 个指令模板。当前 EXE 使用其中已实现并对照验证的标量与向量范围。
.text
@main
@b0
@b128
MOVIL
MOVIH
MOVILH
SADD1
SADDU1
SSUB1
SSUBU1
SMOVI0L
SMOVI1L
SMOVI0H
SMOVI1H
SMVCGC
VMVCGC
SMVCCG
VMVCCG
.dat
.asm
.s
.dis
EXE 没有加载、启动或嵌入原 lasm.exe,运行时无需 REA、Ghidra、Python 或 Node.js。开发对照脚本会显式调用用户提供的原版编译器。
lasm.exe
在项目目录打开 PowerShell。
.\bin\lasm-rebuild.exe --help .\bin\lasm-rebuild.exe .\examples\immediate.la -O2 --layout .\config\m7004.json --output .\example.dat .\example.asm .\example.dis
输出父目录应已存在。编译器自身 --version 返回独立实现版本,兼容输出中的版本行保留参考版本标识。
--version
.out/.o 返回 427,与该参考版本最小请求的实测拒绝行为一致。诊断文字尚未逐项复现。
.out/.o
支持 Windows x64、MinGW GCC 15.1.0 + Ninja,或 Visual Studio 2022 C++ + Windows SDK,均使用 CMake。MSVC 构建静态链接 C++ 运行库。
powershell -NoProfile -ExecutionPolicy Bypass -File .\build.ps1
脚本优先选择 PATH 中的 MinGW,否则使用 Visual Studio 2022,构建目录分别为 build 和 build-msvc。可通过 -Toolchain MinGW 或 -Toolchain MSVC 显式选择。跨机器迁移时创建新的构建目录。固定依赖为 nlohmann/json 3.12.0,头文件及 MIT 许可证已随源码提供。
build
build-msvc
-Toolchain MinGW
-Toolchain MSVC
以下测试需要 Python 和显式指定的原版编译器。目标目录必须尚不存在。
python .\tests\compare_control_subset.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-control-new python .\tests\compare_scalar.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-scalar-new --random-count 200 python .\tests\compare_vector.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-vector-new --random-count 600 python .\tests\compare_pipeline.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-pipeline-new --random-count 600 python .\tests\compare_fma.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-fma-new --random-count 600 python .\tests\compare_reductions.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-reductions-new --random-count 600 python .\tests\validate_edges.py --candidate .\bin\lasm-rebuild.exe --destination .\validation-edges-new python .\tests\compare_short.py --reference "C:\Users\ZZH\Desktop\autolasm\vendor\lasm0260908\bin\lasm.exe" --candidate .\bin\lasm-rebuild.exe --layout .\config\m7004.json --destination .\validation-short-new --random-count 100
历史 0.7.0 的 58,616 项输出原始字节比较全部一致,记录位于 validation/report.json、validation/scalar-report.json、validation/vector-report.json、validation/pipeline-report.json、validation/fma-report.json 和 validation/reduction-report.json。这些历史报告绑定旧版 EXE 的哈希,不能作为新版的全量重检结论。0.8.0 的本机验证结果与报告索引见 validation/summary.md。
validation/report.json
validation/scalar-report.json
validation/vector-report.json
validation/pipeline-report.json
validation/fma-report.json
validation/reduction-report.json
validation/summary.md
Windows 的 ASM/S/DIS 源路径及 @bar 注释使用系统 ANSI 编码,与原版一致;源文件和命令行仍支持 Unicode 路径。
@bar
普通三源格式及其立即数形式,在文本目标与第三源采用不同寄存器时,机器码保留第三源字段。IN 形式含有独立的目标字段。这些行为由原版编码函数和固定寄存器、虚拟变量对照共同确认,当前实现按逐字节兼容要求保留。
完整文法与表达式、浮点类型、导入、多输入、多段及数据布局、多函数及 ABI、地址寄存器、访存、跨寄存器组与其余向量指令、寄存器对、溢出到栈,以及优化级中的条件控制流和循环变换仍待迁移。
当前仅实现已列明的调度与资源模型,未完成完整 EIMS/PPBF 和所有失败回退路径。部分尚未覆盖的输入返回退出码 2。有限对照通过只证明相应用例一致,尚未进行 DSP 执行验证。
迁移边界、版本历程和下一步工作见 PROGRESS.md。逆向资料和探针索引见 research/README.md。当前验证汇总见 validation/summary.md。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
LASM 独立重实现
当前版本为
0.8.0,Windows x64 命令行 EXE。目标为完整迁移参考版本3.2.4.6.windows,并实现 O1/O2 机器码逐字节一致。完整迁移仍在进行。已通过 REA 提取原版 373 个助记符及 632 个指令模板。当前 EXE 使用其中已实现并对照验证的标量与向量范围。
已实现范围
.text段、一个多行@main入口和多个输出文件。@b0至@b128、常量别名、128 位模运算字面量解析和数值宽度检查。MOVIL、MOVIH、MOVILH接受字面量截断后的无符号 64 位值。输出保留完整合法立即数的十六进制表示。SADD1、SADDU1、SSUB1、SSUBU1、SMOVI0L、SMOVI1L、SMOVI0H、SMOVI1H。无条件形式接受 0/1 立即数,包含死代码删除、寄存器分配、混合打包、分支重定位和 O1/O2 调度。SMVCGC的 39 个合法目标及VMVCGC的 7 个合法目标,包含 SCR、CVCCR、VLR 和 SVR0 至 SVR15。实现写回时点、执行完成时点及必要的 SNOP 插入。SMVCCG的 40 个合法读取目标及VMVCCG的 7 个合法读取目标,包含多周期结果写回与交错的读写依赖。.dat、.asm、.s、.dis,16/32 位指令混合打包、布局地址宽度及容量检查。EXE 没有加载、启动或嵌入原
lasm.exe,运行时无需 REA、Ghidra、Python 或 Node.js。开发对照脚本会显式调用用户提供的原版编译器。运行
在项目目录打开 PowerShell。
输出父目录应已存在。编译器自身
--version返回独立实现版本,兼容输出中的版本行保留参考版本标识。.out/.o返回 427,与该参考版本最小请求的实测拒绝行为一致。诊断文字尚未逐项复现。构建
支持 Windows x64、MinGW GCC 15.1.0 + Ninja,或 Visual Studio 2022 C++ + Windows SDK,均使用 CMake。MSVC 构建静态链接 C++ 运行库。
脚本优先选择 PATH 中的 MinGW,否则使用 Visual Studio 2022,构建目录分别为
build和build-msvc。可通过-Toolchain MinGW或-Toolchain MSVC显式选择。跨机器迁移时创建新的构建目录。固定依赖为 nlohmann/json 3.12.0,头文件及 MIT 许可证已随源码提供。对照验证
以下测试需要 Python 和显式指定的原版编译器。目标目录必须尚不存在。
历史 0.7.0 的 58,616 项输出原始字节比较全部一致,记录位于
validation/report.json、validation/scalar-report.json、validation/vector-report.json、validation/pipeline-report.json、validation/fma-report.json和validation/reduction-report.json。这些历史报告绑定旧版 EXE 的哈希,不能作为新版的全量重检结论。0.8.0 的本机验证结果与报告索引见validation/summary.md。Windows 的 ASM/S/DIS 源路径及
@bar注释使用系统 ANSI 编码,与原版一致;源文件和命令行仍支持 Unicode 路径。已复现的三源编码行为
普通三源格式及其立即数形式,在文本目标与第三源采用不同寄存器时,机器码保留第三源字段。IN 形式含有独立的目标字段。这些行为由原版编码函数和固定寄存器、虚拟变量对照共同确认,当前实现按逐字节兼容要求保留。
尚未实现
完整文法与表达式、浮点类型、导入、多输入、多段及数据布局、多函数及 ABI、地址寄存器、访存、跨寄存器组与其余向量指令、寄存器对、溢出到栈,以及优化级中的条件控制流和循环变换仍待迁移。
当前仅实现已列明的调度与资源模型,未完成完整 EIMS/PPBF 和所有失败回退路径。部分尚未覆盖的输入返回退出码 2。有限对照通过只证明相应用例一致,尚未进行 DSP 执行验证。
进展与逆向材料
迁移边界、版本历程和下一步工作见 PROGRESS.md。逆向资料和探针索引见 research/README.md。当前验证汇总见 validation/summary.md。