vprintf.asm

来自「sdcc的win版本.是small device c compiler的意思.支」· 汇编 代码 · 共 1,800 行 · 第 1/3 页

ASM
1,800
字号
	mov	r4,(_value + 1)
	mov	r6,(_value + 2)
;	genPlus
;	genPlusIncr
	mov	a,#0x01
	add	a,r3
	mov	r7,a
; Peephole 180   changed mov to clr
	clr  a
	addc	a,r4
	mov	r0,a
	mov	ar1,r6
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r7
	mov	(_value + 1),r0
	mov	(_value + 2),r1
;	genPointerGet
;	genGenPointerGet
	mov	dpl,r3
	mov	dph,r4
	mov	b,r6
	lcall	__gptrget
;	genAssign
;	genIfx
; Peephole 166   removed redundant mov
	mov  r3,a
	mov  _vsprintf_c_1_1,r3 
;	genIfxJump
	jnz	00331$
	ljmp	00209$
00331$:
;	vprintf.c 481
;	genCall
	mov	dpl,_vsprintf_c_1_1
	push	ar2
	push	ar5
	lcall	_output_char
	pop	ar5
	pop	ar2
; Peephole 132   changed ljmp to sjmp
	sjmp 00154$
00204$:
;	vprintf.c 492
;	genCmpEq
	mov	a,_radix
	jnz	00332$
	ljmp	00209$
00332$:
;	vprintf.c 498
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_char_argument_1_1,00165$
00333$:
;	vprintf.c 500
;	genMinus
;	genMinusDec
	mov	a,_vsprintf_PARM_3
	dec	a
	mov	r0,a
;	genAssign
	mov	_vsprintf_PARM_3,r0
;	genPointerGet
;	genNearPointerGet
	mov	ar3,@r0
;	genCast
	mov	a,r3
	rlc	a
	subb	a,acc
	mov	r4,a
	mov	r6,a
	mov	r7,a
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r3
	mov	(_value + 1),r4
	mov	(_value + 2),r6
	mov	(_value + 3),r7
;	vprintf.c 501
;	genIfx
;	genIfxJump
	jnb	_vsprintf_signed_argument_1_1,00334$
	ljmp	00166$
00334$:
;	vprintf.c 503
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0001),#0x00
;	vprintf.c 504
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0002),#0x00
;	vprintf.c 505
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0003),#0x00
; Peephole 132   changed ljmp to sjmp
	sjmp 00166$
00165$:
;	vprintf.c 508
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_long_argument_1_1,00162$
00335$:
;	vprintf.c 510
;	genMinus
;	genMinusDec
	mov	a,_vsprintf_PARM_3
	add	a,#0xfc
	mov	r0,a
;	genAssign
	mov	_vsprintf_PARM_3,r0
;	genPointerGet
;	genNearPointerGet
	mov	ar3,@r0
	inc	r0
	mov	ar4,@r0
	inc	r0
	mov	ar6,@r0
	inc	r0
	mov	ar7,@r0
	dec	r0
	dec	r0
	dec	r0
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r3
	mov	(_value + 1),r4
	mov	(_value + 2),r6
	mov	(_value + 3),r7
; Peephole 132   changed ljmp to sjmp
	sjmp 00166$
00162$:
;	vprintf.c 514
;	genMinus
;	genMinusDec
	mov	a,_vsprintf_PARM_3
	add	a,#0xfe
	mov	r0,a
;	genAssign
	mov	_vsprintf_PARM_3,r0
;	genPointerGet
;	genNearPointerGet
	mov	ar3,@r0
	inc	r0
	mov	ar4,@r0
	dec	r0
;	genCast
	mov	a,r4
	rlc	a
	subb	a,acc
	mov	r6,a
	mov	r7,a
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r3
	mov	(_value + 1),r4
	mov	(_value + 2),r6
	mov	(_value + 3),r7
;	vprintf.c 515
;	genIfx
;	genIfxJump
; Peephole 112   removed ljmp by inverse jump logic
	jb   _vsprintf_signed_argument_1_1,00166$
00336$:
;	vprintf.c 517
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0002),#0x00
;	vprintf.c 518
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0003),#0x00
00166$:
;	vprintf.c 522
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_signed_argument_1_1,00171$
00337$:
;	vprintf.c 524
;	genAssign
;	genCmpLt
;	genCmp
	mov	a,(_value + 3)
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  acc.7,00168$
00338$:
;	vprintf.c 525
;	genUminus
	clr	c
	clr	a
	subb	a,_value
	mov	r3,a
	clr	a
	subb	a,(_value + 1)
	mov	r4,a
	clr	a
	subb	a,(_value + 2)
	mov	r6,a
	clr	a
	subb	a,(_value + 3)
	mov	r7,a
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r3
	mov	(_value + 1),r4
	mov	(_value + 2),r6
	mov	(_value + 3),r7
