一种用循环计数来注释Z80汇编程序的工具。
z80count的Python项目详细描述
Z80计数
这是一个使用正则表达式(我知道!) 并使用指令使用的周期向代码中添加注释。
它需要测试,可能还需要一个合适的z80解析器,但它对我和 我使用的是Z80汇编程序语法。
安装
z80count
需要python 3。
要安装到生产环境中,您可以使用pip
:
pip3 install --user z80count
或者您可以从z80count's releases tab下载包,解包并运行:
python3 setup.py install
要安装以进行开发,请运行:
git clone https://github.com/reidrac/z80count.git
cd z80count
pip3 install -e ".[dev]"
用法
您可以使用它:
z80count < file.asm > file_c.asm
或者在vim
里面你可以:
:% !z80count -s
使用-s
工具添加小计。
由z80count
添加的注释与-c
中给定的列对齐。
(--column
)选项(默认为50)。默认情况下,注释使用
空格,如果您更喜欢制表符,请使用-t
选项。为了计算
填充z80count
假定TAB
等于8个空格。使用
选项-T
覆盖此选项。
示例:
pushhlpopbcldhl,$5800lde,7.fade_out_all_loop0pushhlpushbchalt.fade_out_all_loop1lda,(hl)and7jrz,no_fade_all_inkdeca.no_fade_all_inkldd,alda,(hl)and$38jrz,no_fade_all_papersub8.no_fade_all_paperordldd,alda,(hl)and$c0ordld(hl),ainchldecbclda,borcjrnz,fade_out_all_loop1popbcpophldecejrnz,fade_out_all_loop0
用z80count.py -s
处理结果:
pushhl; [11 .. 11]popbc; [10 .. 21]ldhl,$5800; [10 .. 31]lde,7; [7 .. 38].fade_out_all_loop0pushhl; [11 .. 49]pushbc; [11 .. 60]halt; [4 .. 64].fade_out_all_loop1lda,(hl); [7 .. 71]and7; [7 .. 78]jrz,no_fade_all_ink; [12/7 .. 90/85]deca; [4 .. 89].no_fade_all_inkldd,a; [4 .. 93]lda,(hl); [7 .. 100]and$38; [7 .. 107]jrz,no_fade_all_paper; [12/7 .. 119/114]sub8; [7 .. 121].no_fade_all_paperord; [4 .. 125]ldd,a; [4 .. 129]lda,(hl); [7 .. 136]and$c0; [7 .. 143]ord; [4 .. 147]ld(hl),a; [7 .. 154]inchl; [6 .. 160]decbc; [6 .. 166]lda,b; [4 .. 170]orc; [4 .. 174]jrnz,fade_out_all_loop1; [12/7 .. 186/181]popbc; [10 .. 191]pophl; [10 .. 201]dece; [4 .. 205]jrnz,fade_out_all_loop0; [12/7 .. 217/212]
注释显示小计,有两种类型:
[A .. T0]
[B/A .. T1/T0]
其中a、b、t0和t1是:
- A是当前指令的周期数。如果是有条件的 指令,这是条件不满足时的值。
- B是满足条件时当前指令的周期数。
- t0是不满足条件时的小计。
- T1是满足条件时的小计。
配置文件
z80count
将按顺序在以下位置查找配置文件:
环境变量
Z80COUNT_RC
中给定的文件。环境变量中给定目录中的文件
z80countrc
XDG_DEFAULT_HOME
或者,如果此变量未定义或为空,则 目录~/.config
。主目录中的文件
.z80countrc
。
示例:
[z80count]
# Column to align newly added comments
# column = 50
# Enable debug (show the matched case)
# debug = no
# Include subtotals
# subtotals = no
# Number of spaces for each tab
# tab width = 8
# Keep previous cycle annotations in the comment
# keep cycles = no
# Use tabs to align newly added comments instead of spaces
# use tabs = yes
编辑器支持
- z80count-el,emacs
故障排除
龙来了!
如果您认为有一条指令未正确解析,请使用-d
标志。
如果你发现了一个漏洞,请随时打开一个公关!
作者
- 胡安马丁内斯jjm@usebox.net