目录

LACP:FT-M7004 LASM 编译与 ASM 自动出入栈工具

本目录是 Windows 交付包,包含 LACP 脚本和配套的 LASM 编译器、布局文件。安装后可在任意目录运行 LACP,无需安装外部 Python 工程或执行 pip install。

运行要求

  • 64 位 Windows(Windows 7 需 SP1,或使用更新版本);本包自带的 lasm.exe 是 64 位程序。
  • Python 3.8 或更高版本。Windows 7 请使用 Python 3.8。当前目录未附带 Python 安装包;如交付时另附离线安装材料,请按其说明安装。
  • 安装脚本使用 Windows PowerShell;已按 Windows 7 自带的 PowerShell 2.0 语法编写。Windows 7 的实际运行仍需在目标机器上验收。

安装

在交付包根目录打开 CMD 或 PowerShell,运行:

.\install.cmd

安装脚本将 LACP.cmd、Bash 入口、tools/ 和 toolchain/ 等运行文件复制到当前用户的 %LOCALAPPDATA%\Programs\LACP,并将该目录加入当前用户的 PATH。无需管理员权限,重复运行会更新安装文件。ops/ 中的算子工程文件不会复制,请自行保留。

关闭并重新打开终端,然后在任意目录运行:

LACP --check

看到 [LACP] environment: PASS 表示 Python、LACP 模块、LASM 文件和布局文件已找到。--check 不实际调用 LASM 编译器;首次安装及 Windows 7 机器还应运行下面的验收样例。

CMD 中运行:

"%LOCALAPPDATA%\Programs\LACP\tools\LACP\examples\run_smoke_test.cmd"

PowerShell 中运行:

& "$env:LOCALAPPDATA\Programs\LACP\tools\LACP\examples\run_smoke_test.cmd"

验收脚本会分别编译 O0 和 O2、直接处理独立 ASM 样例,并检查出入栈元数据;成功时输出 [PASS] LACP smoke test passed.。安装完成后,LACP 不再依赖交付包原目录。

编译 .la 算子

在任意目录使用源文件路径调用:

LACP -op "D:\project\kernel.la" -O0
LACP -op "D:\project\kernel.la" -O2
LACP -op "D:\project\kernel.la" -O2 --output-dir "D:\project\output"

-O0 使用 LASM 默认优化,-O2 将 -O2 传给 LASM。未指定 --output-dir 时,默认在 .la 文件同目录生成同名的 .asm、.dat、.dis。

需要使用其他 LASM 或布局文件时,可传入 --lasm <lasm.exe 路径> 和 --layout <m7004.json 路径>;也可设置 LASM_BIN 和 LASM_LAYOUT 环境变量。完整的工具发现顺序和源码要求见 tools/LACP/README.md。

只有 .asm 时添加出入栈

无需 .la、LASM 编译器或布局文件,直接运行:

LACP -op "D:\project\kernel.asm"
LACP -op "D:\project\kernel.asm" --output-dir "D:\project\output"
LACP -op "D:\project\handwritten.asm" --entry kernel

输出 ASM 文件名始终与主算子函数名一致。例如主函数为 kernel,输出就是 kernel.asm。输入也是 kernel.asm 时,成功处理后原文件改名为同目录的 kernel_orin.asm;输入为 handwritten.asm 时保留输入文件,另生成 kernel.asm。--output-dir 只改变输出目录,同名输入仍在原目录改名备份。已有 _orin.asm 不会被覆盖。不生成或修改 .dat/.dis,ASM 模式不接受 -O0/-O2、--lasm、--layout。

默认优先匹配与输入文件同名的 .global 函数(兼容 $0 前缀);无法按文件名匹配时,自动采用唯一导出函数。存在多个候选入口时使用 --entry 指定主函数。输入必须包含对应的入口标签、.size 和单一无条件返回出口(SBR R63:R62 或交付用 SMFENCE)。已含 LACP 出入栈的入口会被拒绝,避免重复注入;重新生成可运行 LACP -op kernel_orin.asm --entry kernel。完整输入示例、限制和验收命令见 tools/LACP/README.md。

更新与回退

交付包中的默认 LASM 版本由 toolchain\lasm\DEFAULT_VERSION 决定。更新时:

  1. 新增 toolchain\lasm\<版本号>\,放入 bin\lasm.exe 和 layout\m7004.json。
  2. 将 DEFAULT_VERSION 的内容改为新版本号,保留旧版本目录。
  3. 在交付包根目录重新运行 .\install.cmd,再运行 LACP --check 和验收样例。

安装目录中是独立副本;只修改交付包而不重新安装,不会改变 LACP 命令使用的版本。回退时将 DEFAULT_VERSION 改回旧版本号并重新安装。

不安装时直接运行

在交付包根目录可直接运行 .\LACP.cmd --check;Git Bash 可运行 bash ./LACP.sh --check。此方式依赖交付包原目录保持完整。

关于

脚本构建LASM代码+自动出入栈

1.4 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号