⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deflate.s

📁 This Source-Navigator, an IDE for C/C++/Fortran/Java/Tcl/PHP/Python and a host of other languages.
💻 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 + -