; Peephole 132   changed ljmp to sjmp
	sjmp 00171$
00168$:
;	vprintf.c 527
;	genAssign
	clr	_vsprintf_signed_argument_1_1
00171$:
;	vprintf.c 531
;	genAssign
	setb	_lsd
;	vprintf.c 534
;	genAssign
	mov	r3,#0x00
00175$:
;	vprintf.c 535
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0004),#0x00
;	vprintf.c 536
;	genCall
	push	ar2
	push	ar3
	push	ar5
	lcall	_calculate_digit
	pop	ar5
	pop	ar3
	pop	ar2
;	vprintf.c 550
;	genInline
	  jb _lsd,1$
	  pop b ; b = <lsd>
	  mov a,_value+4 ; a = <msd>
	  swap a
	  orl b,a ; b = <msd><lsd>
	  push b
	  sjmp 2$
1$:
	  mov a,_value+4 ; a = <lsd>
	  push acc
2$:
;	vprintf.c 552
;	genPlus
;	genPlusIncr
	inc	r3
;	vprintf.c 553
;	genCpl
; Peephole 167   removed redundant bit moves (c not set to _lsd)
	cpl  _lsd 
;	vprintf.c 554
;	genAssign
;	genCmpEq
	mov	a,_value
; Peephole 162   removed sjmp by inverse jump logic
	jz   00340$
00339$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00340$:
;	genAssign
;	genCmpEq
	mov	a,0x0001 + _value
; Peephole 162   removed sjmp by inverse jump logic
	jz   00342$
00341$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00342$:
;	vprintf.c 555
;	genAssign
;	genCmpEq
	mov	a,0x0002 + _value
; Peephole 162   removed sjmp by inverse jump logic
	jz   00344$
00343$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00344$:
;	genAssign
;	genCmpEq
	mov	a,0x0003 + _value
	jnz	00345$
	mov	a,#0x01
	sjmp	00346$
00345$:
	clr	a
00346$:
	mov	r4,a
;	genAssign
	mov	ar2,r3
;	genIfx
	mov	a,r4
;	genIfxJump
; Peephole 110   removed ljmp by inverse jump logic
	jz  00175$
00347$:
;	vprintf.c 557
;	genCmpEq
; Peephole 132   changed ljmp to sjmp
; Peephole 199   optimized misc jump sequence
	cjne r5,#0x00,00179$
;00348$:
; Peephole 200   removed redundant sjmp
00349$:
;	vprintf.c 562
;	genAssign
	mov	r5,#0x01
00179$:
;	vprintf.c 566
;	genIfx
;	genIfxJump
; Peephole 112   removed ljmp by inverse jump logic
	jb   _vsprintf_zero_padding_1_1,00184$
00350$:
;	vprintf.c 568
;	genPlus
;	genPlusIncr
	mov	a,#0x01
	add	a,r2
	mov	r3,a
;	genAssign
	mov	ar4,r5
00180$:
;	genCmpGt
;	genCmp
	clr	c
	mov	a,r3
	subb	a,r4
	clr	a
	rlc	a
	mov	r3,a
;	genAssign
	mov	ar5,r4
;	genIfx
	mov	a,r3
;	genIfxJump
; Peephole 110   removed ljmp by inverse jump logic
	jz  00184$
00351$:
;	vprintf.c 570
;	genCall
	mov	dpl,#0x20
	push	ar2
	push	ar4
	push	ar5
	lcall	_output_char
	pop	ar5
	pop	ar4
	pop	ar2
;	vprintf.c 571
;	genMinus
;	genMinusDec
	dec	r4
; Peephole 132   changed ljmp to sjmp
	sjmp 00180$
00184$:
;	vprintf.c 575
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_signed_argument_1_1,00193$
00352$:
;	vprintf.c 577
;	genCall
	mov	dpl,#0x2D
	push	ar2
	push	ar5
	lcall	_output_char
	pop	ar5
	pop	ar2
;	vprintf.c 579
;	genMinus
;	genMinusDec
	dec	r5
; Peephole 132   changed ljmp to sjmp
	sjmp 00283$
00193$:
;	vprintf.c 581
;	genCmpEq
	cjne	r2,#0x00,00353$
; Peephole 132   changed ljmp to sjmp
	sjmp 00283$
