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

📄 vprintf.asm

📁 sdcc的win版本.是small device c compiler的意思.支持8051和z80.是一个遵循GPL的软件,不过他的库函数是LGPL的,允许商业联结,可以用在自己的软件里
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	clr  a
	addc	a,r3
	mov	r7,a
	mov	ar0,r4
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r6
	mov	(_value + 1),r7
	mov	(_value + 2),r0
;	genPointerGet
;	genGenPointerGet
	mov	dpl,r2
	mov	dph,r3
	mov	b,r4
	lcall	__gptrget
;	genIfx
; Peephole 105   removed redundant mov
	mov  r2,a
;	genIfxJump
	jnz	00332$
	ljmp	00209$
00332$:
;	vprintf.c 481
;	genCall
	mov	dpl,r2
	push	ar5
	lcall	_output_char
	pop	ar5
; Peephole 132   changed ljmp to sjmp
	sjmp 00154$
00204$:
;	vprintf.c 492
;	genAssign
	mov	dptr,#_radix
	movx	a,@dptr
	mov	r2,a
;	genCmpEq
	cjne	r2,#0x00,00333$
	ljmp	00209$
00333$:
;	vprintf.c 498
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_char_argument_1_1,00165$
00334$:
;	vprintf.c 500
;	genAssign
	mov	dptr,#_vsprintf_PARM_3
	movx	a,@dptr
;	genMinus
;	genMinusDec
; Peephole 105   removed redundant mov
	mov  r2,a
	dec	a
;	genAssign
; Peephole 100   removed redundant mov
	mov  r0,a
	mov  dptr,#_vsprintf_PARM_3
	movx @dptr,a
;	genPointerGet
;	genNearPointerGet
	mov	ar2,@r0
;	genCast
	mov	a,r2
	rlc	a
	subb	a,acc
	mov	r3,a
	mov	r4,a
	mov	r6,a
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r2
	mov	(_value + 1),r3
	mov	(_value + 2),r4
	mov	(_value + 3),r6
;	vprintf.c 501
;	genIfx
;	genIfxJump
	jnb	_vsprintf_signed_argument_1_1,00335$
	ljmp	00166$
00335$:
;	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
	ljmp	00166$
00165$:
;	vprintf.c 508
;	genIfx
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  _vsprintf_long_argument_1_1,00162$
00336$:
;	vprintf.c 510
;	genAssign
	mov	dptr,#_vsprintf_PARM_3
	movx	a,@dptr
;	genMinus
;	genMinusDec
; Peephole 105   removed redundant mov
	mov  r2,a
	add	a,#0xfc
;	genAssign
; Peephole 100   removed redundant mov
	mov  r0,a
	mov  dptr,#_vsprintf_PARM_3
	movx @dptr,a
;	genPointerGet
;	genNearPointerGet
	mov	ar2,@r0
	inc	r0
	mov	ar3,@r0
	inc	r0
	mov	ar4,@r0
	inc	r0
	mov	ar6,@r0
	dec	r0
	dec	r0
	dec	r0
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r2
	mov	(_value + 1),r3
	mov	(_value + 2),r4
	mov	(_value + 3),r6
; Peephole 132   changed ljmp to sjmp
	sjmp 00166$
00162$:
;	vprintf.c 514
;	genAssign
	mov	dptr,#_vsprintf_PARM_3
	movx	a,@dptr
;	genMinus
;	genMinusDec
; Peephole 105   removed redundant mov
	mov  r2,a
	add	a,#0xfe
;	genAssign
; Peephole 100   removed redundant mov
	mov  r0,a
	mov  dptr,#_vsprintf_PARM_3
	movx @dptr,a
;	genPointerGet
;	genNearPointerGet
	mov	ar2,@r0
	inc	r0
	mov	ar3,@r0
	dec	r0
;	genCast
	mov	a,r3
	rlc	a
	subb	a,acc
	mov	r4,a
	mov	r6,a
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r2
	mov	(_value + 1),r3
	mov	(_value + 2),r4
	mov	(_value + 3),r6
;	vprintf.c 515
;	genIfx
;	genIfxJump
; Peephole 112   removed ljmp by inverse jump logic
	jb   _vsprintf_signed_argument_1_1,00166$
00337$:
;	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$
00338$:
;	vprintf.c 524
;	genAssign
;	genCmpLt
;	genCmp
	mov	a,(_value + 3)
;	genIfxJump
; Peephole 111   removed ljmp by inverse jump logic
	jnb  acc.7,00168$
00339$:
;	vprintf.c 525
;	genUminus
	clr	c
	clr	a
	subb	a,_value
	mov	r2,a
	clr	a
	subb	a,(_value + 1)
	mov	r3,a
	clr	a
	subb	a,(_value + 2)
	mov	r4,a
	clr	a
	subb	a,(_value + 3)
	mov	r6,a
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	_value,r2
	mov	(_value + 1),r3
	mov	(_value + 2),r4
	mov	(_value + 3),r6
; Peephole 132   changed ljmp to sjmp
	sjmp 00171$
00168$:
;	vprintf.c 527
;	genAssign
	clr	_vsprintf_signed_argument_1_1
00171$:
;	vprintf.c 530
;	genAssign
	mov	dptr,#_vsprintf_length_1_1
; Peephole 180   changed mov to clr
	clr  a
	movx	@dptr,a
;	vprintf.c 531
;	genAssign
	setb	_lsd
;	vprintf.c 534
00175$:
;	vprintf.c 535
;	genPointerSet
;	genNearPointerSet
;	genDataPointerSet
	mov	(_value + 0x0004),#0x00
