Tag Archives: compiler

Picoblaze Utils 对工具链的需求

自己的Picoblaze已经在用了,并且项目已经结了。 把想法记录一下,否则过一段时间就忘了。 先说说需求的由来,本来SPI Master是用Verilog来写的,刚开始还好,到后来需要加入数据变换、饱和、读写SRAM,渐渐的用Verilog开始很麻烦了…… 因为Picoblaze的每个指令都是2个clock,于是转到Picoblaze。用汇编写了第一版的固件,比verilog方便很多,无论是改变时序,还是增加一些功能。但是汇编有个很烦的问题——条件判断和循环! 当程序变大、变复杂之后,各种跳转就会让人头晕,而且很容易一不小心跳错。也有函数忘了写return导致直接跑飞,退出中断isr忘记重新使能中断……oh,no…… 一、于是开始找编译器

Posted in Others | Tagged , , , , | 2 Comments

Finished picoblaze-utils

完成PicoBlaze的工具链,目前用python的正则表达式来做,主要是想快速构建一个工具链,以后有时间再使用llvm(c++)或cparser(python)来重写前端。 当前的c语法和汇编很接近,并且没有push和pop操作,需要自己封装成宏。需要自己分配寄存器。但是PicoBlaze本来就不是很强大,定位是可编程状态机,所以暂时够用了。 代码上传到github了,以GPLv2发布。 https://github.com/buaabyl/picoblaze_utils

Posted in Others | Tagged , , , , , , , | Comments Off on Finished picoblaze-utils

准备开发Picoblaze工具链(基于gcc和ctags)

之前找到PicoBlaze的工具链(基于sdcc的),曾高兴了一段时间,但是实际使用后发现生成的代码未优化。 c += 1; 会生成如下的代码 load r1, r0 add r1, 1 load r0, r1 这个太崩溃了,明显没有优化。这个也还能接受,但是有的时候生成的代码和期待的差太多(是Bug,不是不同的实现方式)。 所以打算重新启动自己的Picoblaze工具链计划。

Posted in Others | Tagged , , , | Comments Off on 准备开发Picoblaze工具链(基于gcc和ctags)

完成PicoBlaze工具链——基于sdcc和kcpsm3 (Finish PicoBlaze Toolchain)

已经完成了PicoBlaze的工具链,编译器是基于别人针对sdcc框架移植的pbcc,汇编器直接使用xilinx的kcpsm3,自己做了一个封装。汇编器在系统的临时文件夹里运行,默认输出verilog结果,其它格式可以自己在kcpsm3w32后加参数。 代码放在了 http://code.google.com/p/sdcc-kcpsm3w32/ — Finish picoblaze toolchain. source code at http://code.google.com/p/sdcc-kcpsm3w32/

Posted in Memo | Tagged , , , , , , , | Comments Off on 完成PicoBlaze工具链——基于sdcc和kcpsm3 (Finish PicoBlaze Toolchain)