📄 deflate.s
字号:
.file "deflate.c" # rs6000/powerpc options: -msdata=data -G 8 # GNU C version 2.7-97r2 (powerpc-eabi) compiled by GNU C version 2.7-97r2. # options passed: -O # options enabled: -fdefer-pop -fomit-frame-pointer -fthread-jumps # -fpeephole -ffunction-cse -finline -fkeep-static-consts # -fpcc-struct-return -fsjlj-exceptions -fcommon -fverbose-asm # -fgnu-linker -mpowerpc -mnew-mnemonics -meabi -mcall-sysv -msdata=datagcc2_compiled.: .globl window_size .section ".sdata","aw" .align 2 .type window_size,@object .size window_size,4window_size: .long 65536 .section ".data" .align 1 .type configuration_table,@object .size configuration_table,80configuration_table: .short 0 .short 0 .short 0 .short 0 .short 4 .short 4 .short 8 .short 4 .short 4 .short 5 .short 16 .short 8 .short 4 .short 6 .short 32 .short 32 .short 4 .short 4 .short 16 .short 16 .short 8 .short 16 .short 32 .short 32 .short 8 .short 16 .short 128 .short 128 .short 8 .short 32 .short 128 .short 256 .short 32 .short 128 .short 258 .short 1024 .short 32 .short 258 .short 258 .short 4096 .section ".rodata" .align 2.LC0: .string "bad pack level" .section ".text" .align 2 .globl lm_init .type lm_init,@functionlm_init: stwu 1,-16(1) mflr 0 stw 30,8(1) stw 31,12(1) stw 0,20(1) mr 31,3 mr 30,4 addi 0,31,-1 cmplwi 1,0,8 bc 4,5,.L2 addis 3,0,.LC0@ha addi 3,3,.LC0@l bl error.L2: addis 9,0,compr_level@ha stw 31,compr_level@l(9) addis 3,0,prev+65536@ha addi 3,3,prev+65536@l li 4,0 lis 5,0x1 bl memset addis 11,0,max_lazy_match@ha addis 9,0,configuration_table@ha addi 9,9,configuration_table@l slwi 8,31,3 add 10,8,9 lhz 0,2(10) stw 0,max_lazy_match@l(11) addis 11,0,good_match@ha lhzx 0,9,8 stw 0,good_match@l(11) addis 9,0,nice_match@ha lhz 0,4(10) stw 0,nice_match@l(9) addis 9,0,max_chain_length@ha lhz 0,6(10) stw 0,max_chain_length@l(9) cmpwi 1,31,1 bc 4,6,.L3 lhz 0,0(30) ori 0,0,4 b .L17.L3: cmpwi 1,31,9 bc 4,6,.L4 lhz 0,0(30) ori 0,0,2.L17: sth 0,0(30).L4: addis 9,0,strstart@ha li 31,0 stw 31,strstart@l(9) addis 9,0,block_start@ha stw 31,block_start@l(9) addis 30,0,lookahead@ha addis 9,0,read_buf@ha lwz 0,read_buf@l(9) addis 3,0,window@ha addi 3,3,window@l lis 4,0x1 mtlr 0 blrl stw 3,lookahead@l(30) xor 0,3,31 subfic 9,0,0 adde 0,9,0 subfic 3,3,-1 subfic 9,3,0 adde 3,9,3 or. 9,0,3 bc 12,2,.L6 addis 9,0,eofile@ha li 0,1 stw 0,eofile@l(9) stw 31,lookahead@l(30) b .L1.L6: addis 9,0,eofile@ha li 0,0 stw 0,eofile@l(9) addis 9,0,lookahead@ha lwz 0,lookahead@l(9) cmplwi 1,0,261 bc 12,5,.L8 mr 30,9 addis 31,0,eofile@ha.L9: bl fill_window lwz 0,lookahead@l(30) cmplwi 1,0,261 bc 12,5,.L8 lwz 0,eofile@l(31) cmpwi 1,0,0 bc 12,6,.L9.L8: addis 9,0,ins_h@ha li 0,0 stw 0,ins_h@l(9) mr 11,0 mr 10,9 addis 9,0,window@ha addi 8,9,window@l.L15: lwz 0,ins_h@l(10) lbzx 9,8,11 rlwinm 0,0,5,17,26 xor 0,0,9 stw 0,ins_h@l(10) addi 11,11,1 cmplwi 1,11,1 bc 4,5,.L15.L1: lwz 0,20(1) mtlr 0 lwz 30,8(1) lwz 31,12(1) addi 1,1,16 blr.Lfe1: .size lm_init,.Lfe1-lm_init .align 2 .globl longest_match .type longest_match,@functionlongest_match: stwu 1,-24(1) stw 28,8(1) stw 29,12(1) stw 30,16(1) stw 31,20(1) mr 8,3 addis 9,0,max_chain_length@ha lwz 7,max_chain_length@l(9) addis 11,0,strstart@ha addis 9,0,window@ha addi 9,9,window@l lwz 0,strstart@l(11) add 10,0,9 addis 9,0,prev_length@ha lwz 3,prev_length@l(9) cmplwi 1,0,32506 li 12,0 bc 4,5,.L19 addic 12,0,-32506.L19: addis 9,0,strstart@ha lwz 0,strstart@l(9) addis 9,0,window+258@ha addi 9,9,window+258@l add 6,0,9 add 9,3,10 lbz 4,-1(9) lbzx 5,10,3 addis 9,0,prev_length@ha addis 11,0,good_match@ha lwz 9,prev_length@l(9) lwz 0,good_match@l(11) subfc 11,0,9 subfe 11,11,11 srwi 0,7,2 and 9,7,11 andc 0,0,11 or 7,9,0 addis 9,0,window@ha addi 31,9,window@l addis 28,0,match_start@ha addis 9,0,nice_match@ha lwz 30,nice_match@l(9) addis 9,0,prev@ha addi 29,9,prev@l.L22: add 11,8,31 lbzx 0,11,3 cmpw 1,0,5 bc 4,6,.L24 add 9,3,11 lbz 0,-1(9) cmpw 1,0,4 bc 4,6,.L24 lbzx 0,8,31 lbz 9,0(10) cmpw 1,0,9 bc 4,6,.L24 lbzu 0,1(11) lbz 9,1(10) cmpw 1,0,9 bc 4,6,.L24 addi 10,10,2 addi 11,11,1.L29: lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 lbzu 0,1(10) lbzu 9,1(11) cmpw 1,0,9 bc 4,6,.L28 cmplw 1,10,6 bc 12,4,.L29.L28: subf 0,10,6 subfic 0,0,258 addi 10,6,-258 cmpw 1,0,3 bc 4,5,.L24 stw 8,match_start@l(28) mr 3,0 cmpw 1,3,30 bc 4,4,.L23 add 9,3,10 lbz 4,-1(9) lbzx 5,10,3.L24: rlwinm 0,8,1,16,30 lhzx 8,29,0 cmplw 1,8,12 bc 4,5,.L23 addic. 7,7,-1 bc 4,2,.L22.L23: lwz 28,8(1) lwz 29,12(1) lwz 30,16(1) lwz 31,20(1) addi 1,1,24 blr.Lfe2: .size longest_match,.Lfe2-longest_match .globl memcpy .align 2 .type fill_window,@functionfill_window: stwu 1,-40(1) mflr 0 stw 29,28(1) stw 30,32(1) stw 31,36(1) stw 0,44(1) addis 9,0,window_size@ha addis 11,0,lookahead@ha lwz 9,window_size@l(9) lwz 0,lookahead@l(11) subf 31,0,9 addis 9,0,strstart@ha lwz 0,strstart@l(9) subf 31,0,31 cmpwi 1,31,-1 bc 4,6,.L37 li 31,-2 b .L38.L37: addis 30,0,strstart@ha lwz 0,strstart@l(30) li 29,0 ori 29,29,65273 cmplw 1,0,29 bc 4,5,.L38 addis 3,0,window@ha addis 4,0,window+32768@ha addi 3,3,window@l addi 4,4,window+32768@l li 5,0 ori 5,5,32768 crxor 6,6,6 bl memcpy addis 9,0,match_start@ha lwz 0,match_start@l(9) addic 0,0,-32768 stw 0,match_start@l(9) lwz 0,strstart@l(30) addic 0,0,-32768 stw 0,strstart@l(30) addis 9,0,block_start@ha lwz 0,block_start@l(9) addic 0,0,-32768 stw 0,block_start@l(9) li 8,0 addis 9,0,prev+65536@ha addi 9,9,prev+65536@l mr 6,8.L43: add 10,8,8 lhzx 11,10,9 add 7,10,9 cmplwi 1,11,32767 bc 4,5,.L44 addi 0,11,-32768 sthx 0,10,9 b .L42.L44: sth 6,0(7).L42: addi 8,8,1 cmplwi 1,8,32767 bc 4,5,.L43 li 8,0 addis 9,0,prev@ha addi 9,9,prev@l mr 7,8.L50: add 0,8,8 lhzx 11,9,0 mr 10,0 cmplwi 1,11,32767 bc 4,5,.L51 addi 0,11,-32768 sthx 0,9,10 b .L49.L51: sthx 7,9,10.L49: addi 8,8,1 cmplwi 1,8,32767 bc 4,5,.L50 addis 0,31,0x1 addic 31,0,-32768.L38: addis 30,0,eofile@ha lwz 0,eofile@l(30) cmpwi 1,0,0 bc 4,6,.L54 addis 10,0,read_buf@ha addis 11,0,strstart@ha addis 9,0,lookahead@ha lwz 3,lookahead@l(9) addis 9,0,window@ha addi 9,9,window@l add 3,3,9 lwz 0,strstart@l(11) lwz 9,read_buf@l(10) add 3,3,0 mr 4,31 mtlr 9 blrl mr 8,3 subfic 0,3,0 adde 3,0,3 subfic 0,8,-1 subfic 9,0,0 adde 0,9,0 or. 9,3,0 bc 12,2,.L55 li 0,1 stw 0,eofile@l(30) b .L54.L55: addis 9,0,lookahead@ha lwz 0,lookahead@l(9) add 0,8,0 stw 0,lookahead@l(9).L54: lwz 0,44(1) mtlr 0 lwz 29,28(1) lwz 30,32(1) lwz 31,36(1) addi 1,1,40 blr.Lfe3: .size fill_window,.Lfe3-fill_window .align 2 .type deflate_fast,@functiondeflate_fast: stwu 1,-56(1) mflr 0 stw 21,12(1) stw 22,16(1) stw 23,20(1) stw 24,24(1) stw 25,28(1) stw 26,32(1) stw 27,36(1) stw 28,40(1) stw 29,44(1) stw 30,48(1) stw 31,52(1) stw 0,60(1) li 31,0 addis 9,0,prev_length@ha li 0,2 stw 0,prev_length@l(9) addis 9,0,lookahead@ha lwz 0,lookahead@l(9) cmpw 1,0,31 bc 12,6,.L59 addis 26,0,ins_h@ha addis 9,0,window@ha addi 25,9,window@l addis 28,0,strstart@ha mr 9,28 addi 21,9,strstart@l addis 9,0,prev@ha addi 22,9,prev@l addis 9,0,prev+65536@ha addi 24,9,prev+65536@l addis 27,0,lookahead@ha addis 23,0,block_start@ha.L60: lwz 9,ins_h@l(26) lwz 11,strstart@l(28) addi 0,11,2 lbzx 0,25,0 rlwinm 9,9,5,17,26 xor 9,9,0 stw 9,ins_h@l(26) rlwinm 0,11,1,16,30 add 9,9,9 lhzx 3,9,24 sthx 3,22,0 lhz 0,2(21) sthx 0,9,24 cmpwi 1,3,0 bc 12,6,.L61 subf 0,3,11 cmplwi 1,0,32506 bc 12,5,.L61 bl longest_match mr 31,3 lwz 0,lookahead@l(27) cmplw 1,31,0 bc 4,5,.L61 mr 31,0.L61: cmplwi 1,31,2 bc 4,5,.L63 addis 9,0,match_start@ha lwz 0,strstart@l(28) lwz 3,match_start@l(9) subf 3,3,0 addi 4,31,-3 bl ct_tally mr 10,3 lwz 0,lookahead@l(27) subf 0,31,0 stw 0,lookahead@l(27) addis 9,0,max_lazy_match@ha lwz 0,max_lazy_match@l(9) cmplw 1,31,0 bc 12,5,.L64 addi 31,31,-1.L65: lwz 9,strstart@l(28) addi 11,9,1 stw 11,strstart@l(28) lwz 0,ins_h@l(26) addi 9,9,3 lbzx 9,25,9 rlwinm 0,0,5,17,26 xor 0,0,9 stw 0,ins_h@l(26) rlwinm 11,11,1,16,30 add 0,0,0 lhzx 3,24,0 sthx 3,22,11 lhz 9,2(21) sthx 9,24,0 addic. 31,31,-1 bc 4,2,.L65 b .L82.L64: lwz 0,strstart@l(28) add 0,31,0 stw 0,strstart@l(28) li 31,0 lbzx 9,25,0 stw 9,ins_h@l(26) slwi 9,9,5 addic 0,0,1 lbzx 0,25,0 xor 9,9,0 stw 9,ins_h@l(26) b .L70.L63: lwz 0,strstart@l(28) li 3,0 lbzx 4,25,0 bl ct_tally mr 10,3 lwz 0,lookahead@l(27) addic 0,0,-1 stw 0,lookahead@l(27).L82: lwz 0,strstart@l(28) addic 0,0,1 stw 0,strstart@l(28).L70: cmpwi 1,10,0 bc 12,6,.L71 lwz 3,block_start@l(23) cmpwi 1,3,0 bc 12,4,.L72 add 3,3,25 b .L73.L72: li 3,0.L73: lwz 0,strstart@l(28) lwz 4,block_start@l(23) subf 4,4,0 li 5,0 bl flush_block lwz 0,strstart@l(28) stw 0,block_start@l(23).L71: lwz 0,lookahead@l(27) cmplwi 1,0,261 bc 12,5,.L58 addis 9,0,eofile@ha lwz 0,eofile@l(9) cmpwi 1,0,0 bc 4,6,.L58 addis 29,0,lookahead@ha mr 30,9.L76: bl fill_window lwz 0,lookahead@l(29) cmplwi 1,0,261 bc 12,5,.L58 lwz 0,eofile@l(30) cmpwi 1,0,0 bc 12,6,.L76.L58: lwz 0,lookahead@l(27) cmpwi 1,0,0 bc 4,6,.L60.L59: addis 9,0,block_start@ha lwz 3,block_start@l(9) cmpwi 1,3,0 bc 12,4,.L80 addis 9,0,window@ha addi 9,9,window@l add 3,3,9 b .L81.L80: li 3,0.L81: addis 9,0,strstart@ha addis 11,0,block_start@ha lwz 0,strstart@l(9) lwz 4,block_start@l(11) subf 4,4,0 li 5,1 bl flush_block lwz 0,60(1) mtlr 0 lwz 21,12(1) lwz 22,16(1) lwz 23,20(1) lwz 24,24(1) lwz 25,28(1) lwz 26,32(1) lwz 27,36(1) lwz 28,40(1) lwz 29,44(1) lwz 30,48(1) lwz 31,52(1) addi 1,1,56 blr.Lfe4: .size deflate_fast,.Lfe4-deflate_fast .align 2 .globl deflate .type deflate,@functiondeflate: stwu 1,-64(1) mflr 0 stw 18,8(1) stw 19,12(1) stw 20,16(1) stw 21,20(1) stw 22,24(1) stw 23,28(1) stw 24,32(1) stw 25,36(1) stw 26,40(1) stw 27,44(1) stw 28,48(1) stw 29,52(1) stw 30,56(1) stw 31,60(1) stw 0,68(1) li 25,0 li 29,2 addis 9,0,compr_level@ha lwz 0,compr_level@l(9) cmpwi 1,0,3 bc 12,5,.L84 bl deflate_fast b .L114.L84: addis 9,0,lookahead@ha lwz 0,lookahead@l(9) cmpwi 1,0,0 bc 12,6,.L86 addis 21,0,ins_h@ha addis 9,0,window@ha addi 23,9,window@l addis 28,0,strstart@ha mr 9,28 addi 19,9,strstart@l addis 9,0,prev@ha addi 20,9,prev@l addis 9,0,prev+65536@ha addi 22,9,prev+65536@l addis 26,0,prev_length@ha addis 18,0,match_start@ha addis 27,0,lookahead@ha addis 24,0,block_start@ha.L87: lwz 9,ins_h@l(21) lwz 10,strstart@l(28) addi 0,10,2 lbzx 0,23,0 rlwinm 9,9,5,17,26 xor 9,9,0 stw 9,ins_h@l(21) rlwinm 0,10,1,16,30 add 9,9,9 lhzx 3,9,22 sthx 3,20,0 lhz 0,2(19) sthx 0,9,22 stw 29,prev_length@l(26) lwz 31,match_start@l(18) li 29,2 cmpwi 1,3,0 bc 12,6,.L88 addis 9,0,max_lazy_match@ha lwz 11,prev_length@l(26) lwz 0,max_lazy_match@l(9) cmplw 1,11,0 bc 4,4,.L88 subf 0,3,10 cmplwi 1,0,32506 bc 12,5,.L88 bl longest_match mr 29,3 lwz 0,lookahead@l(27) cmplw 1,29,0 bc 4,5,.L89 mr 29,0.L89: cmpwi 1,29,3 bc 4,6,.L88 lwz 0,strstart@l(28) lwz 9,match_start@l(18) subf 0,9,0 subfic 0,0,4096 subfe 0,0,0 nand 0,0,0 rlwinm 9,0,0,30,31 nor 0,0,0 rlwinm 0,0,0,30,30 or 29,9,0.L88: lwz 4,prev_length@l(26) cmplwi 1,4,2 bc 4,5,.L91 cmplw 1,29,4 bc 12,5,.L91 addi 0,31,1 lwz 3,strstart@l(28) subf 3,0,3 addi 4,4,-3 bl ct_tally mr 10,3 lwz 0,lookahead@l(27) addic 0,0,1 lwz 9,prev_length@l(26) subf 0,9,0 stw 0,lookahead@l(27) addi 9,9,-2 stw 9,prev_length@l(26).L92: lwz 9,strstart@l(28) addi 11,9,1 stw 11,strstart@l(28) lwz 0,ins_h@l(21) addi 9,9,3 lbzx 9,23,9 rlwinm 0,0,5,17,26 xor 0,0,9 stw 0,ins_h@l(21) rlwinm 11,11,1,16,30 add 0,0,0 lhzx 3,22,0 sthx 3,20,11 lhz 9,2(19) sthx 9,22,0 lwz 0,prev_length@l(26) addic 0,0,-1 stw 0,prev_length@l(26) cmpwi 1,0,0 bc 4,6,.L92 li 25,0 li 29,2 lwz 0,strstart@l(28) addic 0,0,1 stw 0,strstart@l(28) cmpw 1,10,25 bc 12,6,.L99 lwz 3,block_start@l(24) cmpw 1,3,25 bc 12,4,.L97 add 3,3,23 b .L98.L97: li 3,0.L98: lwz 0,strstart@l(28) lwz 4,block_start@l(24) subf 4,4,0 li 5,0 bl flush_block lwz 0,strstart@l(28) stw 0,block_start@l(24) b .L99.L91: cmpwi 1,25,0 bc 12,6,.L100 lwz 0,strstart@l(28) addic 0,0,-1 li 3,0 lbzx 4,23,0 bl ct_tally cmpwi 1,3,0 bc 12,6,.L101 lwz 3,block_start@l(24) cmpwi 1,3,0 bc 12,4,.L102 add 3,3,23 b .L103.L102: li 3,0.L103: lwz 0,strstart@l(28) lwz 4,block_start@l(24) subf 4,4,0 li 5,0 bl flush_block lwz 0,strstart@l(28) stw 0,block_start@l(24).L101: lwz 0,strstart@l(28) addic 0,0,1 b .L115.L100: li 25,1 lwz 0,strstart@l(28) add 0,0,25.L115: stw 0,strstart@l(28) lwz 0,lookahead@l(27) addic 0,0,-1 stw 0,lookahead@l(27).L99: lwz 0,lookahead@l(27) cmplwi 1,0,261 bc 12,5,.L85 addis 9,0,eofile@ha lwz 0,eofile@l(9) cmpwi 1,0,0 bc 4,6,.L85 addis 30,0,lookahead@ha mr 31,9.L107: bl fill_window lwz 0,lookahead@l(30) cmplwi 1,0,261 bc 12,5,.L85 lwz 0,eofile@l(31) cmpwi 1,0,0 bc 12,6,.L107.L85: lwz 0,lookahead@l(27) cmpwi 1,0,0 bc 4,6,.L87.L86: cmpwi 1,25,0 bc 12,6,.L111 addis 11,0,window@ha addi 11,11,window@l addis 9,0,strstart@ha lwz 0,strstart@l(9) addic 0,0,-1 li 3,0 lbzx 4,11,0 bl ct_tally.L111: addis 9,0,block_start@ha lwz 3,block_start@l(9) cmpwi 1,3,0 bc 12,4,.L112 addis 9,0,window@ha addi 9,9,window@l add 3,3,9 b .L113.L112: li 3,0.L113: addis 9,0,strstart@ha addis 11,0,block_start@ha lwz 0,strstart@l(9) lwz 4,block_start@l(11) subf 4,4,0 li 5,1 bl flush_block.L114: lwz 0,68(1) mtlr 0 lwz 18,8(1) lwz 19,12(1) lwz 20,16(1) lwz 21,20(1) lwz 22,24(1) lwz 23,28(1) lwz 24,32(1) lwz 25,36(1) lwz 26,40(1) lwz 27,44(1) lwz 28,48(1) lwz 29,52(1) lwz 30,56(1) lwz 31,60(1) addi 1,1,64 blr.Lfe5: .size deflate,.Lfe5-deflate .comm block_start,4,4 .section ".sdata","aw" .align 2ins_h: .space 4 .size ins_h,4 .comm prev_length,4,4 .comm strstart,4,4 .comm match_start,4,4 .align 2eofile: .space 4 .size eofile,4 .align 2lookahead: .space 4 .size lookahead,4 .comm max_chain_length,4,4 .align 2max_lazy_match: .space 4 .size max_lazy_match,4 .align 2compr_level: .space 4 .size compr_level,4 .comm good_match,4,4 .comm nice_match,4,4 .ident "GCC: (GNU) 2.7-97r2"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -