📄 vprintf.asm
字号:
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 + -