jzcheck-lsp — VS Code Extension
JZ8P 系列 OTP 微控制器汇编语言的 VS Code 扩展,基于 jzcheck Python 包提供完整的 IDE 支持。
前置依赖
此扩展是 jzcheck 的客户端,必须先安装 jzcheck Python 包:
pip install jzcheck
pip install --upgrade jzcheck
安装后确认可用:
jzcheck --version
功能
语法高亮
- 指令 / 伪指令 / 寄存器 / 标签 / 立即数 / 注释 分色高亮
- 自定义 TextMate 语法规则(
syntaxes/asm.tmLanguage.json)
实时诊断
- 打开或编辑
.asm 文件时自动推送:词法错误 / 语法错误 / 语义错误 / 内存 / 堆栈警告
- 错误波浪线 + 问题面板
代码补全
- 指令助记符(43 基础 + 24 EM78P153 别名 + INT)
- 寄存器名称(来自芯片配置)
- 工作区符号(标签 / EQU 常量)
- 位索引(
.0–.7,含命名字段)
悬停信息
- 指令说明 + 操作数模式 + 影响标志位
- 符号值 + 定义行
- 宏展开内容
- 寄存器地址 + 位字段
$ 表达式相对偏移
跳转到定义
- 标签 / EQU 常量 → 定义文件位置
- 宏名 → MACRO 定义位置
文档符号(大纲)
CodeLens — 堆栈深度
- 每个函数上方显示静态堆栈深度
- 显示最差调用路径
- 递归函数标记
oo
- 状态栏实时显示主程序 + 中断合计深度
代码格式化
- 规范化缩进 / 大小写 / 对齐(四列对齐)
- 通过 VS Code 设置配置:
jzcheck-lsp.format.enable — 启用格式化
jzcheck-lsp.format.tabSize — 缩进宽度
jzcheck-lsp.format.operandColumn — 操作数对齐列
jzcheck-lsp.format.commentColumn — 注释对齐列
jzcheck-lsp.format.uppercaseMnemonics — 指令大写
jzcheck-lsp.format.uppercaseRegisters — 寄存器大写
符号重命名
- 跨文件重命名标签 / EQU 常量 / 宏名
- 保留标签定义中的冒号
调用图
- 基于 Mermaid 的可视化调用关系图
- 支持缩放 / 拖拽,位置双向持久化缓存
ROM 使用分析
- 按芯片型号显示 ROM 使用率
- 256 字节多行高亮同步模式
- 7 色高对比光谱设计
时序分析
- 函数级指令周期统计
- 关键路径高亮
- 所有调用路径周期排行
使用
- 打开包含
.mpj 项目文件的文件夹(作为 VS Code 工作区根目录)
- 打开任意
.asm 源文件
- 扩展自动启动
jzcheck-lsp 语言服务器
状态栏右下角显示 ROM 使用率和堆栈深度摘要:
ROM:45% 堆栈:3/5
扩展会在工作区 .vscode/settings.json 中自动设置以下默认值:
- 文件编码
gb2312
.asm / .ash / .inc 文件关联为 asm 语言
- LSP 通信日志级别为
off
设置项
| 设置 |
默认 |
说明 |
jzcheck-lsp.trace.server |
verbose |
LSP 通信日志级别 |
jzcheck-lsp.format.enable |
true |
启用代码格式化 |
jzcheck-lsp.format.tabSize |
8 |
缩进宽度 |
jzcheck-lsp.format.operandColumn |
12 |
操作数对齐列 |
jzcheck-lsp.format.commentColumn |
40 |
注释对齐列 |
jzcheck-lsp.format.uppercaseMnemonics |
true |
指令转大写 |
jzcheck-lsp.format.uppercaseRegisters |
true |
寄存器转大写 |
文件编码
默认使用 gb2312 编码(JZ 汇编项目常见编码),可在 VS Code 设置中修改:
"[asm]": {
"files.encoding": "gb2312"
}
系统要求
- VS Code ^1.85.0
- Python >=3.12
- jzcheck(Python 包,通过
pip install jzcheck 安装)
更新历史
0.7.2
- 修复调用图缩放/平移状态在 Mermaid 重新渲染时被重置的问题。改用
mm.render 替代 mm.run,避免 transform 属性被覆写。
0.7.1
| |