00353$:
;	vprintf.c 584
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_prefix_sign_1_1,00188$
00354$:
;	vprintf.c 586
;	genCall
	mov	dpl,#0x2B
	push	ar2
	push	ar5
	lcall	_output_char
	pop	ar5
	pop	ar2
;	vprintf.c 588
;	genMinus
;	genMinusDec
	dec	r5
; Peephole 132   changed ljmp to sjmp
	sjmp 00283$
00188$:
;	vprintf.c 590
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_prefix_space_1_1,00283$
00355$:
;	vprintf.c 592
;	genCall
	mov	dpl,#0x20
	push	ar2
	push	ar5
	lcall	_output_char
	pop	ar5
	pop	ar2
;	vprintf.c 594
;	genMinus
;	genMinusDec
	dec	r5
;	vprintf.c 599
00283$:
;	genAssign
	mov	ar3,r5
00195$:
;	genAssign
	mov	ar4,r3
;	genMinus
;	genMinusDec
	dec	r3
;	genCmpGt
;	genCmp
	clr	c
	mov	a,r2
	subb	a,r4
;	genIfxJump
; Peephole 108   removed ljmp by inverse jump logic
	jnc  00285$
00356$:
;	vprintf.c 601
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_zero_padding_1_1,00219$
00357$:
;	genAssign
	mov	r4,#0x30
; Peephole 132   changed ljmp to sjmp
	sjmp 00220$
00219$:
;	genAssign
	mov	r4,#0x20
00220$:
;	genCall
	mov	dpl,r4
	push	ar2
	push	ar3
	lcall	_output_char
	pop	ar3
	pop	ar2
;	vprintf.c 605
; Peephole 132   changed ljmp to sjmp
	sjmp 00195$
00285$:
;	genAssign
00198$:
;	genAssign
	mov	ar3,r2
;	genMinus
;	genMinusDec
	dec	r2
;	genIfx
	mov	a,r3
;	genIfxJump
	jnz	00358$
	ljmp	00209$
00358$:
;	vprintf.c 607
;	genCpl
; Peephole 167   removed redundant bit moves (c not set to _lsd)
	cpl  _lsd 
;	vprintf.c 622
;	genInline
	  jb _lsd,3$
	  pop acc ; a = <msd><lsd>
	  nop ; to disable the "optimizer"
	  push acc
	  swap a
	  anl a,#0x0F ; a = <msd>
	  sjmp 4$
3$:
	  pop acc
	  anl a,#0x0F ; a = <lsd>
4$:
	  mov _value+4,a
;	vprintf.c 624
;	genPointerGet
;	genNearPointerGet
;	genDataPointerGet
	mov	dpl,(_value + 0x0004)
;	genCall
	push	ar2
	lcall	_output_digit
	pop	ar2
; Peephole 132   changed ljmp to sjmp
	sjmp 00198$
00207$:
;	vprintf.c 631
;	genCall
	mov	dpl,_vsprintf_c_1_1
	lcall	_output_char
	ljmp	00209$
00211$:
;	vprintf.c 637
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _output_to_string,00213$
00359$:
;	vprintf.c 638
;	genCall
	mov	dpl,#0x00
	lcall	_output_char
;	vprintf.c 639
;	genMinus
;	genMinusDec
	mov	a,_charsOutputted
	add	a,#0xff
	mov	dpl,a
	mov	a,(_charsOutputted + 1)
	addc	a,#0xff
	mov	dph,a
;	genRet
; Peephole 132   changed ljmp to sjmp
	sjmp 00215$
00213$:
;	vprintf.c 641
;	genRet
	mov	dpl,_charsOutputted
	mov	dph,(_charsOutputted + 1)
00215$:
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'vprintf'
;------------------------------------------------------------
;ap                        Allocated to in memory with name '_vprintf_PARM_2'
;format                    Allocated to registers 
;	vprintf.c 647
;	-----------------------------------------
;	 function vprintf
;	-----------------------------------------
_vprintf:
;	vprintf.c 649
;	genReceive
	mov	_vsprintf_PARM_2,dpl
	mov	(_vsprintf_PARM_2 + 1),dph
	mov	(_vsprintf_PARM_2 + 2),b
;	genAssign
	mov	_vsprintf_PARM_3,_vprintf_PARM_2
;	genCall
; Peephole 181   used 16 bit load of dptr
	mov  dptr,#0x0000
	mov	b,#0x00
	lcall	_vsprintf
;	genRet
00101$:
	ret
	.area CSEG    (CODE)
_memory_id:
	.ascii "IXCP-"
	.db 0x00
__str_0:
	.ascii "<NO FLOAT>"
	.db 0x00
	.area	XINIT   (CODE)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?