;	vprintf.c 536
;	genCall
	push	ar5
	lcall	_calculate_digit
	pop	ar5
;	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
;	genAssign
	mov	dptr,#_vsprintf_length_1_1
	movx	a,@dptr
;	genPlus
;	genPlusIncr
; Peephole 185   changed order of increment (acc incremented also!)
	inc  a
	mov  r2,a
;	genAssign
	mov	dptr,#_vsprintf_length_1_1
	mov	a,r2
	movx	@dptr,a
;	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   00341$
00340$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00341$:
;	genAssign
;	genCmpEq
	mov	a,0x0001 + _value
; Peephole 162   removed sjmp by inverse jump logic
	jz   00343$
00342$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00343$:
;	vprintf.c 555
;	genAssign
;	genCmpEq
	mov	a,0x0002 + _value
; Peephole 162   removed sjmp by inverse jump logic
	jz   00345$
00344$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00345$:
;	genAssign
;	genCmpEq
	mov	a,0x0003 + _value
; Peephole 162   removed sjmp by inverse jump logic
	jz   00347$
00346$:
; Peephole 132   changed ljmp to sjmp
	sjmp 00175$
00347$:
;	vprintf.c 557
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	a,@dptr
	mov	r3,a
;	genCmpEq
; Peephole 132   changed ljmp to sjmp
; Peephole 199   optimized misc jump sequence
	cjne r3,#0x00,00179$
;00348$:
; Peephole 200   removed redundant sjmp
00349$:
;	vprintf.c 562
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	mov	a,#0x01
	movx	@dptr,a
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	dptr,#_vsprintf_width_1_1
	movx	a,@dptr
	mov	r4,a
00180$:
;	genCmpGt
;	genCmp
	clr	c
	mov	a,r3
	subb	a,r4
	clr	a
	rlc	a
	mov	r3,a
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	mov	a,r4
	movx	@dptr,a
;	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
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	a,@dptr
;	genMinus
;	genMinusDec
; Peephole 105   removed redundant mov
	mov  r3,a
	dec	a
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	@dptr,a
; 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	ar5
	lcall	_output_char
	pop	ar5
;	vprintf.c 588
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	a,@dptr
;	genMinus
;	genMinusDec
; Peephole 105   removed redundant mov
	mov  r2,a
	dec	a
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	@dptr,a
; 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	ar5
	lcall	_output_char
	pop	ar5
;	vprintf.c 594
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	a,@dptr
;	genMinus
;	genMinusDec
; Peephole 105   removed redundant mov
	mov  r2,a
	dec	a
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	@dptr,a
;	vprintf.c 599
00283$:
;	genAssign
	mov	dptr,#_vsprintf_length_1_1
	movx	a,@dptr
	mov	r2,a
;	genAssign
	mov	dptr,#_vsprintf_width_1_1
	movx	a,@dptr
	mov	r3,a
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
	push	ar5
	lcall	_output_char
	pop	ar5
	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
;	genAssign
;	genCall
	mov	dpl,0x0004 + _value
	push	ar2
	push	ar5
	lcall	_output_digit
	pop	ar5
	pop	ar2
; Peephole 132   changed ljmp to sjmp
	sjmp 00198$
00207$:
;	vprintf.c 631
;	genCall
	mov	dpl,r5
	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
;	genAssign
	mov	dptr,#_charsOutputted
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
;	genMinus
;	genMinusDec
	dec	r2
	cjne	r2,#0xff,00360$
	dec	r3
00360$:
;	genRet
	mov	dpl,r2
	mov	dph,r3
; Peephole 132   changed ljmp to sjmp
	sjmp 00215$
00213$:
;	vprintf.c 641
;	genAssign
	mov	dptr,#_charsOutputted
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
;	genRet
	mov	dpl,r2
	mov	dph,r3
00215$:
	ret
;------------------------------------------------------------
;Allocation info for local variables in function 'vprintf'
;------------------------------------------------------------
;ap                        Allocated to in memory with name '_vprintf_PARM_2'
;format                    Allocated to in memory with name '_vprintf_format_1_1'
;	vprintf.c 647
;	-----------------------------------------
;	 function vprintf
;	-----------------------------------------
_vprintf:
;	vprintf.c 649
;	genReceive
	push	b
	push	dph
	push	dpl
	mov	dptr,#_vprintf_format_1_1
	pop	acc
	movx	@dptr,a
	pop	acc
	inc	dptr
	movx	@dptr,a
	pop	acc
	inc	dptr
	movx	@dptr,a
;	genAssign
	mov	dptr,#_vprintf_format_1_1
	movx	a,@dptr
	mov	r2,a
	inc	dptr
	movx	a,@dptr
	mov	r3,a
	inc	dptr
	movx	a,@dptr
	mov	r4,a
;	genAssign
	mov	dptr,#_vprintf_PARM_2
	movx	a,@dptr
	mov	r5,a
;	genAssign
	mov	dptr,#_vsprintf_PARM_2
	mov	a,r2
	movx	@dptr,a
	inc	dptr
	mov	a,r3
	movx	@dptr,a
	inc	dptr
	mov	a,r4
	movx	@dptr,a
;	genAssign
	mov	dptr,#_vsprintf_PARM_3
	mov	a,r5
	movx	@dptr,a
;	genCall
; Peephole 181   used 16 bit load of dptr
	mov  dptr,#0x0000
	mov	b,#0x00
	lcall	_vsprintf
;	genRet
; Peephole 151   removed misc moves via dph, dpl before return
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -