我在Python中創建了一個愚蠢的霍夫曼壓縮器,所以我可以將圖像/聲音數據壓縮到我的Tandy Color計算機項目中。解壓縮程序是用6809彙編寫成的。 我找不到存儲huffman樹的方法,所以我生成了彙編代碼,它們走進樹並獲取正確的未壓縮數據。這裏有一個例子:我應該如何表示要在彩色計算機程序中使用的哈夫曼樹?
DECOMP_HUFFMAN: PSHS A,B,X,Y,U
LDB #8
STB $2100
pshs x
ldx $2102
stx $2106
puls x
LDB ,X+
JMP inicio
prox_bit: LSLB
PSHS CC
DEC $2100
BNE S_P_B
LDB #8
STB $2100
LDB ,X+
S_P_B: PULS CC
RTS
armazena: STA ,U+
LEAY -1,Y
BNE inicio
PULS U,Y,X,B,A
RTS
inicio: jsr prox_bit
tfr cc,a
anda #1
sta $2104
lda ($2102)
bne n1
lda $2104
n0: pshs x
ldx $2102
leax 1,x
lda a,x
puls x
bsr armazena
pshs x
ldx $2106
stx $2102
puls x
bra inicio
n1: cmpa #1
bne n2
lda $2104
bne n0
bra n4
n2: cmpa #2
bne n3
lda $2104
beq n0
n3: lda $2104
n4: pshs x
ldx $2102
leax 1,x
lda a,x
leax a,x
stx $2102
puls x
bra inicio
我想用真正的哈夫曼樹,而不是創造的彙編代碼來做到這一點。
謝謝你的時間。
只是爲了好奇 - 您是如何生成彙編代碼的? – hirschhornsalz 2012-04-21 23:11:21
壓縮數據的python代碼基於真實的霍夫曼樹生成彙編代碼。事實上,程序集生成的代碼是一個粗略的樹遍歷器,它使用來自壓縮數據的位遍歷樹並獲取未壓縮的數據。霍夫曼樹枝成爲裝配程序的分支。 – 2012-04-23 20:35:27