插件功能
本插件主要提供四个方面的功能
- dsp汇编语法的语法高亮
- dsp多项目管理
- dsp项目构建(目前只支持C)
- dsp项目的调试(支持反汇编的单步调试)
- dsp项目的直接仿真运行
语法高亮
基于vscode的textmate功能,支持完整的汇编语法(上百条条汇编指令)高亮。
见docs/syntax.png
项目管理
基于vscode工作区功能,为同一工作区下不同项目配置不同的工具链和开发环境配置。
项目构建
基于从mingw下迁移出来的单独make.exe环境,自动配置makefile并运行。
- makefile 模板
space :=
space +=
VPATH := $(subst $(space),:,$(shell $(FIND_PATH) . -type d))
sources = $(wildcard *.c) $(wildcard **/*.c)
tempors = $(sources:.c=.ll)
objects = $(sources:.c=.o)
all: $(tempors) $(objects) $(TARGET).out
$(TARGET).out: $(objects)
$(GLD_PATH) $(GLD_FLAG) $(addprefix $(BUILD_NAME)/, $^) -o $(BUILD_NAME)/$@ -lc
%.o: %.ll
$(LLC_PATH) $(LLC_FLAG) $(BUILD_NAME)/$< -o $(BUILD_NAME)/$@
%.ll: %.c
$(CXX_PATH) $(CXX_FLAG) $< -o $(BUILD_NAME)/$@
- makefile构建
在模板前,添加配置key-val项
TOOLCHAIN_PATH := **
CXX_PATH := **
LLC_PATH := **
GLD_PATH := **
GDB_PATH := **
SIM_PATH := **
MAKE_PATH := **
FIND_PATH := **
INC_PATH := **
LIB_PATH := **
LDS_FLAG := link_8slots.x
CXX_FLAG := -gdwarf-2 -emit-llvm -S -target dsp -I $(INC_PATH)
LLC_FLAG := -filetype=obj -march=dsp -mcpu=dspse -relocation-model=static
GLD_FLAG := -L $(LIB_PATH) -T $(LDS_FLAG)
BUILD_NAME := BUILD
TARGET := test
- 通过生成tasks.json在vscode下注册make的task,继而调用task执行make操作。
项目调试
基于本项目的gdb.exe与simulator_iss.exe,通过gdb mi-engine与vscode的Debug Protocol通讯。从而对程序的运行进行细粒度控制。
- 在命令行模式下,通过如下指令完成gdb的初始化。
(gdb): target remote :3333
(gdb): load **.out
(gdb): file **.out
- 通过以下指令,完成对寄存器和反汇编的访问
(gdb): info registers
(gdb): disass
(gdb): disass main
- 通过以下指令,完成对程序的调试控制
(gdb): c
(gdb): b
(gdb): p
(gdb): si
- 在mi engine模式下,通过增加前缀-exec在vscode的debug console获取相应的控制。
项目调试
基于本项目的simulator_iss.exe与trobjdat.exe,通过trobjdat.exe把elf格式的二进文件直接转换成utf8格式的字符串文件,将输出的dat文件传递给simulator_iss.exe,从而获取到最终结果。
更新历史
1.0.0-dev版本
- 通过原生的make构建项目
- 添加折中的反汇编支持
- 添加工作区多项目管理支持
- 添加路径与符号修改支持
1.0.1-dev版本
1.0.2-dev版本
- 优化语法高亮颜色区分
- 优化反汇编位置(调动到debug活动区)
1.0.3-dev版本
1.0.4-dev版本
1.0.5-dev版本